
picture taken by mgallacher
Uma das limitações do Drupal, pelo menos até a versão 6, é a falta de suporte ao uso de HTML nos títulos dos conteúdos. Embora existam bons motivos para não se usar HTML nos títulos, em alguns casos isso é necessário. Infelizmente esta prática acaba gerando uma série de problemas que precisam ser tratados caso a caso.
Um dos problemas está relacionado ao uso do módulo Pathauto para geração de URLs amigáveis (aliases) para conteúdos do Drupal. Como o Pathauto cria as URLs a partir do título, se este contiver tags HTML, essas tags irão aparecer na URL. Por exemplo, a URL de uma página com o título “Sobre a <b>Empresa</b>” seria algo como “/sobre-bempresab”.
A solução que encontrei (com a ajuda do Stack Overflow) baseia-se na modificação do token usado pelo Pathauto como ponto de partida para gerar o alias. Por padrão, o token utilizado é [title-raw], ou seja, o título do conteúdo sem nenhuma alteração. Se precisamos que o alias seja gerado sem as tags HTML, basta criar um novo token que forneça ao Pathauto o título já com as tags HTML removidas. Isso pode ser feito através dos hooks disponibilizados pelo módulo Token.
Os dois hooks que precisam ser implementados são o hook_token_list, que retorna uma lista com os tokens disponíveis, e o hook_token_values, que retorna o valor para um determinado token.
Considerando que os hooks serão implementados em um módulo de customizações chamado Tweak, o código para a criação do novo token para o Pathauto ficaria assim:
function tweak_token_list($type = 'all') {
$tokens = array();
if ($type == 'node' || $type == 'all') {
$tokens['node']['clean-title'] = 'Node title without HTML tags';
}
return $tokens;
}
function tweak_token_values($type, $object = NULL, $options = array()) {
$tokens = array();
if ($type == 'node') {
$node = $object;
$tokens['clean-title'] = strip_tags($node->title);
}
return $tokens;
}
Com os hooks implementados, basta configurar o Pathauto para usar o token ‘clean-title’, ao invés do ‘title-raw’. Isto é feito na seção “Node path settings” da página “Automated alias settings”.