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

DrupalИнтеграция c Gravatar с помощью одноимённого модуля

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

Описание

Gravatar (от англ. globally recognized avatar — глобально распознаваемый аватар) — Web 2.0 сервис, позволяющий интернет-пользователям хранить свой аватар на специальном сервере. Пользователь регистрируется на центральном сервере и сохраняет там свой аватар и адрес электронной почты. Когда он оставляет комментарий на сайте или блоге, поддерживающим Gravatar, и указывает свой адрес электронной почты, на стороне сайта вычисляется MD5 хэш от почтового адреса и отправляется на сервер Gravatar, в ответ возвращается аватар пользователя. Таким образом система Gravatar позволяет использовать аватары без регистрации на сайте или блоге. Wikipedia

DrupalДобавляем заголовок "Комментарии" к блоку с комментариями

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

Блок с комментариями и заголовком

Решение взято из гарланда. В template.php добавляем:

/**
 * Добавляем к блоку комментариев заголовок "Комментарии"
 */
function THEMENAME_preprocess_comment_wrapper(&$vars) {
  if ($vars['content']) {
    $vars['content'] = '<h2>Комментарии</h2>' .  $vars['content'];
  }
}

Вместо THEMENAME прописываете название темы.

DrupalОписание модулей, функции которых были добавлены в ядро Drupal 7

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

Это список модулей, функции которых так или иначе вошли в Drupal 7. Перевод статьи More than 50 Drupal modules moved into Drupal 7.

Я не очень силён в английском, поэтому за ранее прошу прощения за возможные неточности ;)

  • AHAH helper
    Позволяет модулям работать с AHAH/AJAX без написания Javascript кода. Новый AJAX framework основан на проекте Эрла Майлза (Earl Miles) CTools.

  • Autoload
    Позволяет модулям использовать ленивую загрузку классов (lazy-load).

DrupalДобавляем в отчёты кнопку «Очистить журнал»

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

Полезная штука :)

Кнопка очищающая журнал

/**
 * Implements hook_form_FORM_ID_alter(): dblog_filter_form.
 */
function mymodule_form_dblog_filter_form_alter(&$form, &$form_state) {
  $form['clear'] = array(
    '#type' => 'submit',
    '#value' => 'Очистить журнал',
    '#submit' => array('mymodule_watchdog_clear'),
  );
}
 
/**
 * Form callback.
 */
function mymodule_watchdog_clear() {

DrupalBUEditor one click upload 0.7

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

Обновился BUEditor one click upload. Изменения:

  • При нажатии кнопки Предпросмотр пропадала кнопка модуля.
  • Добавлена подсказка для кнопки (title).
  • Проверка максимального размера файла до его отправки на сервер.

DrupalЗащита от сканирования сайта ботами

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

Судя по вот этому посту на drupal.ru, не я один подвергаюсь периодическим набегам ботов :) Поделюсь как решил эту проблему у себя в блоге.

В .htaccess, в секцию <IfModule mod_rewrite.c> нужно добавить:

RewriteRule \.(cgi|rdf)$ - [F]
RewriteRule http: - [F]
RewriteRule xmlrpc\.php$ - [F]
RewriteRule ^wp- - [F]
RewriteRule ^modx/ - [F]
RewriteRule ^e107 - [F]
RewriteRule ^bitrix/ - [F]
RewriteRule ^netcat - [F]
RewriteRule ^typo3/ - [F]
RewriteRule ^cms/ - [F]

DrupalПримеры модулей для Drupal 7

На drupal.org существует проект для разработчиков с примерами различных модулей, по исходникам которых можно набираться опыта. На данный момент для Drupal 7 написано 19 модулей. Туда входит:

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();