Установка контента TinyMCE 5 при инициализации

Недавно для одного из проектов на Laravel пришлось прикрутить, казалось бы, стандартный функционал редактора страниц. Для удобства к форме создания/редактирования контента был прикручен свежий WYSIWYG редактор TinyMCE 5. Однако, при рендере страницы редактирования записи, где уже есть какой-то текст, возникла проблема. TinyMCE прикручивался к textarea следующим образом: Но какой бы текст не выводился в textarea, …

Continue reading ‘Установка контента TinyMCE 5 при инициализации’ »

Управление nohup процессом

Некоторое время назад во время активной разработки проекта на Laravel понадобилось часто перезапускать вебсокет-сервер (изменили код, запушили — перезапустили, проверили. Снова кое-что подправили в коде, снова запушили, снова перезапустили и т.д). На боевом сервере для этого правильнее было бы использовать что-то вроде supervisor, но как-то у меня с ним не заладилось на деве 🙂 Накидал …

Continue reading ‘Управление nohup процессом’ »

Управление скоростью воспроизведения HTML5 тегов

В процессе разработки софта для колл-центра потребовалось сделать веб-интерфейс для прослушивания записанных ранее звонков. Как показала практика, часто нужно слушать не весь разговор, а отдельные моменты. Для этого было принято решение воспроизводить запись в ускоренном темпе с возможностью его замедления в нужных местах. Оказалось, что <audio> все это умеет делать «из коробки» путем установки нужного …

Continue reading ‘Управление скоростью воспроизведения HTML5 тегов

Автоматически получить фотографии пользователя Instagram без Access Token

Одному из клиентов не понравился внешний вид стандартных виджетов социальных сетей, так что пришлось пилить собственную их реализацию. С vk.com и facebook.com проблем не возникло — у них есть API, который возвращает все, что нужно в удобном JSON, нужно лишь единожды зарегистрировать свое приложение и дать ему доступ. А вот с instagram дела обстояли несколько …

Continue reading ‘Автоматически получить фотографии пользователя Instagram без Access Token’ »

Drupal 8: делаем поле «Анонс» для body обязательным и ограничиваем его по количеству символов

На одном из сайтов на Drupal 8 возникла задача сделать обязательным ручной ввод анонса для поля Body и дать ему ограничение в 150 символов. Немного погуглив, я не нашел готового модуля для управления этим полем, так что было принято решение пилить свой. После нескольких попыток подойти к задаче с разных сторон я остановился на реализации …

Continue reading ‘Drupal 8: делаем поле «Анонс» для body обязательным и ограничиваем его по количеству символов’ »

Drupal 8 Views: убрать некоторые значения из раскрытого фильтра

Недавно на понадобилось сделать фильтр записей по полю типа «список», у которого может быть очень много возможных значений (список значений и сами записи импортируются из внешней системы). Если делать обычный Exposed Filter, то появляются два неудобства: Из-за большого количества возможных значений фильтр не очень красиво выглядит на экране и пользователю сложно искать нужное значение Если …

Continue reading ‘Drupal 8 Views: убрать некоторые значения из раскрытого фильтра’ »

Раскрытый фильтр по дате в Drupal 8: прошедшие/текущие/будущие события

Небольшой пример того, как я сделал раскрытый фильтр на Drupal 8 Views по полям «Начало мероприятия» и «Конец мероприятия» типа «Дата» для вывода прошедших, текущих и предстоящих мероприятий, используя hook_views_query_alter() для модификации запроса на выборку. Читать тут.

Программное изменение поля типа «Список» с множественным значением в Drupal 8

Если задать значение обычного поля в Drupal 8 можно с помощью метода setValue() ($node->field_name->setValue(«Some value»);), то для выбора значений из списка нужно воспользоваться методом appendItem(). Вот как я сделал это при создании ноды из стороннего XML: foreach($plan->Exams->Exam as $exam) { $node->field_exams->appendItem($exam->ExamName); }foreach($plan->Exams->Exam as $exam) { $node->field_exams->appendItem($exam->ExamName); }

Drupal 8 Views — выводить пустую страницу, если не заполнены раскрытые фильтры

Недавно столкнулся со странным поведением Views в Drupal 8 (а как показал гугл — и в ранних версиях): на сайте есть лента новостей с категориями, выведенная через Views. Пользователь может отметить чекбоксами (с помощью Detter Exposed Filter) интересующие его категории. Так вот, если он отмечает категорию, в которой новостей нет, то в результате получает пустую …

Continue reading ‘Drupal 8 Views — выводить пустую страницу, если не заполнены раскрытые фильтры’ »

Интеграция пользователей Drupal 8 со сторонней системой

На данный момент я занимаюсь разработкой нескольких сайтов на Drupal 8 для одной крупной организации, у которой уже есть свои внутренние ресурсы. Одним из таких ресурсов является что-то вроде  электронной системы учета сотрудников, разработанная силами своих программистов. Соответственно, одной из задач было дать возможность пользователям логинится на сайтах, используя учетные данные этой системы, чтобы не …

Continue reading ‘Интеграция пользователей Drupal 8 со сторонней системой’ »