Estoy usando Drupal 6 y me gustaría modificar la $links
variable para incluir otros enlaces mediante programación. He buscado por todas partes en Google sobre cómo hacer esto en vano. ¿Alguien sabe cómo hacer esto?
Estoy usando Drupal 6 y me gustaría modificar la $links
variable para incluir otros enlaces mediante programación. He buscado por todas partes en Google sobre cómo hacer esto en vano. ¿Alguien sabe cómo hacer esto?
Respuestas:
En Drupal 6, no puede usar ganchos o alterar ganchos dentro de los temas, por lo que deberá crear un módulo personalizado para modificar los enlaces. Una vez hecho esto, querrá implementar hook_link()
(si está creando un nuevo enlace) o hook_link_alter()
(si desea modificar un enlace existente).
Agregar un nuevo enlace:
example_link($type, $object, $teaser = FALSE) {
$links = array();
// Add a custom link to nodes
if ($type == 'node') {
$links['example_mylink'] = array(
'title' => t('Test link'),
'href' => 'foo',
'attributes' => array(
'title' => 'Test link',
),
);
}
return $links;
}
Modificación de enlaces existentes:
example_link_alter(&$links, $node, $comment = NULL) {
// Remove the read more link
unset($links['node']['node_read_more']);
// Change the title of the read more link
$links['node']['node_read_more']['title'] = t('More information');
// Move read more link to first slot
$link_read_more = $links['node']['node_read_more'];
unset($links['node']['node_read_more']);
$links = $links['node'];
$links['node'] = array(
'node_read_more' => $link_read_more,
) + $links;
// Move link to the last slot
$link_read_more = $links['node']['node_read_more'];
unset($links['node']['node_read_more']);
$links['node']['node_read_more'] = $link_read_more;
}
En Drupal 7, esto es un poco más sencillo, ya que los temas pueden implementar alter hooks. El gancho alter que estás buscando es hook_node_view_alter()
:
function example_node_view_alter(&$build) {
// Remove the read more link
unset($build['links']['node']['#links']['node-readmore']);
// Add your own custom link
$build['links']['node']['#links']['example-mylink'] = array(
'title' => t('Test link'),
'href' => 'foo',
'html' => TRUE,
'attributes' => array(
'title' => 'Test link',
),
);
// Move read more link to first slot
$link_read_more = $build['links']['node']['#links']['node_read_more'];
unset($build['links']['node']['#links']['node_read_more']);
$links = $build['links']['node']['#links'];
$build['links']['node']['#links'] = array(
'node_read_more' => $link_read_more,
) + $links;
// Move link to the last slot
$link_read_more = $build['links']['node']['#links']['node_read_more'];
unset($build['links']['node']['#links']['node_read_more']);
$build['links']['node']['#links']['node_read_more'] = $link_read_more;
}
Puede colocar esto directamente en su template.php
archivo.
'href'
lo que desee.
Suponiendo que está hablando de enlaces que se representan en node.tpl.php, deberá implementar hook_link, por ejemplo, mire node_link . Y si eres nuevo en drupal hooks, entonces esto debe suceder en un módulo personalizado, así que digamos que el nombre de tu módulo personalizado es "foo", deberás escribir una función llamada foo_link
que debería tener los mismos argumentos que hook_link.