Есть ряд блоков, которые показываются только на некоторых страницах (не более 100-150)
Вариантов сделать несколько, но стоит ли в плане производительности
Можно через template.php для этих 100 страниц задать отдельный шаблон в котором будут доп регионы в которые и вывести блоки, а можно в каждом блоке прописать на каких страницах показывать этот блок
Второй вариант не удобен, а с первым вариантом не выйдет ли затык какой по производительности? Или первый вариант заменить на модуль типа [module=themekey]
Посоветуйте, пожалуйста
Комментарии
1.Если вы просто уберете регион из шаблона, блоки в этом регионе всеравно будут "создаваться", просто выводиться не будут.
2.Если вы укажете, на каких страницах показывать блок, особенно если адрес можно задать шаблоном(node/*), это будет производительнее..
почему первый вариант - проблемный?
orion76
Хм блоки будут создаваться в регионе, который не выводится в шаблоне/на странице? странно..
Увы вывести по шаблону блоки не получится, если бы это можно было бы я бы конечно сделал бы так
alex_shut
первый вариант наоборот не проблемный, а предпочтительный, просто опасаюсь в плане быстродействия от такого кода типа
if (isset($vars['node']) && (
$vars['node']->nid == 56 ||
$vars['node']->nid == 7 ||
$vars['node']->nid == 889 ||
$vars['node']->nid == 903 ||
$vars['node']->nid == 5673 ||
$vars['node']->nid == 327 ||
$vars['node']->nid == 670 ||
$vars['node']->nid == 116 ||
$vars['node']->nid == 110 ||
$vars['node']->nid == 380 ||
$vars['node']->nid == 159 ||
$vars['node']->nid == 3720 ||
$vars['node']->nid == 396
))
{
$vars['template_files'][] = 'page-country';
}
}
по типу материала не складывается чтоль?
Или по некоему общему признаку через тот-же if
увы по типу материала я так же подставляю свой шаблон.
Возможно ли интересно сделать на основе url. общего в этих страницах то что url выглядит
site/alias/page
тогда как у всех остальных страниц
site/alias/page/page
или
site/alias/page/page/page
in_array() ? Не, не слышал. Хотя это не прибавит к производительности, если будете подходить к решению проблем через шаблоны.
ничего странного... все логично...-))
Когда Друпал "собирает" страничку, он незнает, какие регионы выводятся в шаблоне странице..
Он просто получает список регионов..
Получает информацию о блоках..
Проверяет - какие блоки отображаются на странице(например по настройке блока - отображать на определенных страницах)
Генерирует нужные блоки и "вставляет" их в регионы..
Ну а если в шаблоне регион отсутствует... то он просто не выводиться..
неужели нельзя каким то образом на аргументы завязаться и выводить через вьюс?
q2_faith
через вьюс обычные страницы? хм... блоки с аргументами я вывожу, а вот чтобы обычные страницы.. через вьюс еще и шаблон? А как шаблон будет понимать аргументы?
Если вам не сложно, напишите, пожалуйста, поподробней
orion76
Получается если у меня от вьюса блоков штук 30, которые выводятся в разные регионы, то при генерировании страницы друпал генерирует все эти блоки? Или я не верно понял?
какой шаблон?
В большинстве случаев,если в настройках блока нет других настроек видимости, то да...
PS..Кстати, для настройки "сложной" логики вывода контента есть модуль
http://drupal.org/project/context
может пригодиться..
Почему бы тебе эти отдельные страницы не именовать синонимами по какому то отличному шаблону и в настройках видимости блока проставить этот шаблон?
/somepage/infa-1
/somepage/infa-2
somepage/*
q2_faith
Вьюсом выводить эти страницы сложно так как там другие сложности появляются да и аргументы не помогут только если ввести какой-нибудь чекбокс и по нему фильтровать, но в любом случае это не удобно
orion76
В настройках модуля, как правило пишу видимость, но если не написать выходит он сгенерируется для всех страниц? Попробую потестировать на досуге, действительно ли блоки все генерируются даже если на странице нет региона в котором этот блок выводится... не верится
все хотел познакомиться с этим модулем да все как-то не сталкивался с ним.
natbampo
Этот вариант не хотел использовать так как изначально создавал цепочку url чтобы продвинутые пользователи могли видеть по url как глубоко они в сайте. Может это и глупо.
А что тут проверять..
Страница генерируtтся функцией theme('page', $return);(index.php).
Которая, в свою очередь, получае список регионов для текущей темы..
И для каждого региона вызывается функция theme('blocks',$region)..
В которой функцией block_list($region) получается список блоков для региона, проверяются параметры видимости блока, и генерируется его содержимое..
http://api.drupal.ru/api/function/block_list/6
orion76
Получается, обязательно надо указывать параметры видимости блока? Чтобы этот блок не генерировался на всех страницах, если показывается он только на 10-ти страницах и только в одном разделе сайта? Иначе это лишняя нагрузка? Верно я понял?
теоретически - да..
А практически - если содержимое блока меняется не часто, и настроено оптимальное кеширование блока, то лишняя нагрузка незначительна-))
Вы бы объяснили принцип, по которому определяете, для какой ноды показывать блок,а для кокой нет..
И что это за блоки..
Возможно, нашли бы оптимальное решение..
orion76
Это ноды связанные между собой через node reference
Корневая нода / нода раздела-1 / нода раздела-1-2 / нода-1-3
(Нода-1-3 имеет связь к ноде-1-2, а нода-1-2 имеет связь к ноде-1)
Блоки это вьюсы выводящие информацию по аргументам в каждой из нод + вьюсы, которые помимо что выводятся только в своем разделе выводятся на конкретной странице или группе того раздела.
Вывод их идет по аргументу + по настройке видимости, но вот для нода раздела-1 такой принцип не подойдет или в качестве фильтра или аргумента должна выступать связь к корневой ноде. Как просто со связью сделать я знаю, не знаю можно ли только указать к чему конкретно связь допустима, а к чему нет
Оно понятно.. вы отлично знакомы со структурой своего сайта и отлично представляете,что должно получиться в результате..
И то что вы написали выше - для вас очевидно...
а для нас - нет..
Короче...
практически ничего не понятно-))
Перечитав свое же, понял, что то, что крутилось в голове не сработает...
Может добавить нужным нодам технический термин и по нему выводить? ...
через вьюс
q2_faith
конечно через views! Наверное такой способ будет лучшем чем через template.php менять шаблон для части нод? Или одна малина ...
с точки зрения дальнейшей поддержки вьюс предпочтительней