Предлагаю решение

drupal + views = медленный mysql

21 ноября 2010 в 12:03

Здравствуйте!
проанализировал работу сайта за ночь всплыли вот такие неприятности:
в slow_log попало почти 400 запросов со временем запроса, большем 1 секунды.

натравил на лог парсер
результат в конце страницы.

Получается, 3 запроса выполняются очень долго и часто, есть ли способ их оптимизировать?

1. запрос - стандартный views taxonomy_term для страницы taxonomy/term/%
среднее время запроса - 2.5 секунды
количество строк для анализа - 170к - 250к

По моему, не самый удачный запрос select * from node where vid in (...) .
И как к этому запросу добавить SQL_NO_CACHE ?
Самый тупой запрос - листалка, пока даже не знаю, как это можно оптимизировать.

2. запрос - как я понял подсчет числа нод определенного термина - это pager считает их?
среднее время запроса - 2.4 секунды

Получается, при плохом раскладе страница может генериться 2.5 (заголовки нод) + 2.4 (отрисовка пейджера) = 5 секунд??
ну, при хорошем раскладе, конечно этот запрос попадет в query_cache, только вот он засирается быстро другими запросами.
нет ли какого модуля в друпале, который кеширует статистику нода-термин в базу, пусть даже по крону, все равно?

3. запрос - views вида content/%year/%month/%day - вывод нод за дату.
среднее время запроса - 1.3 секунды.
делается проход на 340к нод - жесть.

честно говоря, мне больше нравится запрос вида
created between UNIX_TIMESTAMP('2003-08-18') and UNIX_TIMESTAMP('2003-08-19')

Фикс высоты родительского div если он содержит вложенные элементы с float

18 ноября 2010 в 3:26

Проблема думаю знакома многим: если вложенные дивы имеют определённое свойство float, родительский див "теряет" высоту, что приводит к тому, что дивы снизу наезжают на этот див

Задавать жёстко высоту не всегда приемлемо.

Фикс, о котором знают наверняка опытные верстальщики, но стал откровением для меня

Убрать системные пути из списка меню "создать материал"

15 ноября 2010 в 23:43

При создании ноды мы разворачиваем филсдет "Настройка меню", пишем текст и выбираем родителя.
Как убрать из этого списка, к примеру, все меню "Навигация", чтобы отображались только основные и дополнительные ссылки

UP: Нашел для этого дела отличный модуль - Menu Settings per Content Type

[РЕШЕНО] Как настроить разные уровни доступа разных ролей к разным терминам одного словаря.

15 ноября 2010 в 11:18

У меня есть словарь "Лента новостей",
в нём есть термины "Слухи", "Новости жителей", "Новости городских служб".

Среди пользователей есть роли:
"Журналист", "Житель", "Пресс-служба".

Каким образом сделать так, что бы пользователи с ролью "Журналист" могли публиковать только с термином "Слухи", пользователи с ролью "Житель" - только термин "Новости жителей", а роль "Пресс-служба" - могла использовать только термин "Новости городских служб"?

UPD.
Наобум нашел на д.орг модуль term_permissions. Работает именно так как описано в задаче.

В настройках каждого термина каждого словаря добавляет вкладку "Разрешения", где можно выбрать роли, или конкретных пользователей, которым доступно использование данного термина.

переезд на MariaDB

14 ноября 2010 в 18:23

После прочтения актуальных новостей на хабре об Oracle и их политики в отношении MySQL задался вопросом на что бы ее поменять. Остановился на MariaDB...

Сделать это оказалось весьма просто:
Идем сюда: ourdelta.org и ищим наш дистрибутив. В моем случаи это был убунту 9.04 которому соответствует вот эта страничка.
Теперь, когда мы знаем репозиторий осталось лишь выполнить следующую последовательность команд:

Иконка в табличке Views + jQuery Fancybox выводит картинки

12 ноября 2010 в 18:44

Ничего особо оригинального в настройке нет, просто понравилось как работает
модуль jQuery Fancybox (не путать с модулем fancybox">http://drupal.org/project/fancybox]fancybox[/module]).

Про сам модуль рассказывается на сайте разработчика вот здесь .

Как можно программно создать форму для изменения значений ССК поля ноды

11 ноября 2010 в 21:37

Иногда может потребоваться изменять значения какого-то CCK поля ноды не обновляя всю ноду.
Выкладываю заготовку для решения такой задачи (по мотивам тестового задания restyler).
В нижеприведенном коде создаются пути типа 'test-form/%node', на страницах с этими адресами выводится форма для заполнения одного CCK поля (сейчас захардкоденного, но легко меняется на выбираемое из админки или даже несколько полей) и кнопка сабмита для отправки формы. После отправки поле соответственного нода будет обновлено, в том числе работает с полями множественного выбора. Например, если зайти на страницу 'test-form/4' и есть такой нод и у него есть поле 'field_test', то после сабмита формы на этой странице у нода 4 в поле field_test будут обновленные значения.
Валидацию не делал, надо доделывать, если будете использовать где-то.
<?php

/**
* Implementation of hook_menu().
*/
function test_module_menu() {
$items = array();
$items['test-form/%node'] = array(
'page callback' => 'drupal_get_form',
'page arguments' => array('test_form', 1),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}

function test_form(&$form_state, $node) {
$form['#node'] = $node;
$field_name = 'field_test';
$field = content_fields($field_name, $node->type);
$form['#field_info'][$field_name] = $field;
module_load_include('inc', 'content', 'includes/content.node_form');
$form_element = content_field_form($form, $form_state, $field);
$form += (array)$form_element;
$form['submit'] = array(

Галерея с помощью модуля Gallery Assist, также установка и обзор видов Lightboxes для модуля

11 ноября 2010 в 12:30

Галерея с помощью модуля Gallery Assist

В данной статье я расскажу подробно как установить и настроить модули

Gallery Assist   Version 6.x-1.17

Gallery Assist Lightboxes  Version 6.x-1.4

Image FUpload (Gallery Assist)  Version 6.x-1.x-dev

 

Также в этой статье вы найдете сравнительную характеристику и настройки других видов Lightboxes для данной галереи.

Система на которую ставил:

drupal 6.19

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

Сразу можете закачать вот такие модули.

Gallery Assist   Version 6.x-1.17

Gallery Assist Lightboxes  Version 6.x-1.4

Image FUpload (Gallery Assist)  Version 6.x-1.x-dev

Image FUpload

Оптимизация Drupal (кеширование и все остальное)

11 ноября 2010 в 10:47

Всем добрый день.

Нашел на одном сайте очень хорошую лекцию по оптимизации Друпал 6. Сделал все как там написано, мой сайт стал просто летать.
В лекцию входят:
Встроенная оптимизация Drupal
Оптимизация Drupal с помощью модулей
Оптимизация конфигурации и обслуживания Drupal
Оптимизация сервера

Некоторые сведения неточны, (например, пути в модуле authcache), но разобраться довольно легко.