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

JavascriptСкрипт изменения размера textarea как в Drupal

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

В Drupal есть полезный jQuery скрипт, который позволяет с помощью мышки изменять размеры textarea:

Вот его немного переделанная версия, которую можно использовать вне друпала:

РазноеJoomla: Вынос подменю в отдельный блок

Задача

Создать двухуровневое меню, в котором второй уровень отображается в отдельном блоке.

Решение

Предположим, нам нужно создать следующую структуру меню:

  • Главная
  • О компании
    • История
    • Награды
    • Клиенты
  • Услуги
    • Дизайн
    • Поддержка
    • Продвижение

JavascriptIE не передаёт referer при изменении location.href

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

Решение проблемы — эмулировать нажатие на ссылку:

function openUrl(url)
{
    var fakeLink = document.createElement('a');
 
    // Firefox & other browsers
    if (typeof(fakeLink.click) == 'undefined')
    {
        location.href = url;
    }
    // Internet Explorer
    else
    {
        fakeLink.href = url;
        document.body.appendChild(fakeLink);
        fakeLink.click(); 
    }
 
    return true;
}
 
// пример
openUrl('http://google.com');

DrupalПочему в основном меню не появляется ссылка на созданный опросник (webform)

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

При создании опросника, по умолчанию, значение поля Опубликовано установлено в false (а должно быть true). Не логично, часа два убил на поиск разгадки.

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)
  • Добавление/обновление/удаление комментариев
  • Редактировании профилей пользователей