Поддержка Проблемы и решения Навигационная цепочка

  • Решено wacrug

    (@wacrug)


    Есть главное меню сайта с выпадающим списком, регистрировал с помощью register_nav_menu. В меню основные и выпадающие пункты были страницами. Появилась необходимость сделать основные пункты некликабельными. Сделал с помощью произвольной ссылки (без ссылки), а выпадающие остались страницами. Для оптимизации, по идее, страницы, что были в основном меню, можно было бы и удалить, но на основе иерархии страниц у меня строится навигационная цепочка (хлебные крошки). Подскажите, как можно безболезненно избавиться от лишних страниц? Ну или как можно привязать крошки к меню?

Просмотр 15 ответов — с 1 по 15 (всего 19)
  • Модератор Юрий

    (@yube)

    Ну или как можно привязать крошки к меню?

    Пойти в репозитарий плагинов и поискать «menu breadcrumbs». Уверен, что-нибудь да найдется.

    а без плагинов не, никак?

    Модератор Юрий

    (@yube)

    Плагинофобия? 🙂

    Можно вынуть из плагина код и засунуть его в свою Тему. Разницы почти никакой. Почти. См. Чем плагин лучше внедрения кода?

    Главная проблема в том, что не могу понять где начинается привязка к страницам, и соответственно как привязать к меню. Тут что-нибудь посоветуете?

    Модератор Юрий

    (@yube)

    где начинается привязка к страницам

    Привязка чего?

    Обычно крошки работают довольно просто. Справа налево. Сначала берется текущая сущность. Если она иерархическая (рубрика или стат.страница), то рекурсивно определяются предки вплоть до главной. Для записей сначала берется категория (первая попавшаяся), а далее по алгоритму иерархических сущностей. У примитивных не иерархических сущностей, типа меток или авторов, крошки собираются тоже примитивно — из текущей и главной.

    Привязка крошек именно к статичным страницам.
    Нашел участок кода, где передается что выводить на экран
    $link = $link_before . '%2$s' . $link_after;
    Не совсем понятен смысл самого главного: %2$s
    Если здесь $s — это объект, в котором и хранится текст передаваемого объекта (текст страницы в крошках), то где он задается изначально совсем непонятно, так как перерыл весь код и ничего нужного не нашел. % — деление по модулю? если так, то что делится? Подскажете смысл %2$s?

    Модератор Юрий

    (@yube)

    Подскажете смысл %2$s?

    Очень похоже на плейсхолдер переменной во фразе локализации.

    Модератор Юрий

    (@yube)

    Где Вы это нашли?

    function mustic_breadcrumbs() {
    ...
    $link = $link_before . '<a' . $link_attr . ' href="%1$s">'%2$s'</a>' . $link_after;

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

    $link_before = '<span typeof="v:Breadcrumb">';
    $link_after = '</span>';
    $link_attr = ' rel="v:url" property="v:title"';

    Остается блок %2$s, который и содержит текст ссылки, до сих пор не понятно мне что делающий

    • Ответ изменён 5 лет, 1 месяц назад пользователем wacrug.
    Модератор Юрий

    (@yube)

    Там дальше в коде должно быть sprintf или printf. Если есть, то смотрите параметры, которые передаются функции, а смысл шаблонов найдете в документации на php http://php.net/manual/ru/function.sprintf.php

    Моих «знаний» php явно не достаточно для решения этой проблемы!
    Прошу Вашей помощи.

    $parent_id = $parent_id_2 = $post->post_parent;
    $frontpage_id = get_option('page_on_front');
    ...
    if ($parent_id != $frontpage_id) {
    	$breadcrumbs = array();
    	while ($parent_id) {
    		$page = get_page($parent_id);
    		if ($parent_id != $frontpage_id) {
    			$breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));
    		}
    		$parent_id = $page->post_parent;
    	}

    Видимо $page = get_page($parent_id); — получение id текущей страницы.
    Пробую через wp_get_nav_menu_items( $parent_id ). Крошки выводит, но только везде указывается текущая страница. Например, вместо Мультмедиа -> Фотогалерея, выводит Фотогалерея -> Фотогалерея.

    Напомню суть вопроса. Нужно вместо привязки крошек к странице сделать привязку к пунктам меню.
    Без Вашей помощи у меня ничего не выйдет!

    Модератор Юрий

    (@yube)

    Моих «знаний» php явно не достаточно для решения этой проблемы!

    Попробуйте поставить плагин.

    Все плагины под копирку, выводят страницы, посты, рубрики, метки.
    Чтобы хоть кто-то как-то выводил крошки по меню нету.
    Самое главное, что поисковики выдают одно и то же: как поставить плагин, чтобы он работал со всем вышеперечисленным, но ни слова нету про то, чтобы выводили на основе меню.

Просмотр 15 ответов — с 1 по 15 (всего 19)
  • Тема «Навигационная цепочка» закрыта для новых ответов.