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

DrupalРазличные page.tpl.php в зависимости от условий

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

Иногда необходимо, чтобы некоторые страницы имели свой уникальный основной шаблон (layout, он же page.tpl.php).

Самый простой способ добиться этого, это создать в папке темы файл с именем на основе url. Например при генерации страницы mysite.ru/search Drupal будет искать в папке темы файл с именем page--search.tpl.php и если он существует, то будет использовать его, вместо стандартного. По такому принципу можно создавать свои layout-ы для определённых нод (например page--node--223.tpl.php для темизации страницы mysite.ru/node/223) или терминов таксономии (page--taxonomy--term--85.tpl.php для темизации страницы mysite.ru/taxonomy/term/85). Подробнее в официальном руководстве.

Но что делать если основной шаблон нужно использовать больше одного раза, и в зависимости от каких-нибудь условий, например для нод с nid равным 1 или 99.

DrupalРабота с базой данных в Drupal 7

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

Выборка с условием:

// Drupal 6
$nodes = db_query("
  SELECT nid, title FROM {node}
  WHERE type = '%s' AND uid = %d
", 'page', 1);
 
// Drupal 7, static query
$nodes = db_query("
  SELECT nid, title FROM {node}
  WHERE type = :type AND uid = :uid
", array(':type' => 'page', ':uid' => 1))->fetchAll();
 
// Drupal 7, dynamic query
$nodes = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->condition('n.type', 'page')
  ->condition('n.uid', 1)
  ->execute()
  ->fetchAll();

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

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