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

Drupal

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

/**
 * Реализация hook_comment()
 * Отправка уведомления о новом комментарии, администратору на почту
 */
function mymodule_comment(&$a1, $op) {
  if ($op == 'insert') {
    drupal_mail('mymodule', 'notify_of_new_comment', variable_get('site_mail', ''), language_default(), $a1);
  }
}
 
/**
 * Реализация hook_mail()
 */
function mymodule_mail($key, &$message, $params) {
  if ($key == 'notify_of_new_comment') {
    $message['subject'] = 'Уведомление о новом комментарии';
    $message['body'] = $params['name'] . ' оставил новый комментарий:' . "\n\n";
    $message['body'] .= $params['comment'] . "\n\n";
    $message['body'] .= url('node/' . $params['nid'], array(
      'absolute' => TRUE,
      'fragment' => 'comment-' . $params['cid'])
    );
  }
}

DrupalОтправка email

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

Письма в друпале отправляются довольно нестандартным способом. Во первых, нужно вызвать функцию drupal_mail в которую передать название модуля, идентификатор письма, адрес получателя и язык письма.

drupal_mail('mymodule', 'my_notify', 'to-user@gmail.com', language_default(), array('somevar' => 'somevalue'));

Последним параметром можно передать какие-нибудь данные, которые будут участвовать в генерации темы письма или сообщения.

DrupalBUEditor 2.0

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

Обновился хороший текстовый редактор BUEditor до версии 2.0.

Изменения

  • CSS спрайты для кнопок (включаются в настройках редактора).
  • Новые кнопки для дефолтного редактора: подчёркнутый, зачёркнутый, цитата, код.
  • Поддержка браузера Opera.
  • Shortcut-ы для всплывающих окон: Esc (закрыть), Enter (клик по ссылке), Up & Down (навигация по ссылкам).
  • Улучшенный административный интерфейс: drag & drop, визуальный выбор иконок и горячих клавиш. Скриншот

DrupalBUEditor one click upload — модуль загрузки файлов в один клик

Делюсь своим модулем BUEditor one click upload — кнопка для BUEditor загрузки картинок и файлов в один клик для Drupal 6.

Модуль успешно работает на двух моих сайтах. В этом блоге практически все картинки и файлы залиты с помощью него.

Возможности

  • Загрузка картинок и вставка html кода прямо в редактор.
  • Автоматическое создание эскизов для картинок превышающих определенные размеры.
  • Интеграция с ImageCache.
  • Загрузка файлов и вставка в редактор ссылки на файл.
  • Мультизагрузка файлов и картинок.
  • Редактируемые html шаблоны, которые вставляются в редактор после загрузки файла.
  • Поддерживаемые браузеры: IE6+, Opera 10.5+, Firefox 3.6+, Chrome 5+

DrupalОфициальные видео уроки от drupal.org

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

DrupalЗачем дублируется заголовок meta http-equiv="Content-Type"

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

Мета-тег с указанием кодировки, всегда должен быть самым первым тегом в head, для того чтобы предотвратить некую encoding-based уязвимость. Комментарий в функции drupal_final_markup:

Make sure that the charset is always specified as the first element of the head region to prevent encoding-based attacks.

А поскольку порядок и наличие заголовков ложится на плечи разработчика темы (шаблона), то нет 100% уверенности в правильности его действий.

DrupalИзменяем содержимое RSS ленты

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

При генерации RSS ленты, для каждой ноды вызывается хук hook_nodeapi() с параметром $op равным rss item. Поэтому можно из своего модуля изменять любые свойства ноды, которые выводятся в ленте, например тизер или заголовок.

Добавляем к тексту список тегов:

/**
 * Реализация hook_nodeapi()
 */
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == 'rss item') {
    $tags = array();
    foreach ($node->taxonomy as $tag) {
      $tags[] = $tag->name;
    }
 
    $node->teaser .= '<p>Теги: ' . implode(', ', $tags) . '</p>';
  }
}