Функції навігації - cms netcat

У макеті-прикладі є три типи навігації: однорівневе меню, багаторівневе меню і хлібні крихти.

Навігація на сайті формується за допомогою наступних функцій:

  • nc_browse_level () - висновок меню певного рівня вкладеності;
  • nc_browse_path () - висновок хлібних крихт;
  • nc_browse_path_range () - висновок хлібних крихт (з параметрами);
  • nc_browse_sub () - висновок меню з певного розділу;
  • nc_cond_browse_sub () - висновок меню з певного розділу (з умовою);
  • nc_browse_cc () - висновок меню Інфоблоки розділу;
  • nc_browse_catalogue () - висновок меню сайтів.

Розберемо на прикладах кожну з функцій.

Існує три функції для виведення меню:

  • nc_browse_level ($ level, $ browse_template).
    Висновок меню певного рівня вкладеності.
  • nc_browse_sub ($ browse_parent_sub, $ browse_template, $ ignore_check = 0, $ where_cond = "", $ level = 0)
    Висновок меню з певного розділу.
  • nc_cond_browse_sub ($ browse_parent_sub, $ browse_template, $ where_cond = "")
    Висновок меню з певного розділу з умовою. Функція є окремим випадком попередньої.

однорівневе меню

Перший тип меню в макеті-прикладі - однорівневе:

У коді макеті меню виглядає так:

Для формування однорівневої меню можна скористатися першою або другою функцією.

У функцію необхідно передати обов'язкові параметри:

  • $ Level - номер рівня розділів (найвищому рівню відповідає значення 0);
  • $ Browse_template - шаблон виводу навігації.

Шаблон виведення навігації являє собою одномірний масив $ browse_template виду:

У шаблонах навігації доступні наступні макропеременние:

  • % NAME - назва елемента (розділу);
  • % URL - шлях до розділу;
  • % PARENT_SUB - номер батьківського розділу (тільки для розділів);
  • % KEYWORD - ключове слово розділу (тільки для розділів);
  • % SUB - номер розділу;
  • % COUNTER - номер виведеного елемента в списку (починаючи з нуля);
  • % NEXT_LEVEL - відображення наступного рівня меню. Використовується при побудові багаторівневих меню.
  • % Імя_поля_в_сістемной_табліце - довільна змінна, що задається в блоці «Розділи» в системних таблицях.

Деякі з змінних призначені тільки для формування меню.

Масив формування навігації може мати елементи:

Змінимо масив $ browse_template відповідно до заданого html-кодом:

Помістіть цей масив в поле шаблону виведення навігації.

У шаблоні замість html-коду пропишіть функцію:

Цифра 0 у функції позначає рівень виведення меню. В даному випадку будуть виведені всі включені пункти тільки кореневого розділу.

Функції навігації - cms netcat

На малюнку розділи, помічені сірим кольором, виведені не будуть.

Зараз фрагмент коду верхній частині сайту виглядає так:

багаторівневе меню

У боковій колонці сайту представлено багаторівневе меню:

Функції навігації - cms netcat

У разі, коли в боковій колонці знадобилося б вивести підпункти горизонтального меню (тобто тільки один рівень), можна використовувати ту ж функцію, але з параметром рівня рівним 1, 2 і т. Д. В залежності від рівня вкладеності:

В даному випадку виводяться підрозділи певного розділу і для його виведення скористаємося функцією:

Функцію можна використовувати як для формування однорівневої меню, так і багаторівневого. У функцію необхідно передати обов'язкові параметри:

  • $ Browse_parent_sub - id батьківського розділу, з якого повинні формуватися пункти меню. Кореневий розділ має номер 0.
  • $ Browse_template - шаблон виводу навігації. У функцію необхідно передати змінну з висновком рівня меню і масив шаблону.

Так само можна вказати необов'язкові параметри:

  • $ Ignore_check = 0 - якщо параметр встановлено в 1, будуть виведені всі вимкнені розділи.
  • $ Where_cond = "" - параметр визначає додаткові умови вибірки з таблиці Subdivision.
  • $ Level = 0

Використання необов'язкових параметрів буде описано нижче.

У коді висновок меню поки виглядає так:

Складемо масив виведення багаторівневого меню:

Так як меню є багаторівневим, в шаблон навігації додається нова макропеременная% NEXT_LEVEL.

У макеті замість HTML-коду пропишіть виклик функції:

де 299 - номер батьківського розділу, з якого виводяться підрозділи. У карті сайту це виглядає так:

Функції навігації - cms netcat

Розглянемо на прикладі, в яких випадках можна використовувати параметр $ where_cond функції nc_browse_sub () і nc_cond_browse_sub ().

Припустимо, що карта сайту має близько п'ятнадцяти пунктів в кореневому розділі. Деякі з пунктів потрібно вивести в верхньому меню, деякі в нижньому. Залежно від дизайну, меню можуть розташовуватися в різних місцях і їх може бути більше, ніж два.

Без використання параметра умови $ where_cond виконання завдання сильно ускладнюється. Рішення просте - в системних таблицях в блок «Розділи» потрібно додати нові поля.

Функції навігації - cms netcat

Полів має бути стільки, скільки типів меню.

В результаті, на вкладці додаткових налаштувань у кожного розділів з'явиться опція, яку потрібно виставити в потрібно значення.

Функції навігації - cms netcat

У функції виведення тепер потрібно дописати параметр $ where_cond, що містить ім'я поля. наприклад,

Аналогічну вставку потрібно зробити і для інших випадків виведення меню.

Використання функцій s_browse_

Якщо вам не вистачає даних макропеременних, або ви хочете використовувати PHP умови, ви можете використовувати функції з префіксом s_browse_. в них доступний внутрішній масив $ data [] і виконується eval () шаблонів, завдяки чому можна передавати в шаблон PHP код (екранований). Масив $ data [] містить всі дані з таблиці Subdivision про поточні підрозділах виведених функцією.
наприклад:

Так само в шаблоні можна використовувати додаткові запити. Наприклад, вам потрібно вивести кількість елементів в розділах. Для цього дописується запит в шаблон:

де XX - номер компонента підключеного в розділах.

Зверніть увагу на Слеш перед знаками $ і ", вони є обов'язковими, оскільки обробка цього масиву і виконання вкладених функцій повинні здійснюватися всередині функції s_browse_, а не на етапі ініціалізації масиву $ browse_sub.

Важливо: у функціях s_browse_ недоступна макропеременная% NEXT_LEVEL.

Важливо: функції s_browse_ не вибирають автоматично рівень шаблона як це робиться в% NEXT_LEVEL, тому необхідно при виконанні функції передавати один конкретний рівень шаблона, наприклад

Для того щоб вивести наступний рівень масиву, необхідно прописати виклик функції для наступного рівня усередині шаблону і заекранувати так, щоб виклик прозошел всередині функції поточного рівня.

Також шаблон наступного рівня $ left_menu1 [1] НЕ буде доступний в області видимості функції s_browse_sub, тому потрібно отримати до нього доступ через глобалізацію:

Повний приклад на 3 рівня вкладеності:

Важливо: в разі якщо шаблон навігації описується в шаблоні компонента (префікс / системні налаштування), то необхідно додатково вивести масив шаблон з області видимості компонента в загальну:

Карта сайту

Список всіх розділів (карти сайту) на самому сайті виводиться так само вельми просто. Для карти сайту потрібно створити новий розділ, до нього підключити макет дизайну такого змісту:

  • в шаблон виводу навігації прописати:
  • в місце виведення карти прописати виклик функції:

В даному прикладі кожен елемент шаблону викликає функцію ще раз з однаковим шаблоном, а в якості номера розділу передається ID поточного виведеного розділу. Таким чином у вас на одній сторінці буде виведена повна ієрархія структури сайту.

Хлібні крихти

Останній елемент навігації на сторінці - хлібні крихти. Формується за допомогою функцій:

  • nc_browse_path ($ browse_template)
    Висновок за заданим шаблоном
  • nc_browse_path_range ($ from, $ to, $ browse_template, $ reverse = 0, $ show = 0)
    Висновок із зазначеними параметрами

В якості змінних $ browse_template так само необхідно вказати масив даних. У коді хлібні крихти виводяться в рядку:

Потрібно скласти масив для виведення:

і прописати в макеті висновок:

підсумковий вид

Елементи навігації адаптовані і зараз в поле «Шаблони виведення навігації» знаходиться 4 блоки масивів:

Верхня частина макета значно скоротилася і тепер вона виглядає так:

  • nc_browse_sub () - виведення списку підрозділів заданого розділу відповідно до шаблону $ template
  • nc_browse_catalogue () - виведення списку сайтів
  • nc_browse_level () - висновок меню (списку розділів) певного рівня
  • nc_browse_messages () - формує лістинг сторінок з об'єктами
  • nc_browse_path () - висновок шляху «хлібні крихти»
  • nc_browse_path_range () - висновок шляху ( «хлібні крихти») зазначеного діапазону

Схожі статті