Создание своего 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);

Проблемы с check_plain

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

Иногда при работе с сайтом вываливаются подобного рода ошибки:
Warning: htmlspecialchars(): Invalid multibyte sequence in argument в функции check_plain() (строка 1566 в файле /includes/bootstrap.inc).
Это возникает из-за того, что в функцию
  1. htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
передана строка в кодировке, отличной от UTF-8.

Упрощение связки двух материалов в Drupal

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

Предположим у вас на сайте есть два типа материала. Пусть это будет "Автор" и "Статья". В статье есть поле типа "Ссылка на материал", через которое к статье привязывается автор. Задача следующая: на странице автора нужна ссылка на добавление статьи. При переходе по этой ссылке поле автора должно быть заполнено соответствующим автором. Реализуется это достаточно просто. Для этого понадобятся:
  • собственный модуль
  • знание Form API
  • понимание hook_form_alter
  • немного знаний по PHP

Свой виджет Fivestar для Drupal

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

Модуль Fivestar предлагает на выбор 11 типов виджетов. В основном это всё звёздочки. Хуки этого модуля позволяют с лёгкостью добавить свои виджеты, или попросту скины для отображения оценок. Для добавления своих виджетов нужен отдельный модуль. Почитать о его создании можно тут или тут. Далее используем hook_fivestar_widgets. Пусть модуль называется star_widgets Тогда функция будет выглядеть так:
  1. function star_widgets_fivestar_widgets() {

Изменение регистра первой буквы

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

Если одну и туже запись нужно выводить то с большой, то с маленькой буквы - можно использовать следующую функцию.
  1. function drupal_first_letter($string, $choice = NULL) {
  2. if (!in_array($choice, array('up', 'down'))) {
  3. return $string;
  4. }
  5. if ($choice == 'up') {
  6. $fl = drupal_strtoupper(drupal_substr($string, 0, 1));
  7. }
  8. else {
  9. $fl = drupal_strtolower(drupal_substr($string, 0, 1));
  10. }
  11. return $fl . drupal_substr($string, 1);
  12. }

Что такое php

Опубликовано 2012.05.20 в разделе Юмор.

Здравствуйте. Меня зовут Вячеслав, мне 22 года и я алкоголик php программист. Я сижу на php с 18 лет.

Первый раз я попробовал php с другом. Мы сидели, обсуждали веб-технологии и тут он сказал, что недавно пробовал php. Он предложил попробовать мне. Поначалу я не согласился, ведь это php, я слышал много плохих слухов про него, слышал, что он вызывает зависимость. Но друг настаивал, говорил, что в жизни нужно попробовать все и я сдался.