Drupal7

Тормозит постраничный вывод через View при большом количестве записей

9 ноября 2010 в 23:50

Вывожу через View статьи (постраничный вывод, на одной странице 20 статей). При малом количестве статей все нормально, но решил проверить как отразится на производительности большое количество статей.

Для эксперимента забил через скрипт в базу 1КК статей и попробовал отобразить первую страницу.... Как же долго я ждал Sad
Я конечно понимаю, что ему нужно выполнить SELECT COUNT(*) FROM QUERY для того, чтобы показать общее количество статей и построить правильную ссылку на последнюю страницу. Но мне не нужна ссылка на 15267 страницу.

Простой выход из данной ситуации я увидел в том, что можно просто вывести 20 статей на странице(не подсчитывая COUNT(*)) и показать ссылку на следующие 20. Вроде в настройках view это можно настроить (Mini Pager), вот только эффекта от этого нет (видимо он все равно подсчитывает COUNT(*)).
Если показывать первые 20 записей без pager'a - то все работает моментально.

Поэтому вопрос - как можно быстро показать первые 20,50,100 записей (не подсчитывая общее количество), но показать ссылки на следующие/предыдущие страницы?

Или придется писать самому с помощью модуля?

ЗЫ:
СУБД - PostgreSQL 9.0
Drupal 7 dev

[Решено] Получить строку запроса

9 ноября 2010 в 12:45

Пишу модуль-надстройку над Global Redirect для корректного транслирования алиасов типа ?p=33. Идея - перехватываю такой алиас, транслирую его в соответствующий clean url, и отдаю по drupal_goto.

Перехват урла делаю по хуку hook_init(). Для своего модуля задал приоритет выполнения выше, чем у Global Redirect (через апдейт таблицы system в hook_install моего модуля), чтобы мой перехват срабатывал перед глобал редиректом.

Уперся в следующую проблемму: как получить строку урла такой, какой она есть? Смотрел devel'ом через $_GET, там вместо ?p=33 лежит "распарсенное" значение:

Вывод на главную последних записей причисленных к определенному термину

8 ноября 2010 в 2:38

Можно ли стандартными средствами Drupal 7 настроить вывод на главную последних записей причисленных к определенному термину?

В drupal 6 данную проблему решал так:


<?php global $user;

if(

drupal_is_front_page()){ ?>
<?php

$taxo_id 

10;  // ID термина
$list_no =3;  // Количество выводимых записей
$sql "SELECT node.title, node.nid FROM node INNER JOIN term_node ON node.nid = term_node.nid WHERE term_node.tid = $taxo_id AND node.status = '1' ORDER BY node.created DESC LIMIT $list_no";
$left=$right='';
$result db_query($sql);
while (
$anode db_fetch_object($result)) {
if
(!
$left) {
$node=node_load($anode->nid);
$left='
<b>'
.l($node->title"node/$anode->nid").'</b><br>
'
.($node->field_imagefield[0]['filename']?l('<img src="http://ВАШСАЙТl.ru/files/imagecache/1/'.$node->field_imagefield[0]['filepath'].'" alt="" style="float:left;margin:5px" />',"node/$anode->nid",array(),null,null,false,true):'').$node->teaser.'<br><br>Еще РЅРѕРІРѕСЃС‚Рё:';
} else {
$right.="- ".l($anode->title"node/$anode->nid")."<br>";
}
}

$output='
<br>'
.$left.'<br>'.$right.'<br>';
print 
$output;

}

?>

В drupal 7 данный код не работает, так как изменилась структура БД. Мб у кого-то уже есть обновленный код данного скрипта?

Настройка отображения анонса

8 ноября 2010 в 2:26

Можно ли стандартными средствами Drupal 7 настроить отображение анонса у определенного типа материала? В частности настроить вывод в анонсе только уменьшенной копии каринки, которая присутствует в полной версии материала?

прежде чем писать на форум

7 ноября 2010 в 14:31

перед написанием на форум о проблеме сделай следующее:
- вычисти кеш друпа
- вычисти кеш браузера с кукисами
- пни крон
- перестрой права доступа admin/content/node-settings/rebuild
- обнови страницу

Помогите сделать фильтр

6 ноября 2010 в 15:32

Делаю магазин нужно сделать гибкий фильтр, чтото вроде найти товар выбрать цвет, размер или фирму, искать по одному двум или трём критериям. В идеале сделать как здесь http://hotline.ua/gd/12/872/ . Может есть какойто модуль ?

Drupal 7. Форма создания ноды раскрывается на весь экран. Как убрать?

3 ноября 2010 в 21:53

Как сделать так, чтобы при создании ноды форма с полями находилась справа от меню(аналогично 6-му друпалу), а не раскрывалась на весь экран?
И почему при создании ноды используется админская тема?

Вот так было в 6-м друпале:
http://img573.imageshack.us/img573/1055/40324683.png

В 7-м стало так:
http://img219.imageshack.us/img219/5452/36029011.png

[Решено] Global Redirect и специфические алиасы

3 ноября 2010 в 17:10

Собственно, вопрос:

Может ли Global Redirect обрабатывать алиасы типа ?p=33 ? То есть алиасы в формате запроса.

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

Например: есть стандартный друпальный адрес domain.com/node/111, который нужно подменять на domain.com/?p=256.