Drupal 7

Статьи, записки и заметки по теме Drupal 7

Broken/missing handler

mbaev 13.06.2017, 15:22

Если вы создали field/sort/filter/area или что-то еще для views в своём модуле blablabla и видите надпись:

Broken/missing handler

То одной из возможных причин может быть отсутствие строки подключения вашего класса в blablabla.info

  1. files[] = includes/views/handlers/blablabla_handler_my_handler.inc

 

Длина Друпала в попугаях

mbaev 25.11.2016, 20:13
Это пост, в котором не будет описания установки модуля, программного создания ноды или того, как избавиться от ошибок. Только попугаи!
 
 
 
 
 

Как создать свой дисплей для ноды

mbaev 15.11.2016, 09:15

Иногда, нам не хватает стандартных дисплеев и необходимо создать свои. Дополнительный дисплей позволяет показывать еще один набор полей с настройками, отличными от других дисплеев.

Например, в дисплее Full мы можем отображать все поля, в дисплее Teaser - обрезанное поле Body, а в кастомном только поля, созданные нами.

По умолчанию Друпал имеет три дисплея:

  • Full content (full)
  • Teaser (teaser)
  • RSS (rss)

Модуль Token предоставляет дисплей Tokens (token).

Способ первый создание дисплея под контролем модуля node

Для создания нового дисплея нужно выполнить несколько шагов:

Drupal ajax страницы без перезагрузки

mbaev 14.11.2016, 16:19

Это всего лишь мокап, который я накидал за 20 минут "на коленке" и он требует доработки, но уже сейчас этот js-скрипт позволит простым сайтам работать без перезагрузки страниц.

Для примера, можно сёрфить по нодам в блоге или переходить из редактирования ноды в режим просмотра ноды. В большей степени, продолжают корректно работать ajax-ссылки, созданные, например, с помощью views.

Отладка темы в Друпале

mbaev 28.10.2016, 22:22

Для того, чтобы увидеть отладочную информацию Друпала, достаточно установить переменную theme_debug в TRUE. Способа включить отображение этой информации через интерфейс- нет, но можно с помощью Drush.

  1. drush vset theme_debug --format=boolean 1

Если нет возможности использовать Drush, то всегда можно залезть через базу. Друпал хранит переменные в таблице variable. Изначально, записи о переменной theme_debug там нет, но мы можем добавить.

  1. INSERT INTO variable (name, VALUE) VALUES ('theme_debug', 'b:1;');

А если уже добавляли, то можно изменить.

Drupal htaccess

mbaev 19.10.2016, 16:36

В блогах и обзорах, почему-то, редко упоминается очень важный файл .htaccess. А тем временем он уже хранит в себе важную функциональность, которая доступна новичкам с самого начала работы с Друпал.
Итак, кроме всего прочего, этот файл предоставляет возможность перенаправлять пользователя внутри себя по определенным правилам. Важная эта функциональность потому, что по умолчанию сайт доступен и по адресу www.example.com и по адресу example.com. С точки зрения поисковиков - это разные сайты, а значит один из них зеркало. Если об этом не сообщить поисковикам, то это плохо скажется на репутации вашего сайта.
 

Как разблокировать аккаунт после 5 неудачных попыток входа

mbaev 14.10.2016, 15:18

Наверное, каждый сталкивался с ошибкой при попытке авторизации с не валидными данными, которая по-английски звучит так

Sorry, there have been more than 5 failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.

а по-русски

Аккаунт временно заблокирован по причине более чем 5 неудачных попыток входа. Попробуйте войти позже, или запросите новый пароль.

Это простая самооборона Друпала, которая активируется после 5 (по умолчанию) попыток входа. Таким образом, система не позволяет злоумышленникам забрутофорсить (англ. brute force. Cм. Полный перебор) сайт. Работает она достаточно просто: во время каждой авторизации, Друпал сохраняет ip-адрес пользователя, запоминая при этом, точную дату события и дату окончания "срока годности" попытки.

Вот некоторые нюансы:

  • По умолчанию "срок годности" составляет 1 земной час.
  • Количество возможных, неудачных попыток входа - 5.
  • Эти значения могут быть изменены.
  • Вместо ip-адреса может быть сохранено имя хоста.
  • Данные, у которых истек "срок годности" очищаются только по крону.
  • Вы можете войти в систему, в любом случае если пройдете процедуру "Сброса пароля"!

Вот еще один интересный факт:

Обновление представления (views) через ajax

mbaev 13.10.2016, 13:53

Заставить работать какую-либо вьюху с ajax не сложно. Достаточно зайти в настройки и установить параметр Use Ajax: Yes.
ajax-view

К сожалению, модуль Views не предоставляет JS API для программного обновления этой вьюхи. Поэтому, пишем свою функцию (комментарии в коде):

Как изменить союз условий в существующем запросе

mbaev 30.09.2016, 11:15

Предположим, вам необходимо выбрать все опубликованные ноды и автор которых - суперадмин. В SQL запрос должен выглядеть так:

  1. SELECT n.*
  2. FROM node n
  3. WHERE (n.STATUS = 1 AND n.uid = 1)

Сформировать такой запрос не составит труда.