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

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

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

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

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

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

Как на PHP узнать IP адрес посетителя

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

IP адрес посетителя, как и другая полезная информация, хранится в суперглобальной переменной $_SERVER. Суперглобальной она называется из-за того, что она доступна всегда и везде. Её не нужно определять или как-то подключать. Она видна даже если запускать скрипт из командной строки. $_SERVER не что иное как ассоциативный массив данный. Чтобы посмотреть из чего он состоит - его можно вывести полностью:
  1. echo '<pre>';
  2. print_r($_SERVER);
  3. echo '</pre>';
На и непосредственно IP адрес хранится в элементе с индексом REMOTE_ADDR.

Настройка Cron

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

Для настройки частоты запуска крона достаточно прописать всего 1 строчку. Она состоит из пяти пунктов, отвечающих за время запуска, и один пункт - запускаемый файл.
  • минуты — число от 0 до 59
  • часы — число от 0 до 23
  • день месяца — число от 1 до 31
  • номер месяца в году — число от 1 до 12
  • день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)
В значениях пунктов так же может присутствовать звёздочка, запятая или слэш.
  • * - все возможные значения
  • , - перечисление
  • / - каждые

href mailto с русским заголовком

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

Если в ссылке в атрибуте href прописать mailto:e-mail - то при клике на такую ссылку у пользователя откроется почтовый клиент и создастся письмо, адресованное адресу, указанному после mailto: Так же в ссылке можно передавать заголовок письма и его содержимое. Для этого нужны переменные subject и body. Таким образом ссылка будет выглядеть вот так:
  1. <a href="mailto:example@server.dom?subject=My email&body=My text of this e-mail">написать письмо</a>
Такой код будет корректно отрабатываться во всех браузерах. Если нажать на такую ссылку - то откроется почтовый клиент

Документация Varnish

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

Обработчики

vcl_recv - принимает запрос.
vcl_fetch - вызывается после того, как документ был успешно загружен с бэкэнда. Можно добавлять заголовки, обрабатывать esi.
vcl_pass - вызывается если vcl_recv вернул pass.
vcl_deliver - последняя точка перед выходом(подойдёт для добавления различных отладочных заголовков).
vcl_hit - вызывается после того, как объект был найден в кэшэ.

Права на файлы и папки

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

Права представляют из себя трёхзначное число, состоящее из чисел от 0 до 7. Первые три цифры означают права владельца файла(owner). Вторые три - группы(group). Последние три - всех остальных пользователей(others). Ниже список цифр и их значений: 0 - ничего нельзя 1 - выполнение 2 - запись 3 - запись и выполнение 4 - чтение 5 - чтение и выполнение 6 - чтение и запись 7 - чтение, запись и выполнение Права так же могут быть и в строковом виде. В этом случае вы увидите 3 символа - это R(чтение), W(запись) и X(выполнение).

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

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

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

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

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

Расширить стандартный набор токенов очень просто. Это необходимо, если вам нужно как-то необычно формировать алиас материала. Для начала создайте модуль. Для начала в нём необходимо объявить 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 в разделе .

Добавить такое поле очень просто. Для этого подойдёт стандартный 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. );