• Как посмотреть письмо перед отправкой в Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    boris tyrepharm, к сожалению вы не можете посмотреть "будущие" письма, так как такая генерация очень сложна.
    Но вы можете посмотреть существующее письмо в новом дизайне. К тому же - вы можете увидеть только как будет выглядеть ваше письмо, если его вывести в браузере, но это не одно и то же, как если оно пройдет через MTA и будет отображаться в Outlook/Thundebird/OWA и т.п.

    Например я хочу посмотреть как приблизительно(*) будет выглядеть сообщение с ID 336020 (в таблице b_event), после изменения дизайна в существующем шаблоне.
    use Bitrix\Main\Mail;
    
    /**
     * Get from b_event table
     * @var integer Existed event id
     */
    $displayedEventId = 336020;
    
    /**
     * List of site ids, for event theme generation
     * must be replaced by current site id in public
     * @var array
     */
    $arSites = [
    	's1'
    ];
    
    try
    {
    	/**
    	 * First, try to find event
    	 */
    	$arEvent = Mail\Internal\EventTable::getRow([
    		'filter' => [
    			'=ID' => $displayedEventId,
    		]
    	]);
    
    	if ( !$arEvent )
    	{
    		throw new \Exception('Event not found');
    	}
    
    	$arEvent['FIELDS'] = $arEvent['C_FIELDS'];
    
    	/**
    	 * Try to find all message templates for 
    	 * sites. In event handler we send for one letter
    	 * per site.
    	 */
    	$arEventMessageFilter = [
    		'=ACTIVE' => 'Y',
    		'=EVENT_NAME' => $arEvent["EVENT_NAME"],
    		'=EVENT_MESSAGE_SITE.SITE_ID' => $arSites,
    	];
    
    	$messageDb = Mail\Internal\EventMessageTable::getList([
    		'select' => ['ID'],
    		'filter' => $arEventMessageFilter,
    		'group' => ['ID']
    	]);
    
    	foreach ($messageDb as $arMessage)
    	{
    		$eventMessage = Mail\Internal\EventMessageTable::getRowById($arMessage['ID']);
    
    		$eventMessage['FILES'] = array();
    		$attachmentDb = Mail\Internal\EventMessageAttachmentTable::getList(array(
    			'select' => array('FILE_ID'),
    			'filter' => array('=EVENT_MESSAGE_ID' => $arMessage['ID']),
    		));
    		while($arAttachmentDb = $attachmentDb->fetch())
    		{
    			$eventMessage['FILE'][] = $arAttachmentDb['FILE_ID'];
    		}
    
    		$arFields = $arEvent['FIELDS'];
    
    		// get message object for send mail
    		$arMessageParams = array(
    			'EVENT' => $arEvent,
    			'FIELDS' => $arFields,
    			'MESSAGE' => $eventMessage,
    			'SITE' => $arSites,
    			'CHARSET' => $charset,
    		);
    		$message = Mail\EventMessageCompiler::createInstance($arMessageParams);
    		$message->compile();
    		echo $message->getMailBody();
    	}
    }
    catch( \Exception $e )
    {
    	var_dump($e);
    }
    Ответ написан
    Комментировать
  • Bitrix ORM: как получить поле связанной таблицы (fetchObject())?

    ragnar_ok
    @ragnar_ok Автор вопроса
    Магические методы работают только для описанных в сущности полей. Нужно использовать

    $tel = $entityObj->get('FIELD_ENUM').

    Ответили на вопрос:
    @gasparonik
    @protopgamer
    Ответ написан
    Комментировать
  • Как заполнить такой массив в цикле?

    Не используйте такие ключи. Приведите массив к виду
    $data = [
        [
            'name' => 'Москва и Московская обл.',
            'items' => ['Москва', 'Абрамцево']
        ],
        [
            'name' => 'Санкт-Петербург',
            'items' => ['Санкт-Петербург', 'Александровская']
        ]
    ];


    Не претендую на гугу php, но вот:
    spoiler
    class Location
    {
        private $data;
    
        /**
         * Location constructor.
         *
         * @param array $data
         */
        function __construct($data = [])
        {
            $this->data = $data;
        }
    
        /**
         * Get cities by region
         *
         * @param string $region
         *
         * @return array
         */
        public function getCitiesByRegion($region)
        {
            $key = array_search($region, array_column($this->data, 'region'));
    
            if ( $key === false ) return false;
    
            return $this->data[$key]['items'];
        }
    }
    
    $data = [
        [
            'region' => 'Москва и Московская обл.',
            'items' => ['Москва', 'Абрамцево']
        ],
        [
            'region' => 'Санкт-Петербург',
            'items' => ['Санкт-Петербург', 'Александровская']
        ]
    ];
    
    $location = new Location($data);
    
    print_r($location->getCitiesByRegion('Санкт-Петербург'));

    Ответ написан
    Комментировать
  • Универсальный алгоритм заработка с рекламы на сайтах, правильно ли я рассуждаю?

    @kuftachev
    Я редко употребляю слово WordPress без слово "говно", но это тот редкий случай. По факту, в этой теме Вы перекрываете собой долларов 100-200, так как WordPress - это все со нужно в данном варианте.
    Вы при этом собираетесь платить за сео, но забываете о стоимости контента, а в данном случае - это в разы больше, чем сео...
    Так могут делать или сеошники, или копирайтеры, закрывая часть трат собой.
    В общем, я думаю, если Вы хорошо посчитаете, то сильно передумаете.
    Ответ написан
    4 комментария
  • Правильный ли план по изучению Битрикс?

    @kirill-93
    Не учите битрикс, не губите себя! Тем более, что это судя по всему первое, что вы учите. Вам будет очень тяжело перейти с него на что-нибудь нормальное.
    Битрикс - один сплошной старый неподдерживаемый говнокод. Вы не сможете получить какие-то определенные знания, чтоб начать в нем разбираться, потому что в нем нет ни единого подхода, ни каких-то правил/принципов, которых придерживаются его разработчики. Вам всегда нужна будет помощь людей, если потребуется выйти за рамки самых стандартных задач.
    Если вы хотите стать хорошим разработчиком, начинайте с голого php и фреймворков, если хотите писать говнокод среднего уровня (уровня сайтов визиток или шаблонных интернет магазинов), учите вордпресс/оперкарт/магенто. Там тоже говнокод, но он простой и понятный, он логичный.
    Битрикс не имеет никакого отношения к программированию, учить его - это как учить интерфейс какой-то программы, очень плохой программы.
    Ответ написан
    5 комментариев
  • Как правильно реализовать локализацию БД в laravel?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    На мой взгляд использование пакетов для этой цели нецелесообразно.
    Обычная полиморфическая связь подойдет.

    И так, давайте представим что основной контент статьи на русском языке.
    Во первых, создадим модель нашей локализации:
    php artisan make:model Localization

    Укажем что это полиморфическая связь:
    protected $table = 'localization';
    
    public function lozalizable()
      {
          return $this->morphTo();
      }


    В нашей модели статей привяжем свежесозданную модель в качестве связи:
    public function lozalization(){
    	    return $this->morphOne('App\Localization', 'lozalizable');
    	}


    И создадим миграцию для модели Lozalizable:
    Schema::create('localization', function (Blueprint $table) {
            $table->increments('id');
            $table->string('field');
            $table->string('language');
            $table->string('value');
            $table->string('lozalizable_type');
            $table->integer('lozalizable_id');
            $table->timestamps();
          });


    Теперь, для создания локализации статьи с языком en выполним следующий код:
    $article = Article::create($Atricle);
    
    $localization = new Localization;
    $localization->language = 'en';
    $localization->field = 'content';
    $localization->value = 'Znachenye na english yazike';
    $article->localization()->save($localization); //привязываем к свежесозданному объекту Article новую локализацию


    С помощью scope функций в модели можно без особых проблем реализовать более удобное выдергивание нужного значения и языка:
    public function scopeGetLocalize($language, $field){
         return $this->localization()->where(['language' => $language, 'field' => $field])-> firstOrFail()->value;
    }


    В таком случае, скажем, поле title для локализации en можно выдергивать так:
    $article->getLocalize('en', 'title')
    Ответ написан
    19 комментариев
  • Зачем дизайнер рисует сайт, если верстальщик всеравно описывает его на HTML?

    nalomenko
    @nalomenko
    Руководитель отдела разработок в студии «Lava»
    Зачем архитектор чертит чертёж дома, если строитель всё равно его потом строит?
    Ответ написан
    1 комментарий
  • Какую платформу выбрать для организации чата для сообщества?

    tlito
    @tlito
    drupal, c++, seo
    nodejs славится простотой таких решений habrahabr.ru/post/200866
    tlito.ru/node/98
    Ответ написан
    Комментировать
  • Где искать мотивацию для изучения чего либо нового или написания кода?

    maxsof
    @maxsof
    Фронтенд-разработчик
    Есть такая же проблема. Иногда лень открывать редактор, чтобы что-то делать. Но замечаю за собой, что когда открываю, то сложно остановиться.

    Вывел для себя несколько решений:
    — открывать принудительно редактор и просто начать что-то делать, не думая насколько мне лень;
    — вести свой проект или блог которые хочешь-не хочешь, но надо как-то развивать;
    — отдыхать и расслабляться, т.е., например, выходные полностью ни делать ничего связанного с кодом и работой — тупо гулять и тусоваться в свое удовольствие, а хотение кодить накроет на третий день :-)
    Ответ написан
    Комментировать
  • Как аннулировать авторизацию приложения (access_token) OAuth вконтакте?

    YardalGedal
    @YardalGedal
    yeah boy
    https://vk.com/apps?act=settings -- удалять отсюда. Либо завершить все сеансы. Либо сменить пароль.
    Ответ написан
    2 комментария
  • VMware: ubuntu+веб сервер (под windows) — как пробросить общую папку вебсайта для работы с файлами?

    Hatifnatt
    @Hatifnatt
    Поставить SSH сервер - help.ubuntu.ru/wiki/ssh и потихоньку тренироваться работе в консоли используя PuTTY
    Использовать WinSCP для доступа к файлам. Можно настроить FTP как написано выше, но имхо FTP настроить чуточку сложнее.
    Ответ написан
    2 комментария
  • Запуск Laravel - Error in exception handler?

    @vadimstroganov Автор вопроса
    Решил проблему!

    php artisan cache:clear 
    
    chmod -R 777 app/storage 
    
    php artisan dump-autoload
    Ответ написан
    2 комментария
  • Как сделать админку в laravel?

    Комментировать
  • Laravel 4. Имеются ли пошаговые уроки/ видеоуроки по изучению Laravel 4?

    zvermafia
    @zvermafia
    WebDev
    Видеоуроки на русском:
    Видеокурс Laravel: создание ToDo List
    Видеокурс Laravel: создание блога
    Поэтапная разработка сайта на Laravel 4

    Книги на английском:
    • Laravel Application Development Blueprints
    • Dayle Rees Laravel Code Bright (2013)
    • Fidao C. - Implementing Laravel - 2013
    • Leanpub.Laravel.4.Cookbook.May.2014
    • PP.Learning.Laravel.4.Application.Development.Dec.2013
    Ответ написан
    Комментировать
  • Как установить laravel на пк без интрента?

    Вот, воспользуйся этим https://composer.borreli.com/ . Надеюсь поможет.
    Ответ написан
    Комментировать
  • Какой плагин админки для Laravel выбрать?

    @Insayt
    Писать свою - вполне, как вы выразились "Laravel way")
    Ответ написан
    5 комментариев
  • Чем заслужил свою популярность Laravel?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Тем, что там можно писать мало там, где мы привыкли писать много. Подобный "конвеншн овер конфигурейшн" - он помимо прочего оставляет ощущение, что автор пишет не сферическую вещь в вакууме, которая якобы должна подойти всем, а для нас, для простых рабочих пацанов с окраин, со своими вполне конкретными юзкейсами. Т.е. он 1. человек умный и 2. знает жизнь. Это подкупает.

    Например, в output идет то, что возвращено из контроллера, а если возвратить ORM-объект или массив (точнее коллекцию) ORM-объектов, то будет отдан json, причем со всеми связанными объектами. Масса нужных в хозяйстве вещей, которые идут из коробки (миграции, редис, кэш с множеством провайдеров, работа с очередями, консольная тулза artisan для разнообразных обслуживающих вещей). Изкоробочная работающая сборка вьюх в лейаут, минимум возни с авторизацией. Скоупы в ORM. Кусочки конфигов в файлах, которые удобно ставить в .gitignore. В общем, масса такого вот, мелкого, но очень удобного.

    На Laravel ОДНОВРЕМЕННО можно уйти в глубины аццкого хадкора по Фаулеру, с тестированием всего и вся, с интерфейсами, депенденси инжекшнами, репозиториями, обсерверами, ентитями, гексагональными сценариями итд, итп, _подставить_любимый_паттерн_, И в то же время забить на это всё, сгенерить _ide_helper для подсказок по "фасадам" в IDE и фигачить код со статическими вызовами, как будто весь фреймворк написан на статике, как Кохана. Т.е. и сайт-знакомому-за-вечер и огроменный кровавый энтерпрайз делаются на одном фреймворке - в зависимости от того, насколько глубоко исполнитель хочет погружаться в свой продукт. Подобная гибкость - это, имхо, очень круто.

    И еще - как показала практика фреймворкостроительства, или ты двигаешься вместе с развитием php, либо ты делаешь "более лучшее, удобное и грамотное" решение и тихо загниваешь с своем междусобойчике за пару лет. Laravel двигается максимально близко к php - следование psr, composer-платформа в качестве базы, фрейморк ставится оттуда и пакеты расширения тоже имеют composer-формат. Что говорит о том, что у фреймворка есть все шансы прожить долгую и счастливую жизнь.
    Ответ написан
    Комментировать
  • Какие есть курсы по Ruby on Rails?

    kirillplatonov
    @kirillplatonov
    Ruby on Rails developer
    Я намереваюсь изучить Ruby on Rails ,но толковых видео-курсов в гугле не нашел(Их вообще нет).


    codeschool.com
    railscasts.com

    www.codecademy.com (здесь я знакомился с ruby, но по руби в codeschool лучше материал)

    Русская дока:
    rusrails.ru

    Русские блоги:
    rubydev.ru
    lonelyelk.ru/posts

    Что такое рельсы и зачем нужны:
    seopult.tv/programs/sites/ruby_on_rails_lyzhi_ne_e...

    Относительно среды разработки:
    must have OS X/Linux.
    Если совсем никак, то берите vagrant и ставьте в нем linux (нагуглите).

    В тему книжка:
    www.ozon.ru/context/detail/id/26011201

    P.S. И совет по процессу. Многие пишут на рельсах и не знают о руби. Не делайте так. Начните с руби и переходите к рельсам после этого. Проверено на себе, понимать что это и как устроено нужно.
    Ответ написан
    5 комментариев