Estou ocupado trabalhando em um site no meu host local que precisa vincular a algum conteúdo separado do Drupal.
Eu tenho os caminhos de menu atuais configurado como este: http://mylocalsite/the_folder_for_the_other_content
. Se eu tentar
<front>/the_folder_for_the_other_content
ou /the_folder_for_the_other_content
ou the_folder_for_the_other_content
, recebo o erro "O caminho 'qualquer_I_utilização' é inválido ou você não tem acesso a ele."
Quando vou ao ar, obviamente preciso de todos os itens de menu para apontar http://myrealsite/the_folder_for_the_other_content
.
Como posso configurá-lo para não precisar editar todos os caminhos do menu quando for ao ar?
http://example.com/
.Respostas:
a resposta de kiamlaluno não funcionou muito bem para mim. O uso de% menu_tail produziu uma tempestade de erros que a função menu_tail_load estava tendo problemas com argumentos ausentes:
O que funcionou para mim foi
Então, eu poderia servir arquivos na pasta sites / d8 / files (e subpastas) usando itens de menu com caminhos como
sites/d8/files/Documents/MyFile.pdf
O sistema de menus gerará um link como
href="/drupal//sites/d8/files/Documents/MyFile.pdf"
Se você não usar o módulo de menu personalizado, o sistema de menus rejeitará um caminho que começa como acima.
Se você tentar usar um caminho como
http:sites/d8/files/Documents/MyFile.pdf
, ele produzirá um link comohref="http:sites/d8/files/Documents/MyFile.pdf"
, que funcionará quando você estiver na raiz do site, mas quando estiver em uma página de conteúdo, o navegador interpretará o URL relativo à página de conteúdo, e não vai funcionar.Se você usar um caminho como
http:/sites/d8/files/Documents/MyFile.pdf
, o sistema de menus o aceitará, mas o sistema de menus produzirá um link como ohref="http:/sites/d8/files/Documents/MyFile.pdf"
qual o navegador (pelo menos o Safari) interpretará comohref="http://sites/d8/files/Documents/MyFile.pdf"
, e falhará ao tentar encontrar o servidor chamado "sites".(Em uma investigação mais aprofundada, o motivo pelo qual o código usando menu_tail falha é que você precisa adicionar os 'argumentos de carregamento', conforme observado aqui: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Se você adicionar
'load arguments' => array('%map', '%index'),
à definição de $ items no código de kiamlaluno, ele funcionará. A questão de se menu_tail_load deve exigir argumentos explícitos de carga também é discutida aqui: http://drupal.org/node/298561 )(Não esqueça de ativar seu novo módulo, ou o sistema de menus não aceitará os novos links)
fonte
Quando você adiciona um novo link, o link é validado em menu_edit_item_validate () , que chama drupal_valid_path () para verificar se o caminho é válido ou pode ser acessado pelo usuário.
drupal_valid_path()
retornaTRUE
se<front>
(<front>/directory
ou caminhos semelhantes são excluídos)TRUE
)Além de usar URLs absolutos, a única solução é ter um módulo personalizado que define um retorno de chamada do menu associado ao caminho que você deseja usar.
Quando você usa a URL que aponta para um arquivo ou diretório, o servidor da Web deve mostrar esse arquivo ou diretório, sem chamar o Drupal. É o que acontece com o Apache, pois o arquivo .htaccess que acompanha o Drupal contém as seguintes diretivas:
No seu caso, o módulo personalizado deve conter código semelhante ao seguinte:
Você pode usar quaisquer valores para retorno de chamada de título e página , pois esse retorno de menu nunca deve ser chamado. O valor do retorno de chamada de acesso diz ao Drupal que todo usuário tem acesso a esse retorno de menu.
Como alternativa, você pode definir um retorno de chamada de menu associado a "alias_para_diretório /% menu_tail" que redireciona o usuário para o diretório que você deseja que ele veja (usando drupal_goto () ). Eu usaria essa solução quando o servidor não usasse o conteúdo de .htaccess e invocaria o Drupal mesmo quando a URL estiver apontando para um arquivo ou diretório existente.
fonte
Para mim, o seguinte foi o truque (no drupal 6).
Eu quero direcionar para outro URL no mesmo domínio, digamos que o Drupal esteja em execução
http://www.example.com
e eu quero ter um link parahttp://www.example.com/frontend
No item de menu, insira como caminho:
O menu drupal será vinculado a:
http://www.example.com/frontend
Ao usar https, você deve inserir https: / frontend no campo de caminho do item de menu.
fonte
Resolvi meus problemas de link com o seguinte:
http://groups.drupal.org/node/210308 e http://drupal.org/node/372252
Acontece que meu tema estava imprimindo o menu incorretamente, de modo que todos os itens eram relativos à minha localização atual (por exemplo, admin / logout, em vez de / logout).
Espero que isto ajude.
fonte
Eu usei o sql para substituir o link na estrutura do menu:
Não tenho certeza se eu precisava fazer isso, mas limpei os caches de menu.
fonte