Замена функций в Drupal 8

Опубликовано 2016.09.05 в разделе Drupal.

Замена привычного для 6 и 7 версий кода на Drupal 8.
  1. //было
  2. variable_set('key','value')
  3.  
  4. //стало
  5. \Drupal::state()->set('key','value');
  6.  
  7.  
  8. //было
  9. variable_get('key','value')
  10.  
  11. //стало
  12. $val = \Drupal::state()->get('key');
  13.  
  14.  
  15. //было
  16. variable_del('key')
  17.  
  18. //стало
  19. $val = \Drupal::state()->delete('key');
  20.  
  21.  
  22. //и даже так ещё стало
  23. $values = [
  24. 'key' => 'value',
  25. 'key2' => 'value2'
  26. ];
  27. \Drupal::state()->setMultiple($values);
  28.  
  29. $keys = [
  30. 'key',
  31. 'key2'
  32. ];
  33. $pairs = \Drupal::state()->getMultiple($keys);
  34.  
  35. //было
  36. watchdog('type', 'message');
  37.  
  38. //стало

Заметки по Drupal 8

Опубликовано 2016.08.26 в разделе Drupal.

Получить строчку из таблицы config
  1. //например конфиг block.block.bartik_tools
  2.  
  3. //вытянет всё
  4. $conf = \Drupal::config('block.block.bartik_tools')->get();
  5.  
  6. //покажет только элемент 'region'
  7. $conf = \Drupal::config('block.block.bartik_tools')->get('region');
  8.  
  9. //посмотреть
  10. kint($conf);
Программный вывод блока
  1. //id блока. Например system_powered_by_block,shortcuts или search_form_block
  2. $bid = 'system_powered_by_block';
  3. $block_manager = \Drupal::service('plugin.manager.block');
  4. $config = array();

Views добавить group by для одного поля

Опубликовано 2016.01.11 в разделе Drupal.

В админке вьюсов группировка(называется агрегацией) отвратительная. Группирует все поля, а толку ноль. Уникализация выборки тоже не работает. Классическая ситуация. Вывод нескольких материалов(например блог) и одного приаттаченного материала к каждому блогу(через entity reference). И если к блогу привязано например 3 материала - то благодаря join в запросе это блог будет выведен трижды. Чтобы это побороть - нужно поальтерить запрос: /** * Implements hook_query_alter(). */ function mymodule_query_alter(QueryAlterableInterface $query) {

Почему не срабатывает drupal_add_js

Опубликовано 2015.12.03 в разделе Drupal.

Периодически Друпал не подключает js файл, хотя вы корректно его подключили, файл физически существует и у него выставлены правильные права. Гугл вам не скажет почему у вас не работает, а только 10 раз покажет одни и те же способы подключения js к форме, странице или блоку. Приведу простой пример. Допустим модуль best_form подключает js и css файлы к форме редактирования материала, путем альтера формы: function best_form_form_node_form_alter(&$form, &$form_state) { $form['#attached']['css'] = array(drupal_get_path('module', 'best_form') . '/theme/best.css');

Создание новостного блока в Drupal 8

Опубликовано 2015.04.04 в разделе Drupal.

Вначале напишем задачу и будем поэтапно её решать:
  • 1. Необходимо создать на сайте новости.
  • 2. В новости помимо текста должна быть картинка.
  • 3. Комментировать новости запрещено.
  • 4. Новости должны сохраняться в разделах "Политика", "Экономика", "События" и "Разное".
  • 5. Вывести блок из последних 5 новостей. В блоке должна быть маленькая картинка новости, заголовок и дата публикации.
Решение: Вначале нужно создать материал типа "Новости". Я уже объяснял ка создать тип материала, поэтому расскажу вкратце.

Установка модулей в Drupal 8

Опубликовано 2015.04.04 в разделе Drupal.

Ранее я уже вкратце говорил что такое модуль, для чего он нужен и где его следует хранить. Давайте установим свой первый модуль. Пусть это будет модуль Devel https://www.drupal.org/project/devel Качайте zip архив для 8 версии, распаковывайте и сохраняйте в sites/all/modules. Папок all и modules у вас нет-создавайте их. В свежих версиях друпала кидайте модули сразу в папку modules. Выглядеть у вас это должно вот так: установка Drupal 8

Расположение блоков на странице в Drupal 8

Опубликовано 2015.04.04 в разделе Drupal.

Чтобы разместить блоки на сайте-заходит в Структура->Схема блоков Как я уже говорил - в теме определены регионы, в нашем случае это регионы с именами Шапка,Primary menu,Дополнительные ссылки и так далее. Чтобы понять, где эти регионы находятся - жмите на "Demonstrate block regions" установка Drupal 8 В таком предпросмотре вы сразу сориентируетесь в какой регион вам нужно добавить блок, чтобы он попал в правую колонку, в левую или в подвал.

Знакомство с интерфейсом, работа с материалами в Drupal 8.

Опубликовано 2015.04.04 в разделе Drupal.

Я сразу выделил основные функциональные блоки. Разными цветами выделены разные функциональные блоки. красный - блок желтый - представление, он же вьюс или views фиолетовый - меню, обёрнутое в блок зелёный - область сообщений установка Drupal 8 У вас сразу же возникнет вопрос-почему именно эти блоки, почему на этих местах и как их можно изменить?

Установка Drupal 8

Опубликовано 2015.04.04 в разделе Drupal.

Зарождался друпал в далёком 1999 году, а активно развиваться начал уже с 2001 года. В настоящее время последней версией системы является восьмая. На начало 2015 года восьмая ветка ещё проходит бета тестирование, но уже вполне пригодна для разработки сайтов. Седьмая версия весьма стабильна, но мы не будем ориентироваться на неё, а пойдём в ногу со временем. Итак, Drupal 8.

Создание сайта на Drupal 8

Опубликовано 2015.04.04 в разделе Drupal.

В этой серии статей мы разберем основы Drupal 8, начиная от установки и заканчивая небольшим практическим заданием. На данный момент(апрель 2015) восьмёрка ещё сыровата и модулей для неё мало, но знакомиться с ней уже давно пора. Если вы ещё не работали с Drupal - лучше начинайте с 8, пока научитесь и поймёте что там к чему - система будет гораздо стабильнее.