Drupal - пункты меню, ссылающиеся на один и тот же узел, отображают не все дочерние элементы - PullRequest
2 голосов
/ 15 февраля 2011

У меня есть такая структура меню:

-меню уровня предмета 1

- уровень пункта меню 2

--- уровень пункта меню 3

все элементы связаны с одним и тем же узлом. Теперь, если я посещаю узел, отображаются только первые два элемента. что я узнал, так это то, что когда я меняю ссылку на пункт меню первого уровня на что-то другое, все уровни отображаются правильно.

Модули меню, которые я использую:

  • Блок меню

  • Настройки меню для каждого типа контента

  • Меню Trails

  • Меню администрирования

  • Название меню Auto

  • Иерархический выбор

есть идеи?

спасибо

Lukas

Ответы [ 3 ]

3 голосов
/ 24 августа 2011

googletorp прав - основная система меню Drupal не предназначена для этого.Однако вы можете использовать обходной путь.

Допустим, вы хотите создать вложенное меню, в котором один из дочерних элементов ссылается на тот же путь, что и его родительский элемент.Примерно так:

  • люди / друзья
  • люди / друзья
  • люди / семья
  • люди / соседи

Теоретически это работает - пункты меню перенесут вас на правильную страницу.Но если вы полагаетесь на Drupal для правильной установки активного трейла и расширения правильных подменю, вам придется использовать немного обходного пути.По сути, вы будете создавать фиктивные узлы, которые будут перенаправлять на нужную страницу, а не создавать две ссылки в меню с одинаковым путем.Родитель (в меню) будет перенаправлен на дочерний узел.

Метод 1 (только D6):

  1. Загрузите и установите перенаправление CCK
  2. Создание типа контента«Узел перенаправления» и добавьте поле «Перенаправление CCK» к типу контента
  3. Создайте узел страницы (узел 1) с URL-адресом «люди / друзья» и добавьте ссылку в меню
  4. Создайте «Перенаправление»Node '(узел 2) и создайте ссылку меню для этого нового узла.
  5. Установите в поле перенаправления CCK URL-адрес узла 1 (люди / друзья).
  6. Установите для пункта меню узла 2 значениеРодитель узла 1

Метод 2 (D6 и 7):

Если вы хотите стать действительно модным, вы можете выбрать более удобный для пользователя подход, комбинируя модуль CCK Node Reference сМодуль правил.

  1. Загрузите и установите модуль правил (и пользовательский интерфейс правил) и включите модуль ссылок узлов CCK
  2. Создайте тип контента 'Узел перенаправления' идобавить ссылку на узел ( D6 ) ( D7 ) field 'field_redirect_цель.Обязательно настройте его так, чтобы он был обязательным, и пользователи не могут выбирать узлы типа «Узел перенаправления»
  3. Добавить новое правило с помощью модуля «Правила», когда содержимое будет просматриваться, если содержимое имеет тип «Перенаправление».Узел '
  4. Перенаправление на страницу: [node:field_redirect_target-path]
  5. Создание узла 1 типа страницы
  6. Создание узла 2 типа' Узел перенаправления '
  7. Установка узлаСсылочное поле для узла 1
  8. Установить пункт меню узла 2 в качестве родителя узла 1 *

Этот метод немного приятнее для пользователей, так как не требует от них поискасистемный путь для целевого узла.

0 голосов
/ 25 августа 2011

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

0 голосов
/ 15 февраля 2011

В зависимости от ваших настроек, модуль меню покажет активную ссылку, если это дети.Однако он не предназначен для поиска более одной ссылки.Вот почему вы не получите полную вложенную структуру меню.Я предполагаю, что верхняя - это ссылка, которую он находит первой, и на этом она останавливается.Я не могу вспомнить алгоритм для структуры меню, возможно, вам повезло изменить структуру меню, сделав меню 1 последним ребенком.Однако это не то, для чего предназначена система меню Drupal, и вам будет нелегко изменить это.

То, что вы пытаетесь достичь, связывая один и тот же узел несколько раз, - это вложенная структура меню.

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