Как получить переменную $ node родительской страницы в блоке с помощью module_invoke ()? - PullRequest
2 голосов
/ 26 января 2010

Я использую module_invoke(), чтобы включить блок, и мне нужно в этом блоке прочитать значение, содержащееся на моей странице родительского типа контента. Итак, как я могу получить переменную $node в моем блоке из вида?

Код, который я использую:

<?php
    $block = module_invoke('my_blocks', 'block', 'view', 7);
    print $block['content'];
?>

Теперь мне нужно получить доступ к $node в "my_blocks", а переменная пуста. Что я могу сделать, чтобы получить это?

Большое спасибо за любую помощь!

С уважением

Ответы [ 2 ]

1 голос
/ 27 января 2010

Небольшое исправление на пути друпалов:


    function InMODULE_or_InTHEME_get_current_node() {
      if ((arg(0) == 'node') && (is_numeric(arg(1))) && (!arg(2))) return node_load(arg(1));
      return null;
    }

Комментарии: node_load кеширует узлы, поэтому не беспокойтесь о производительности.
"! Arg (2)" проверяет, нет ли у вас режима редактирования узлов (или чего-то подобного).

1 голос
/ 27 января 2010

Я думаю, что модуль context или инструменты хаоса могут помочь с этим, но вот как я недавно сделал то же самое:

function myModule_get_current_node() {
    $path_arr = explode('/', $_GET['q']);
    if ($path_arr[0] == 'node') $result = node_load($path_arr[1]);
    else $result = null;
    return $result;
}
...