Управление скоростью воспроизведения 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 со сторонней системой’ »

Получение нод определенного типа в Drupal 8

На днях понадобилось написать модуль, который бы обрабатывал определенные типы нод согласно введенным данным. Отсюда возникла задача: изначально неведомо, какие у этих нод nid, и сразу использовать Node::load($nid) не получится. На Drupal 7 я бы просто обратился к БД, используя db_query(). Но на Drupal 8 все можно сделать гораздо удобнее благодаря Entity Query, а именно: …

Continue reading ‘Получение нод определенного типа в Drupal 8’ »

Drupal 8 загрузка ноды по AJAX

Предлагаю «каркас» модуля для Drupal 8, который позволит вам получать ноды по их ID через AJAX. В приведенном ниже коде реализовано получение ноды с помощью метода Node::load, который пришел на замену функции node_load() и вывод заголовка и содержания ноды в виде JSON-объекта. Аналогично можно добавлять и другие поля ноды. Собственно, код модуля: < ?php namespace …

Continue reading ‘Drupal 8 загрузка ноды по AJAX’ »