Até agora, deparei-me com essas três funções no Drupal 7, mas não tenho muita certeza de qual é a diferença entre elas e qual é mais apropriada para obter o ID do nó em uma função de pré-processo de bloco.
Você pode me dar alguma ideia?
Até agora, deparei-me com essas três funções no Drupal 7, mas não tenho muita certeza de qual é a diferença entre elas e qual é mais apropriada para obter o ID do nó em uma função de pré-processo de bloco.
Você pode me dar alguma ideia?
Respostas:
menu_get_object()
retornará o objeto do nó cujo ID é 1; se a página exibida for example.com/user/1,menu_get_object('user')
retornará o objeto de usuário para o usuário cujo ID é 1.node_load
) a ser chamada para carregar um objeto correspondente a uma parte do caminho atualdrupal_lookup_path("homepage")
retornará"node/1"
. Os aliases de caminho podem ser associados a qualquer caminho interno, não apenas aos caminhos do nó.Se tudo o que você deseja obter é o ID do nó mostrado atualmente, basta usar o seguinte código:
Se você precisar obter o objeto nó, poderá usar o seguinte código:
Desses fragmentos, o segundo é melhor, pois retorna o objeto de nó correto para caminhos internos, como node / 1 / revisions / 3 / view.
Lembre-se de que algumas funções de pré-processamento, como as da página ou do nó, já possuem um
$variables['node']
. Isso significa que, nesses casos, você só precisa usar o seguinte snippet na sua função de pré-processo, sem se preocupar com qual função usar.Para outras funções de pré-processo, verifique a documentação para ver se há alguma variável que contenha o objeto nó. Por exemplo, esse é o caso para o
template_preprocess_comment()
qual$variables['node']
disponibiliza as funções de pré-processo para comentários.fonte
Como isso é feito na template_preprocess_page do Drupal Core :
Linha 2267 do theme.inc e seguintes:
template_preprocess_page usa menu_get_object . Depois disso, basta verificar se o nó está definido e obter $ node-> nid.
fonte
Uma coisa que você deve ter cuidado é o alias do caminho.
drupal_get_normal_path($path)
para obter o caminho atual, use a variável do sistema
$_SERVER["REQUEST_URI"]
(Se você estiver na página do nó para a qual você pode ligar
$node->uri['path']
, isso retornará um caminho sem alias. Então, novamente, se você estiver na página do nó, poderá usar apenas$node->nid
.)isso retornará o nó / XXXX
então tente algo como
fonte
Não é uma maneira ruim de fazê-lo. arg () funciona no caminho interno, portanto não será afetado pelos aliases do caminho.
fonte
menu_get_object
(o que envolve apenasmenu_get_item
isso é igualmente bom).if (arg(0) == 'node' && is_numeric(arg(1)))
entãoarg(1)
, para quase 99%, você retornará um ID do nó. Mas um únicoarg(1)
também pode retornar muitos outros IDs.No Drupal 8, você pode obter argumentos de URL com base no conteúdo do roteamento.
Para obter o ID sozinho:
Se você planeja carregar o objeto nó, você pode simplesmente obtê-lo desta maneira:
Para encontrar os nomes dos parâmetros, você pode usar:
fonte