J'utilise Drupal 6 et je voudrais modifier le $links
variable pour inclure d'autres liens par programmation. J'ai cherché haut et bas sur Google sur la façon de faire cela en vain. Est-ce que quelqu'un sait comment faire ça?
Dans Drupal 6, vous ne pouvez pas utiliser de hooks ou modifier les hooks à l'intérieur des thèmes, vous devrez donc créer un module personnalisé pour modifier les liens. Une fois terminé, vous voudrez implémenter hook_link()
(si vous créez un nouveau lien) ou hook_link_alter()
(si vous voulez modifier un lien existant).
Ajout d'un nouveau lien:
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;
}
Modification des liens existants:
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;
}
Dans Drupal 7, c'est un peu plus simple, car les thèmes peuvent implémenter des crochets alter. Le crochet alter que vous recherchez est 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;
}
Vous pouvez le placer directement dans votre fichier template.php
.
En supposant que vous parlez de liens qui sont rendus sur node.tpl.php, vous devrez implémenter hook_link par exemple regardez node_link . Et si vous débutez avec drupal hooks, cela doit se produire dans un module personnalisé, alors disons que le nom de votre module personnalisé est "foo", vous devrez écrire une fonction appelée foo_link
qui devrait avoir les mêmes arguments que hook_link.