Знакомство с интерфейсом, работа с материалами в 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, пока научитесь и поймёте что там к чему - система будет гораздо стабильнее.

Drupal node, как контейнер для содержимого материала

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

Нода, или материал - это единица контента на сайте. Любая статья, новость или заметка - это всё ноды. По умолчанию адрес каждого материала выглядит как node/<номер материала> Что нужно знать о нодах:
  • каждая нода имеет уникальный номер - nid (node id)
  • каждая нода имеет тип
  • ноды состоят из полей
  • каждая нода имеет два состояние- опубликована и не опубликована
Это основные признаки материалов на сайте. Теперь подробнее.

Drupal t или переводим друпал правильно

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

В друпале есть функция t. Да, именно одна буква, от слова translate, что означает перевод. Функция t принимает на вход один строковый аргумент и возвращает его, переведённый на язык сайта или язык текущего пользователя. Передавать строки в функцию t следует только на английском языке. Например, если у вас сайт на русском языке - то такой код должен вывести слово "Отмена":
  1. print t('Cancel');
Если какие-то строки не переведены - вы можете перевести их вручную в админке, по адресу admin/config/regional/translate/translate

Агрегация views по заголовку материала

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

Сделать традиционный group by в запросе вьюса не так просто. Вьюс группирует все поля. Для отдельных полей в настройках агрегации можно задать тип "среднее", "максимум", "минимум" и так далее. А если нужно сгруппировать материалы по строке? Например по заголовку или строковому cck полю? Стандартная агрегация вьюса с этим не справится, по крайней мере я не смог этого сделать в интерфейсе представления. Поальтерить запрос вьюса через hook_views_query_alter тоже не получится. Придётся альтерить весь запрос.

Создание своего Token`а

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

Расширить стандартный набор токенов очень просто. Это необходимо, если вам нужно как-то необычно формировать алиас материала. Для начала создайте модуль. Для начала в нём необходимо объявить hook_token_info. Он будет возвращать названия токенов, их описания и машинное имя токена.
  1. function my_module_token_info() {
  2. $info['tokens']['node']['my_new_token'] = array(
  3. 'name' => t('My node token'),
  4. 'description' => t('New custome node token'),
  5. );
  6. return $info;
  7. }

Программное создание node_reference поля

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

Добавить такое поле очень просто. Для этого подойдёт стандартный hook_form_alter. Для создания поля типа Node reference нужно создать обыкновенное текстовое поле. А чтобы текстовое поле стало с автокомплитом - в него нужно добавить путь, по которому друпал будет аяксом дергать список подходящих значений. Выглядит это так:
  1. $form['my_author'] = array(
  2. '#type' => 'textfield',
  3. '#title' => 'Автор фото',
  4. '#autocomplete_path' => 'node_reference/autocomplete/node/node_gallery_item/field_coll_photo_author',
  5. );

Color Picker для Drupal

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

В ядре друпала есть модуль Color, позволяющий задавать цвета различных элементов темы прямо из админки. Данный Color Picker легко вытянуть и поставить в любую друпальскую форму. Можно создать форму самому, или поальтерить существующую. Такой код добавит элемент ко всем формам, так что ориентируйтесь на переменную $form_id в теле хука.
  1. function my_module_form_alter(&$form, &$form_state, $form_id){
  2. $form['color'] = array(

Удалить все ноды определённого типа

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

Если у вас не стоит модуль VBO, а потребность удалить большое количество нод есть - то можно использовать совсем маленький кусок кода. Можно даже не создавать модуль, а прогнать его через Devel. Например, мне нужно удалить все материалы типа "auto_part" Код выглядит так:
  1. $nids = array();
  2. $q = db_select('node', 'n')->condition('n.type', 'auto_part')->fields('n', array('nid'))->execute();
  3. while($r = $q->fetchAssoc()) {
  4. $nids[] = $r['nid'];
  5. }
  6. node_delete_multiple($nids);