Pergunta

Eu tenho um problema com caminhos Drupal em um ponto de vista que eu construir. Agora minha visão tem esta forma:. Conteúdo / 2/6

Onde 2 e 6 são os IDs de dois nós, eu gostaria de manipular esses ids para traduzi-los, digamos que o título desses nós.

Eu não posso fazer isso do ponto de vista porque eu estou enviando esses valores para um painel, eo mosto painel recebeu os ids dos nós.

Assim, para resumir, eu só quero reescrever (como pathauto faz) estes ids ao título, eu posso fazer isso? Existe um módulo específico para isso?

Obrigado!

Foi útil?

Solução

Se eu entendi corretamente, você quer manter 'content / [nid_x] / [nid_y]' os caminhos originais, mas adicionar aliases URL adicionais para aqueles com mais 'língua' elementos de caminho dos nós (por exemplo, títulos). Se isso estiver correto, você tem duas opções:

Primeiro, você pode fazê-lo manualmente, definindo aliases URL para 'content / [nid_x] / [nid_y]' sob 'admin / build / caminho / add'. Isso é fácil de fazer, mas provavelmente não o que você está procurando, se você precisar de muitos desses aliases.

Em segundo lugar, você pode fazê-lo por meio de programação por meio da função path_set_alias() . Usando a função é bastante simples - o único problema pode ser que para provocá-lo. De sua descrição não é claro para mim onde / quando essas opiniões são criados, por isso é difícil para chegar a uma sugestão - talvez você pode editar a sua pergunta a ser um pouco mais específico em que

.

Se você quiser criar esse aliases vista de URL para combinações nó específico, você pode tentar usar a 'inserção', 'update' e operações de 'apagar' de hook_nodeapi() para acionar a criação alias. Obviamente, isso só iria funcionar se houver uma regra coerente que lhe permitiria decidir a partir do código para o qual nós para criar um alias ou não.

Uma vez que você tem um apelido URL no local por um certo caminho, ele será usado em vez do original sempre que um link para esse caminho é criado através do l () a função . Assim, por exemplo, se você criar uma entrada de menu apontando para 'content / 2/6', o URL usado seria automaticamente o alias criado para esse caminho.


Edit: Só no caso de você acabar criando aliases programaticamente - Se você usar pathauto de qualquer maneira, você poderia / deveria usar sua pathauto_cleanstring()function (de 'pathauto.inc') para garantir que seus URLs gerados são devidamente escapou / reescrito para caracteres permitidos .

Outras dicas

Há uma maneira de usar a função url personalizado para criar URLs personalizados dedicados. Se você estiver usando painéis embora eu não tenho certeza se você vai querer fazê-lo desta maneira, porque é muito estático.

function custom_url_rewrite($op, $result, $path) {

  if ($op == 'alias') {
    if (preg_match('|^[node_id#_here](/{0,1}.*)|', $path, $matches)) {
      return '[desired_alias]'. $matches[1];
    }
  }

  if ($op == 'source') {
    if (preg_match('|^[node_id#](/{0,1}.*)|', $path, $matches)) {
      return '[desired_source]'. $matches[1];
    }
  }

  return $result;

}

Você vai querer substituir o nó id # é com seu próprio, bem como seus próprios aliases e fontes desejados. Espero que isso ajude.

Talvez útil aswell:

alterar os links que iniciam usando a fim de construir o link usando substituição de token como <a href="nodeview/[title]/nid" title="[title]">link tekst</a> e lidar com o nó em uma visão com o caminho nodeview exa e argumentos null, null, f.i nid.

para links mais complicadas nos um campo de visão php para construir a string ..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top