xandeadx.ru Блог музицирующего веб-девелопера

DrupalПишем модуль утверждения комментариев в один клик. Часть 1

В первой части мы напишем модуль который добавит каждому не опубликованному комментарию новое действие "опубликовать", помимо уже присутствующих там удалить, изменить и ответить. Во второй части добавим немного Javascript-а и сделаем это действие на AJAX.

DrupalИзбавляемся от фразы "не проверено" в анонимных комментариях

Опубликовано в

Первый способ

Создаём файл template.php в папке темы, если его ещё там нет. Копируем в него функцию theme_username. Переименовываем её в phptemplate_username. Удаляем из функции кусок, где выводится фраза 'not verified'

DrupalУдаляем ссылку на автора из свойств ноды

Опубликовано в

Задача удалить ссылку на автора ноды, т.е из рис.1 сделать рис.2:

2009-12-08_023244.jpg

Создаём файл template.php в папке темы, если его ещё нет. Добавляем в него новую функцию

Drupal 6:

/**
 * Override theme function theme_node_submitted()
 */
function phptemplate_node_submitted($node) {
  return 'Опубликовано в ' . format_date($node->created);
}

Drupal 7:

/**
 * Preprocess function for node.tpl.php
 */
function THEMENAME_preprocess_node(&$vars) {
  $vars['submitted'] = 'Опубликовано в ' . $vars['date'];
}

Очищаем кэш.

DrupalКак воспользоваться сниппетом

Опубликовано в

Сниппет — это php код, который вставляется прямо в содержимое материала (ноды) либо блока и выполняющийся во время показа материала/блока.

С помощью сниппетов можно быстро реализовать какой-нибудь функционал без использования модулей, например вывести список последних комментариев, посетителей и т.д.

Чтобы воспользоваться сниппетом, нужно включить модуль PHP filter на странице управления модулями (admin/build/modules) и при создании материала, либо при добавлении блока, выбрать новый формат ввода PHP code. После этого любой код написанный между тегами <?php ... ?> будет выполняться как php.

DrupalИтоги оптимизации ядра

Опубликовано в

В статьях

  1. Уменьшаем количество запросов к MySQL в полтора раза
  2. Продолжаем резать, модуль Comment
  3. Заканчиваем резать, модуль Node

был прооперирован Drupal. Оптимизация была нацелена на уменьшение количества запросов к базе данных. Теперь время посмотреть, что из этого вышло.

DrupalВыводим список терминов из плоского словаря с помощью сниппета

Опубликовано в

Список терминов

Решил отказаться от модуля Taxonomy Block, выводящий список разделов блога, в пользу сниппета (что такое сниппет и как им пользоваться). Причина — уж больно много запросов он (Taxonomy Block) делает для вывода простого списка.

DrupalПродолжаем резать, модуль Comment

Опубликовано в

В прошлой записи Уменьшаем количество запросов к MySQL в полтора раза был прооперирован модуль Path, в этой будем мучать модуль Comment :)

На каждый запрос информации о ноде, например вывод тизера на главной, модуль Comment выполняет запрос к БД, в котором достаёт число комментариев к этой ноде и информацию о последнем комментарии. Если эта информация нам не нужна, например в этом блоге она нигде не выводится (p.s.: уже выводится), можно избавится от десятка запросов.

Итак, открываем файл modules/comment/comment.module. Идём в строку 596 и находим там такой кусок кода:

    case 'load':

DrupalУменьшаем количество запросов к MySQL в полтора раза

Опубликовано в

Один из самых прожорливых (в плане работы с MySQL) модулей в Drupal это Path. Для каждой ссылки, будь то ссылка на ноду, термин или форму ответа в комментариях, модуль создаёт запрос к таблице url_alias с целью выяснить, не добавили ли мы для этой ссылки alias, и если добавляли, то использовать его вместо дефолтного url.

Например у вас включён модуль Path и Pathauto. Pathauto создаёт псевдонимы для записей типа "Блог" вида /blog/nid. Тогда для того чтобы вывести 10 последних записей в блоге, модуль Path сделает 10 запросов к MySQL. Если при этом у каждой записи есть теги, то Path сделает ещё по запросу на каждый тег. В итоге, на главной странице этого блога, Path создаёт около 70 запросов.

DrupalКак удалить поле "Домашняя страница" из формы добавления комментария

Опубликовано в

Странно не видеть в настройках друпала, функции, отключающей поля и кнопки в форме добавления комментариев. Например часто возникает ситуация когда поле Домашняя страница не желательно. Есть несколько способов удалить его.