joomla-2.5 — Como obter o Itemid por URL e passá-lo para o JRoute
/Como obter o Itemid por URL e passá-lo para o JRoute
Eu tenho um item de menu para uma exibição específica em um componente personalizado. Anexado a este item de menu, tenho outro Template Style Selecionado, não o modelo padrão. O acesso à visualização pelo menu funciona bem, pois está anexando à URL o Itemid.
Agora, quero vincular, usando o JRoute, uma visualização com outra, no entanto, o JRoute não está gerando a URL desejada.
JRoute não anexará o Itemid ao URL, fazendo com que o estilo de modelo selecionado para o item de menu não funcione.
Existe uma maneira de "calcular" o Itemid (além de fazer uma consulta na tabela jos_menu Na coluna link) e anexá-la ao JRoute?
Aqui está uma técnica que eu usei (não me lembro onde a encontrei).
Isso fez maravilhas para mim.
a saída do JRoute dependerá da sua alimentação.
pode retornar algo mais do que
De fato, se você tiver uma lista de blogs de categoria de item de menu para catid = 5, o último poderá fornecer o URL do menu (não testei esse URL exato). Tente com diferentes parâmetros de obtenção para obter resultados diferentes (às vezes muito errados, como o @Fedik disse)
7 de mai. de 2014 jonasfh
A chave aqui é configurar o arquivo router.php dos componentes (que deve ser encontrado na pasta raiz do seu componente no front-end) com uma lógica que irá procurar e selecionar o item de menu apropriado. Eu adoraria ver isso acontecer automaticamente, mas, tanto quanto sei, não é esse o caso.
Provavelmente, seria melhor trabalhar esse bloco de código em algum tipo de função auxiliar que possa ser usada para encontrar automaticamente o item de menu mais adequado ao conteúdo.
Aqui está o código que eu usei em vários dos meus componentes personalizados para obter o item de menu mais adequado:
Tudo isso é uma bagunça (e eu adoraria melhorias se alguém as tiver!), Mas faz o trabalho. Se o item de menu atual for a melhor correspondência, ele sempre permanecerá com isso.
Caso contrário, ele deve encontrar a melhor correspondência com base em Nome do componente -> nome da exibição -> nome do layout -> valor do ID. Quanto mais à direita corresponder, melhor considero a partida!
O Afaik JRoute utilizará o ativo Itemid (e também o ativo option) se nenhum for fornecido. Se isso não funcionar, significa que a chamada para o seu código vem sem o Itemid, para começar. Nesse caso, o mais fácil seria adicionar o Itemid à chamada inicial.