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

DrupalВлияние количества модулей на производительность

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

Решил проверить, как модули, установленные на этом блоге, влияют на производительность Drupal.

Вооружившись утилитой ab из состава Apache 2.2, провел серию тестов. Отключая модуль за модулем, записывал число запросов, которое может обработать Drupal за одну секунду.

DrupalРаботаем с jQuery плагином Uploadify

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

Uploadify это jQuery плагин для закачки одного или нескольких файлов за раз, с прогрессбаром и различными рюшечками.

Основная сложность, при работе с плагином, заключается в том, что он не передаёт значение сессии при аплоаде файла. Поэтому Drupal думает что файл закачивает анонимный пользователь, со всеми вытекающими последствиями.

Чтобы этого не происходило, при загрузке файла нужно передавать идентификатор сессии в параметре scriptData, и на сервере делать проверку прав не в хуке hook_menu(), а в соответствующей callback функции. Покажу на примере.

DrupalПример работы с модулем Google Analytics API

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

Модуль Google Analytics API предоставляет функции для получения данных с вашего Google Analytics аккаунта.

Пример получения пяти самых популярных страниц за последние 30 дней:

$request = array(
  '#dimensions'  => array('pagePath'),
  '#metrics'     => array('pageviews'),
  '#sort_metric' => array('-pageviews'),
  '#filter'      => 'pagePath=~^/blog/.*/\d+',
  '#start_date'  => date('Y-m-d', time() - 60*60*24*30),
  '#end_date'    => date('Y-m-d'),
  '#start_index' => 1,
  '#max_results' => 5,
);
 
try {
  $entries = google_analytics_api_report_data($request);
}
catch (Exception $e) {
  return $e->getMessage();
}
 
$stat = array();
foreach ($entries as $entry) {
  $dimensions = $entry->getDimensions();
  $metrics = $entry->getMetrics();
 
  $stat[] = array(
    'url' => $dimensions['pagePath'],
    'views' => $metrics['pageviews'],
  );
}
 
print_r($stat);

DrupalМинимальное время жизни кеша = <нет>

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

При установке параметра Минимальное время жизни кеша в <нет> на странице admin/settings/performance, кэш страниц для анонимных пользователей будет сбрасываться при:

  • Любой активности админа на сайте: добавление материала, изменение настроек сайта, манипуляция блоками и модулями, изменение меню, изменение темы оформления, работа с таксономией, и т.д.
  • Выполнение регулярных процедур (cron)
  • Добавление/обновление/удаление комментариев
  • Редактировании профилей пользователей

DrupalПишем простой модуль защиты от спама

Цель модуля — защитить комментарии от автоматического спама, т.е от сообщений, которые создают боты а не люди.

Суть модуля — в форме отправки комментария, добавляем новое поле типа checkbox и подписью "Я не спамер". Боты, в основной массе, не заполняют незнакомые им поля, что позволяет отделить их от людей.

Модуль прошёл проверку в боевых условиях, и за несколько дней не пропустил ни одного спам-коммента.

Итак приступим.

DrupalСоздание и удаление таблиц базы данных в своём модуле

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

Таблицы описываются в файле с расширением .install и хуке hook_shema(). Затем с помощью хука hook_install() добавляются в базу при инсталляции модуля, и удаляются с помощью хука hook_uninstall() при удалении модуля на странице admin/build/modules/uninstall

DrupalНеприятная особенность модуля CAPTCHA

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

Страницы, на которых выводится капча, всегда генерируются заново, минуя кэш. Это обусловлено тем, что каждый посетитель должен видеть свою уникальную капчу.

Файл captcha.module, функция captcha_process:

...
// Prevent caching of the page with CAPTCHA elements.
// This needs to be done even if the CAPTCHA will be ommitted later:
// other untrusted users should not get a cached page when
// the current untrusted user can skip the current CAPTCHA.
global $conf;
$conf['cache'] = FALSE;
...

DrupalСоздаём xml карту сайта (sitemap) с помощью модуля XML sitemap

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

Описание

Процитирую википедию

Sitemaps — это XML-файл с информацией для поисковых систем (таких как Google, Yahoo, Ask.com, MSN, Яндекс) о страницах веб-сайта, которые подлежат индексации. Sitemaps может помочь поисковикам определить местонахождение страниц сайта, время их последнего обновления, частоту обновления и важность относительно других страниц сайта для того, чтобы поисковая машина смогла более разумно индексировать сайт. Использование протокола Sitemaps не является гарантией того, что веб-страницы будут проиндексированы поисковыми системами, это всего лишь дополнительная подсказка для сканеров, которые смогут выполнить более тщательное сканирование Вашего сайта.

Добавить нечего, нужный SEO инструмент.

DrupalВидео уроки от Lullabot.com

Очень качественные и полезные видео-уроки по Drupal от Lullabot.com. Советую к просмотру всем, кто занимается разработкой на этой CMF.

Всё видео на английском, но суть понятна и без знаний языка. Качество видео — DVD.

Understanding Drupal

Understanding Drupal

Введение в Drupal.

  • Добавление контента и управление им
  • Пользователи, управление ими и их правами
  • Что такое блоки и что они могут
  • Концепция и возможности модульной системы Drupal
  • Навигация и система меню
  • Дизайн сайта, темы
  • Настройка сайта

РазноеВыполнение нескольких команд в консоли Windows (cmd)

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

Для того чтобы выполнить несколько команд из одной командной строки, нужно объединить их с помощью символа условной обработки:

  • команда1 & команда2 — Используется для разделения нескольких команд в одной командной строке. В cmd.exe выполняется первая команда, затем вторая команда.

  • команда1 && команда2 — Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом была выполнена успешно. В cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая была выполнена успешно.

  • команда1 || команда2 — Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена. В cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).