Не показывать путь к пунктам подменю в крошке - PullRequest
0 голосов
/ 18 января 2019

Я хотел бы скрыть путь к элементу подменю, который отображается в крошке, когда вы запрашиваете страницу, щелкая подменю.

Вот код, который я использую для создания пункта меню и трех пунктов подменю:

    $items['what-to-expect'] = array(
        'title' => t('What To Expect'),
        'page callback' => 'pvmf_layout_what_to_expect',
        'access arguments' => array('access content'),
        'menu_name' => 'main-menu',
        'type' => MENU_NORMAL_ITEM,
        'weight' => 1,
        'expanded' => TRUE
      );
      $items['what-to-expect/0'] = array(
        'title' => t('Local Event'),
        'page callback' => 'pvmf_layout_what_to_expect_0',
        'access arguments' => array('access content'),
        'type' => MENU_NORMAL_ITEM,
        'weight' => 0
      );
      $items['what-to-expect/1'] = array(
        'title' => t('Online Event'),
        'page callback' => 'pvmf_layout_what_to_expect_1',
        'access arguments' => array('access content'),
        'type' => MENU_NORMAL_ITEM,
        'weight' => 1
      );
      $items['what-to-expect/2'] = array(
        'title' => t('ONE Presenters'),
        'page callback' => 'pvmf_layout_what_to_expect_2',
        'access arguments' => array('access content'),
        'type' => MENU_NORMAL_ITEM,
        'weight' => 2
      );

Вот что я вижу: enter image description here

После того, как я изменил type в определении, вот код, который я получаю:

$items['what-to-expect'] = array(
    'title' => t('What To Expect'),
    'page callback' => 'pvmf_layout_what_to_expect',
    'access arguments' => array('access content'),
    'menu_name' => 'main-menu',
    'type' => MENU_VISIBLE_IN_TREE,
    'weight' => 1,
    'expanded' => TRUE
  );
  $items['what-to-expect/0'] = array(
    'title' => t('Local Event'),
    'page callback' => 'pvmf_layout_what_to_expect_0',
    'access arguments' => array('access content'),
    'type' => MENU_VISIBLE_IN_TREE,
    'weight' => 0
  );
  $items['what-to-expect/1'] = array(
    'title' => t('Online Event'),
    'page callback' => 'pvmf_layout_what_to_expect_1',
    'access arguments' => array('access content'),
    'type' => MENU_VISIBLE_IN_TREE,
    'weight' => 1
  );
  $items['what-to-expect/2'] = array(
    'title' => t('ONE Presenters'),
    'page callback' => 'pvmf_layout_what_to_expect_2',
    'access arguments' => array('access content'),
    'type' => MENU_VISIBLE_IN_TREE,
    'weight' => 2
  );

Но хлебные крошки все еще продолжают показывать. Я попытался очистить кеш, перейдя на Configuration -> Performance, но это не помогло. Что я могу здесь пропустить?

Я проверил, что menu.inc на самом деле содержит:

/**
 * Menu type -- A "normal" menu item that's shown in menu and breadcrumbs.
 *
 * Normal menu items show up in the menu tree and can be moved/hidden by
 * the administrator. Use this for most menu items. It is the default value if
 * no menu item type is specified.
 */
define('MENU_NORMAL_ITEM', MENU_VISIBLE_IN_TREE | MENU_VISIBLE_IN_BREADCRUMB);

1 Ответ

0 голосов
/ 20 января 2019

Используйте type => MENU_VISIBLE_IN_TREE в определении пунктов подменю, чтобы они были видны только в меню, а не в крошке.

Флаги для типов пунктов меню определены в includes/menu.inc. Там мы видим, что флаг MENU_NORMAL_ITEM берет свои биты из побитовой операции ИЛИ MENU_VISIBLE_IN_TREE и MENU_VISIBLE_IN_BREADCRUMB:

/**
 * Menu type -- A "normal" menu item that's shown in menu and breadcrumbs.
 *
 * Normal menu items show up in the menu tree and can be moved/hidden by
 * the administrator. Use this for most menu items. It is the default value if
 * no menu item type is specified.
 */
define('MENU_NORMAL_ITEM', MENU_VISIBLE_IN_TREE | MENU_VISIBLE_IN_BREADCRUMB);

Это означает, что флаг для MENU_NORMAL_ITEM, не отображаемый в крошке, равен MENU_VISIBLE_IN_TREE.

...