Ich verwende Drupal 6 und möchte die $links
Variable so ändern , dass sie programmgesteuert andere Links enthält. Ich habe bei Google hoch und niedrig gesucht, wie dies ohne Erfolg funktioniert. Weiß jemand, wie man das macht?
quelle
Ich verwende Drupal 6 und möchte die $links
Variable so ändern , dass sie programmgesteuert andere Links enthält. Ich habe bei Google hoch und niedrig gesucht, wie dies ohne Erfolg funktioniert. Weiß jemand, wie man das macht?
In Drupal 6 können Sie keine Hooks verwenden oder Hooks in Designs ändern. Sie müssen daher ein benutzerdefiniertes Modul erstellen , um die Links zu ändern. Sobald Sie fertig sind, möchten Sie implementieren hook_link()
(wenn Sie einen neuen Link erstellen) oder hook_link_alter()
(wenn Sie einen vorhandenen Link ändern möchten).
Hinzufügen eines neuen Links:
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;
}
Bestehende Links ändern:
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;
}
In Drupal 7 ist dies etwas einfacher, da Themen Alter Hooks implementieren können. Der Alter Hook, den Sie suchen, ist 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;
}
Sie können dies direkt in Ihre template.php
Datei einfügen.
'href'
Sie einfach den Wert von auf den gewünschten Wert .Angenommen, Sie sprechen von Links, die auf node.tpl.php gerendert werden, müssen Sie hook_link implementieren, z. B. node_link . Und wenn Sie Drupal-Hooks noch nicht kennen, muss dies in einem benutzerdefinierten Modul geschehen. Nehmen wir also an, Ihr benutzerdefinierter Modulname lautet "foo". Sie müssen eine aufgerufene Funktion schreiben,
foo_link
die dieselben Argumente wie hook_link haben sollte.quelle