Как убрать кто в online?
Интересует именно убирание запросов к базе данных (которых от него не мало).
Т.е. как убрать не как блок, а именно вообще его убрать нафиг, потому что если я убираю его как блок - то обращение к БД всё равно продолжается....
Как убрать???
Комментарии
Я так понял это намертво там? Не убирается?
Просто странный вопрос был. Имхо ты что-то перепутал.
Вот эти запросы в тексте блока who's online:
<?php
$guests = db_fetch_object(db_query('SELECT COUNT(sid) AS count FROM {sessions} WHERE timestamp >= %d AND uid = 0', time() - $time_period));
$users = db_query('SELECT uid, name, access FROM {users} WHERE access >= %d AND uid != 0 ORDER BY access DESC', time() - $time_period);
?>
если выключить блок, то этот код отрабатываться не будет. Если же всё равно видишь запросы к таблице users или sessions, то это для каких-то других целей, не для данного блока.
--
Администратор сайта «Drupal — Россия»
на вопросы по Drupal отвечаю только на форумах, не пишите в почту и приватом!
Если не ошибаюсь, про блоки тема уже обсуждалась. Высказывалась мысль, что блоки обрабатываются **до** анализа их состояния (вкл/откл). Поэтому отключение блока не вызовет отключение его обработки. Поправьте если не прав.
По-моему немного немного не так. Включенные блоки грузятся не зависимо от того показываются они на странице или нет.
Этого просто НЕ МОЖЕТ БЫТЬ.
как это включённые блоки не показываются?
Значит что если блок показывается только на главной, или только в блогах то грузиться будет на всех страницах.
Так же например если у вы переделали главную страницу, например убрали с нее все тизеры (т.е. на главной нет никаких постов), то все равно будут грузиться n записей с пометкой "помещено на главную страницу". n - устанавливается в настройках
Вот только что проверил в 5.0-beta2
Создал модуль с выводом блока
if ($op == 'list') {
$blocks[0]['info'] = t('Test block');
return $blocks;
}
else if ($op == 'view') {
echo "test"; //<- выводим сообщение сразу в поток
$block = array();
global $node;
global $nid;
$block['subject'] = t('Test block');
$block['content'] = "This is test =)";
return $block;
}
}
1. Включил блок, он появился, помимо этого в самом начале страницы вывелся test...
2. В настройках блока сделал чтобы блок был виден только на главной странице. Перешел на главную: виден и текст и блок, перешел в админку, блок не виден, текст тоже...
3. Выключил блок. Ни блок? ни текст нигде не отображается.
Можно было бы предположить, что данный хук выполняется всегда, ф-я возвращает что-то, а друпал решает показывать это или нет в зависимости от видимости блока. Но на echo - которая выводит текст прямо в поток вывода это не распространяется. Вывод - нифига код не выполняется если блок на данной странице не отображается... Хотя может в 4.7 все по другому, но сомневаюсь.
Он и не будет отображаться.
Давно смотрел, но суть в том, что друпал сначала пробегает по базе собирает всю инфу а потом в самом конце делает вывод. Проверять нужно модулем devel, смотреть список запросов.
Предпоследний запрос system_region_list - это он спрашивает какие регионы задействованы в шабллоне. При том что вся выборка уже сделана. Это значит что если вы в теме определенного раздела отключить регион, например в форуме вместо 2 колонок будет одна, то на выборку из базы это никак не отразится, читай будут загружены блоки из обоих колонок.
Тут еще писал http://drupal.ru/node/2270