J'utilise Drupal 6 et je voudrais modifier la $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?
la source
J'utilise Drupal 6 et je voudrais modifier la $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 cela fait, vous voudrez mettre en œuvre hook_link()
(si vous créez un nouveau lien) ou hook_link_alter()
(si vous souhaitez 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 d'autres crochets. L'autre crochet 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 template.php
fichier.
'href'
que vous souhaitez.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 êtes nouveau dans les hooks drupal, 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.la source