Как на 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. );

Color Picker для Drupal

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

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

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

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

Если у вас не стоит модуль 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);