Вы здесь

Вычислить значение 1 раз на странице списка нод, а использовать много раз в node_preprocess?

0

Здравствуйте.
Есть ноды - товары. У товаров есть куча характеристик, реализованых в виде 2х-уровнего словаря таксономии, родитель - название свойства, дети - значения свойства. В поле ноды хранятся значения свойств.
Есть список товаров. Вьюз выводит готовые сущности вида Анонс. Часть свойств нужно выводить в этом списке, для каждой ноды. Выводить в виде назание свойства + значение свойства.
Чтобы уменьшить количество запросов к БД, я подумал, что неплохо было бы однажды на страницу дёрнуть весь словарь taxonomy_get_tree, распихать в массив красиво и потом каждый раз в node_preprocess искать в этом массиве нужные свойства и их названия. Чтобы не дёргать базу на каждой ноде. Так вот, как бы это правильно сделать?
Думал cделать taxonomy_get_tree в page_preprocess, но не придумал как передать этот массив в node_preprocess. Может, как-то можно совсем по-другому сделать? variable_set и variable_get?

Версия Drupal: 
7.x
Категория: 
Performance
Вопрос задан 23.12.2015 - 01:46

или вообще однажды его дёрнуть в память, словарь этот. Чего его каждый раз гонять?

Комментарий оставлен 23.12.2015 - 01:50

Ответы

0
function MODULE_init(){
    $terms = &drupal_static('terms');
    $terms = taxonomy_get_tree(...);
}

function MODULE_preprocess_node(&$vars){
    $terms = &drupal_static('terms');
}
Ответ дан 23.12.2015 - 06:08
0

&drupal_static(FUNCTION); + taxonomy_get_tree + taxonomy_load_multiply

Ответ дан 23.12.2015 - 08:31