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

DrupalПропадают файлы загруженные с помощью функции file_save_upload

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

Из документации к функции file_save_upload:

The file will be added to the files table as a temporary file. Temporary files are periodically cleaned. To make the file permanent file call file_set_status() to change its status.

Перевод:

Файл будет добавлен в таблицу files с флагом "временный". Временные файлы периодически удаляются (по крону). Для того, чтобы назначить файлу флаг "постоянный", нужно вызвать функцию file_set_status().

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