Tôi đang sử dụng Drupal 6 và muốn sửa đổi $links
biến để bao gồm các liên kết khác theo chương trình. Tôi đã tìm kiếm cao và thấp trên Google về cách làm điều này vô ích. Có ai biết làm thế nào để làm điều này?
Tôi đang sử dụng Drupal 6 và muốn sửa đổi $links
biến để bao gồm các liên kết khác theo chương trình. Tôi đã tìm kiếm cao và thấp trên Google về cách làm điều này vô ích. Có ai biết làm thế nào để làm điều này?
Câu trả lời:
Trong Drupal 6, bạn không thể sử dụng móc hoặc thay đổi móc trong chủ đề, vì vậy bạn sẽ cần tạo một mô-đun tùy chỉnh để sửa đổi các liên kết. Sau khi hoàn thành, bạn sẽ muốn triển khai hook_link()
(nếu bạn đang tạo một liên kết mới) hoặc hook_link_alter()
(nếu bạn muốn sửa đổi một liên kết hiện có).
Thêm một liên kết mới:
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;
}
Sửa đổi các liên kết hiện có:
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;
}
Trong Drupal 7, điều này đơn giản hơn một chút, vì các chủ đề có thể thực hiện các móc thay đổi. Móc thay đổi mà bạn đang tìm kiếm là 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;
}
Bạn có thể đặt nó trực tiếp trong template.php
tập tin của bạn .
'href'
bất cứ thứ gì bạn muốn.
Giả sử bạn đang nói về các liên kết được kết xuất trên node.tpl.php, bạn sẽ cần triển khai hook_link, ví dụ như nhìn vào node_link . Và nếu bạn chưa quen với hook drupal thì điều này cần phải xảy ra trong một mô-đun tùy chỉnh, vì vậy giả sử tên mô-đun tùy chỉnh của bạn là "foo", bạn sẽ cần phải viết một hàm được gọi là foo_link
có đối số tương tự như hook_link.