Используйте узел меню на странице - PullRequest
0 голосов
/ 05 января 2012

Я хотел бы использовать меню узла (см. Изображение) на странице в Drupal.

enter image description here

Возможно ли это, и если да, то как?

Ответы [ 2 ]

1 голос
/ 09 января 2012

Если страница, на которую вы ссылаетесь, является пользовательской страницей, выводимой из вашего модуля, а «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.

1 голос
/ 06 января 2012

Хорошо;страница узла обычно имеет эти вкладки Просмотр и Редактирование.Поэтому мой следующий вопрос - удивляться, почему они не появляются на странице вашего узла.Вы случайно создали пользовательский шаблон страницы для этого типа узла и удалили код, который печатает вкладки?Или есть вероятность, что вы вошли в систему как пользователь, у которого нет прав на редактирование этого типа узла?

Должна быть причина, по которой вы не получаете эти вкладки;по умолчанию они должны быть там.

Если у вас есть пользовательский шаблон страницы для этого типа узла, найдите код, который выглядит примерно так:

        <?php if ($tabs): ?>
          <div class="tabs"><?php print $tabs; ?></div>
        <?php endif; ?>

Если вы этого не сделаетепосмотрите код, попробуйте добавить его.

Если вы ДЕЙСТВИТЕЛЬНО видите код, попробуйте выделить различия в этом типе контента по сравнению с другими типами контента, где вы действительно видите эти вкладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...