Я хотел бы использовать меню узлов (см. Изображение) на странице в Drupal.Использование узла-меню на странице
Возможно ли это, и если да, то как?
Я хотел бы использовать меню узлов (см. Изображение) на странице в Drupal.Использование узла-меню на странице
Возможно ли это, и если да, то как?
Если страница, на которую вы ссылаетесь, является настраиваемой страницей из вашего модуля, а «mymodule/page» - это путь к этой странице, для которой вы хотите использовать вкладки «Вид» и «Редактировать», тогда вы должны реализовать hook_menu()
используя код, подобный следующему:
function mymodule_menu() {
$items = array();
$items['mymodule/page'] = array(
'page callback' => 'mymodule_page_view',
'access arguments' => array('view mymodule page'),
);
$items['mymodule/page/view'] = array(
'title' => 'View',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
$items['mymodule/page/edit'] = array(
'title' => 'Edit',
'page callback' => 'mymodule_page_edit',
'access arguments' => array('edit mymodule page'),
'weight' => 0,
'type' => MENU_LOCAL_TASK,
);
return $items;
}
Если страница, которую вы имеете в виду это страница, которая отображается в example.com/mymodule/page, и это должно показать, что вы видите на example.com/node/7, тогда вы можете реализовать следующий код, в Drupal 7:
function mymodule_url_inbound_alter(&$path, $original_path, $path_language) {
if (preg_match('|^mymodule/page|', $path)) {
$path = 'node/7';
}
}
Эквивалент для Drupal 6 записывает следующий код в файле settings.php:
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
if (preg_match('|^mymodule/page|', $path)) {
$result = 'node/7';
}
}
Я не писал симметричный код для hook_url_outbound_alter()
и custom_url_rewrite_outbound()
, как я полагаю, вы не заинтересованы в переписывании example.com/node/7, чтобы он отображался как example.com/mymodule/page, но вы заинтересованы в том, чтобы выглядеть example.com/mymodule/page таким же, как example.com/node/7.
Спасибо! Это было очень полезное решение! – Michiel
Okay; на странице узла обычно есть вкладки «Просмотр» и «Редактирование». Поэтому мой следующий вопрос заключается в том, чтобы задаться вопросом, почему они уже не появляются на вашей странице узла. Вы случайно создали собственный шаблон страницы для этого типа узла и удалили код, который печатает вкладки? Или есть вероятность, что вы вошли в систему как пользователь, у которого нет прав на редактирование этого типа узла?
Должна быть причина, по которой вы не получаете эти вкладки; они должны быть там, по умолчанию.
Если у вас есть собственный шаблон страницы для данного типа узла, искать код, который выглядит примерно так:
<?php if ($tabs): ?>
<div class="tabs"><?php print $tabs; ?></div>
<?php endif; ?>
Если вы не видите подобный код, попробуйте добавить его.
Если вы посмотрите на такой код, попробуйте выделить то, что отличается от этого типа контента, по сравнению с другими типами контента, где вы видите эти вкладки.
Страница является страницей URL-адреса custum. Итак, информация о '$ tabs', которую вы только что описали, присутствует, но по какой-то причине вкладки не отображаются на странице – Michiel
действительно ли вы хотите иметь новую вкладку? –
Нет, я хочу добавить этот кран в место, где оно не появляется ... – Michiel
u может добавлять вкладки с помощью hook_menu() –