Статьи о Drupal

Часто встаёт задача при выполнении какого-то javascript'a показать пользователю крятущийся кружочек о том, что скрипт выполняется. В друпале для этого в любом месте страницы достаточно добавить следующий код:

<div class="ajax-progress"><div class="throbber">&nbsp;</...

Если вы написали свой платёжный шлюз для Drupal Commerce, и вам нужно чтобы после выбора нашего способа платежа пользователь автоматически перенаправлялся на сайт платёжной системы (это классическая схема обычно), то в хуке _commerce_payment_method_info нам нужно добавить всего одну строчку 'offsite_autoredirect' => TRUE,! Пример:

...

Часто стандартных наборов правил для Rules не хватает и возникает необходимость выполнить свой php-код. Включать на сайте модуль php нельзя! Ибо это черевато соблазнами добавить какой-то код в базу данных, а это не drupal-way и черевато проблемами и ошибками. Итак, для того чтобы выполнить какое-то своё действие при срабатывании события по Rules, надо реализовать ряд хуков:

/**
 * Implement hook_rules_action_info()
 
 * Declare any meta data about actions for Rules
 */
 
function...

Если у вас есть много файлов с частичными дампами базы данных (это может быть, например, если у вас каждая таблица базы данных была экспортирована в отдельный файл и у вас есть более 500 файлов с разрешением .sql), и вам нужно импортировать их в одну базу данных на локальной машине, на которой установлен Denwer, то вам нужно сделать следущее:
Скачать файл для импорта файлов баз данных в денвер: https://github.com/DyaGa/mysql_dump_win, оттуда вытащить файл mysql_run_to_import_dumps.exe (прикреплён к статье)
Скопировать его в...

Автор: "Чулан", оригинал: http://habrahabr.ru/post/78845/, использовал на одном сайте - реально работает.

Прочитав статейку Дмитрия Котерова о ресайзе ифрэймов решился поделиться своим решением.

Этим решением пользуемся на продуктивном сайте.

Итак, дано:
1. Нужно показывать в ифрэйме страницы с других доменов без скроллбара
2. Внутри ифрэйма могут совершаться переходы
3. Сайты в ифрэйме могут менять высоту без перегрузки (AJAX или просто раскрытие каких-нибудь невидимых элементов)
4. Во включаемые...

Я использую модуль Insert для вставки изображений в текст (при включенном визуальном реакторе или без - не важно)
При этом я добавляю поле "Картинки для текста" к каждому типу материала, в которое пользователь загружает картинки. После загрузки пользователь может выбрать, в каком размере ему вставлять картинку в сам текст (наборы "стилей изображения" ядра друпала), нажимает кнопку "вставить" и картинка сразу появляется в тексте на месте курсора.

Но есть проблема - он не настроен по умолчанию для интеграции с lightbox или colorbox. Для настройки интеграции надо сделать следущее...

Если вам нужно улучшить форму корзины, например, добавлением удобных кнопок "плюс" и "минус" для увеличения/уменьшения количества товаров, добавленных в корзину, вам нужно использовать модуль https://drupal.org/project/commerce_extra и включить модуль Commerce Extra Quantity

Если вам нужно проверить, как всё-таки запрос формируется к бд при выполнении определённой вьюс, вам нужно добавить следующий код в ваш модуль:

function zz_np_views_pre_render(&$view) {
  dpq($view->build_info['query'...

Если при включении ajax в вашей вьюс всё работает только один раз, а в консоль браузера выпадает ошибка:
Uncaught TypeError: Object [object Array] has no method 'replace'
то это значит, что вам нужно установить следующий патч: https://drupal.org/files/drupal-ajax_javascript_error-1715508-2.patch
конкретно, в файле misc/ajax.js надо заменить...

Если в результате настройки вьюс у вас стали дублироваться строки, и вы уже пробовали зайти в настройках вьюсины в раздел "Прочее" -> "Настройки запроса" -> "Уникальность", поставить там галочку, но она всё равно не помогает - тогда можно использовать этот хитрый сниппет для решения проблемы:
Заходите туда же, в "Прочее" -> "Настройки запроса"

там в поле "Комментарий запроса" пишете "groupby:node.nid" без кавычек...

Если вам нужно выставить значения по умолчанию для некоторых раскрытых фильтров во вьюс программно, то вам не поможет хук _form_alter, потому что раскрытые фильтры не оттуда берут default_value.
Оказывается, нужно использовать хук _views_pre_build(&$view), в котором изменять handler нужного фильтра, примерно так:

function zz_np_views_pre_build(&$view) {...

При вёрстке сайтов необходимо всегда учитывать мобильные устройства, но проблема в том, что если в тексте встречаются таблицы, то он никак не хотят адекватно уменьшаться и ухудшают весь вид страницы, становясь то слишком длинными, то вылезая за границы экрана.
Решение есть - элегантный способ от Todd Parker, при котором таблица просто прячется, вместо неё показывается сообщение "Таблица: нажмите для увеличения", и при нажатии таблица раскрывается на полный экран, позволяя её более-менее сносно просмотривать. При нажатии кнопки "Назад" можно вернуться к текущему тексту.
Решение...

Столкнулся с необходимостью не просто программного добавления комментария, но и так же чтобы у родительской ноды при этом изменилось поле (статус задачи), а у этого комментария отображалось соответсвующая запись о том, что при этом комментарии было обновлено поле ноды.
Всё это делает модуль comment_alter, но беда в том, что делает он это через альтер формы, и программно это использовать сложно.

Решение найдено здесь:
https://drupal.org/node/2157421
а именно:
сначала созраняем новую РЕВИЗИЮ ноды с изменённым полем,...

Все инструкции о том, как применять патчи (.patch файлы) к друпал-модулям (или хотя бы просто git-репозиториям) написаны для использования под Linux. Под Windows, к сожалению, нормальной визуальной программы не существует ( TortoiseGit не умеет применять патчи - apply patch serial не работает в нашем случае).
Для того, чтобы всё же применить патч к нужному нам модулю, надо сделать следущее:
установить MySysGit (у меня уже стоял)
при установке в Пуск добавляется новая группа Git -> Git Bash, запускаем её.
Это нормальная полноценная командная строка как в Linux,...

Например, у вас есть вьюс в виде таблицы, в которой есть столбец "статус", и вам нужно подсвечивать строку в зависимости от того, какое значение поля "Статус" у каждой строки, то вам нужно использовать хук _preprocess_views_view_table:

function THEME_preprocess_views_view_table(&$vars) {
  $view = $vars...

Страницы