DrupalPHP

Передача переменных в Drupal «насквозь»

Спешу поздравить своих читателей с наступившими Новым Годом и Рождеством! Что бы там ни говорили индейцы Майя, блог будет функционировать и нести полезную информацию!

От себя желаю всем вам, уважаемые, роста как над собой, так и в отношении заработной платы! =) Ну, и, конечно, крепкого здоровья вам и вашим близким!

А теперь о теме =)

Не секрет, что CMS Drupal состоит далеко не из одного файла. Более того, «кое-где» информация тянется из базы данных. Что же делать, если требуется создать переменную, которая будет доступна из любой структурной единицы страницы? Создание глобальных переменных тут не поможет. На помощь приходит Drupal API, а именно функция variable_set(). Рассмотрим принцип её работы.
С данной проблемой я столкнулся при подготовке своей системы к передаче на SEO. Требовалось динамически генерировать description, title и прочее. Вся эта информация бралась из БД. Как выяснилось, та же информация бралась ещё в нескольких местах страницы, что порождало идентичные запросы и, как следствие, увеличивало время загрузки страницы. А это — ужасная вещь!

Первым и логичным решением было создать некий набор глобальных переменных, которые будут передаваться внутри системы, но не тут-то было! Архитектура Drupal не позволила совершить такой финт. Однако её разработчики позаботились о своих пользователях и создали встроенные функции передачи переменных.

Первая из них — variable_set() создаёт новую глобальную переменную (но не в массиве GLOBALS!). Работает она так:

variable_set('имя_переменной', 'значение');

Таким образом создаётся переменная $<имя_переменной>. Но просто так её вызвать не получится (на то она и глобальная) Для этого в Drupal предусмотрена функция variable_get(), которая работает следующим образом:

variable_get('имя_переменной', 'значение_по_умолчанию');

После этого можно присвоить внутренней переменной вызванное значение примерно вот так:

$name = variable_get('имя_переменной', 'значение_по_умолчанию');

чтобы не возникало путаницы.

Также существует функция variable_del(), которая, как несложно догадаться, глобальную переменную удаляет:

$name = variable_del('имя_переменной');

Теперь созданную переменную можно передавать по всей системе! Естественно, необходимо обращать внимание на место объявления переменной, дабы случайно не вызвать ещё не созданную переменную.

Безошибочного Вам кода!

Передача переменных в Drupal «насквозь»: 0 комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *