Как сделать хлебные крошки react

Добавил пользователь Евгений Кузнецов
Обновлено: 19.09.2024

Укажите местоположение текущей страницы в иерархии навигации, которая автоматически добавляет разделители через CSS.

Пример

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

Разделители

Разделители автоматически добавляются в CSS через ::before и content . Их можно изменить, изменив локальное настраиваемое свойство CSS --bs-breadcrumb-divider или с помощью переменной Sass $breadcrumb-divider и $breadcrumb-divider-flipped для его RTL-аналога, если необходимо. По умолчанию мы используем нашу переменную Sass, которая устанавливается в качестве альтернативы настраиваемому свойству. Таким образом, Вы получаете глобальный разделитель, который можно в любой момент изменить без перекомпиляции CSS.

При изменении через Sass функция quote требуется для генерации кавычек вокруг строки. Например, используя > в качестве разделителя, Вы можете использовать это:

Также можно использовать встроенный значок SVG. Примените его через наше настраиваемое свойство CSS или используйте переменную Sass.

Вы также можете удалить параметр разделителя --bs-breadcrumb-divider: ''; (пустые строки в настраиваемых свойствах CSS считаются как значение) или установить для переменной Sass значение $breadcrumb-divider: none; .

Доступность

Поскольку хлебные крошки обеспечивают навигацию, рекомендуется добавить значимую метку, такую как aria-label="breadcrumb" , чтобы описать тип навигации, предоставляемой в элементе , а также применить aria-current="page" к последнему элементу набора, чтобы указать, что он представляет текущую страницу.

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

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

Понятно, что не спешите сохранять файл (особенно не на тестовом сайте), ведь этой функции у вас сейчас нет и вы столкнётесь с ошибкой 500.

Функция хлебных крошек

Теперь распишем саму функцию, сразу говорю, готовьтесь, что будет много кода.

Дело в том, что я выкладываю полностью законченный и 100% рабочий вариант. Здесь учтены все типы страниц, которые только могут быть на WordPress: посты, страницы, вложенные страницы(поддерживается любое количество уровней вложенности), рубрики, подрубрики (неограниченное количество вложений), теги, архивы, страницы поиска, страницы с записями какого-либо одного автора.

Давайте сначала начнём с относительно несложного варианта хлебных крошек, и чуть ниже в этом же уроке я вам расскажу, как их модифицировать под какую-то свою определённую задачу. Для начала добавьте этот код functions.php :

  • 4 – при помощи get_query_var() мы определяем, находимся ли мы на странице постраничной навигации, знаю, что это можно сделать при помощи is_paged(), но нам же ведь ещё и номер страницы понадобится.
  • 6 – разделитесь между ссылками в хлебных я решил записать в переменную, вы можете использовать что угодно, например стрелки → → , запись его в переменную позволит нам быстро его поменять, если захотим.
  • 9 – функция, а точнее условный тег is_front_page() возвращает true , если мы находимся на главной странице, вне зависимости от того, какую роль она выполняет.
  • 12 , 19 – функция site_url() динамически возвращает ссылку на главную страницу сайта. , is_page(), is_category(), is_tag(), is_day(), is_month(), is_year(), is_author(), is_404() – различные условные теги, позволяющие легко определить, на каком типе страницы мы в данный момент находимся.
  • 25 – я использовал функцию the_category() для вывода списка рубрик для текущей записи через запятую. Обратите внимание, что эта функция не распределяет рубрики в зависимости от их иерархии. О том, как вывести их с соблюдением порядка иерархии, читайте ниже.
  • 25 , 29 – функция the_title() отлично подходит для того, чтобы вывести заголовок текущей записи, страницы или записи произвольного типа. и single_tag_title() – для вывода название текущей рубрики или метки соответственно.

Как в хлебные крошки добавить родительские страницы?

Это можно хорошо наблюдать в метабоксе Атрибуты страницы:

Выбор родительской страницы в WordPress

Если вы планируете отображать в своих хлебных крошках родительские страницы тоже, то вам нужно немного модифицировать соответствующие строчки в коде выше:

То есть вставляете этот код на 27-й строчке ничего не удаляя из первоначального кода.

Как в хлебных крошках вывести родительские рубрики WordPress с учётом иерархии?

В архивах рубрик

Тут ситуация похожа на ситуацию со страницами, но проще, так как существует функция get_category_parents().

На страницах записей

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

Тут есть некоторые тонкости, но смотрите, есть очень классный способ, как можно это всё разрулить!

Прежде всего, обратите внимание, как вы добавляете пост в категории. Нам подходит:

Добавляем только дочернюю рубрику при редактировании записи

добавление и дочерней и родительской рубрики при редактировании записи

После этого можно спокойно использовать функцию get_category_parents():

Произвольными типы постов и их таксономии в хлебных крошках с учётом иерархии

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

Есть очень хороший пример того, как сделать панировочные сухари на сайте в папке examples РЕПО react-router . Но мне интересно, как сделать хлебные крошки с динамическими маршрутами.

Предположим, что у нас есть такая конфигурация:

Я хочу сделать что-то вроде этого:

Проекты(ссылка на '/projects') -> MyAwesomeProject (ссылка на '/projects/11'. название взято откуда-то (из магазина по идентификатору от routeParams или другим способом)) - > MyTask (ссылка на '/projects/11/999')

Как я могу достичь этого результата? Есть ли какие-то лучшие практики? Спасибо.

В настоящее время мы разрабатываем сайт с Magento, и по какой-то причине, когда мы впервые просматриваем страницу категории, панировочные сухари там есть, однако, если мы обновим страницу, панировочные сухари исчезнут. Любые идеи о том, почему это может произойти, очень ценятся! Спасибо! Джефф.

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

Мы используем пакет react-breadcrumbs-dynamic , который является наиболее

гибкий для любого маршрутизатора (в комплекте react-router v4).

С react-router v4 все маршруты являются динамическими (хотя я думаю, что все еще есть варианты написания статических определений).

Как упоминалось @tbo в комментарии, react-breadcrumbs был подходящим решением для реализации этого с версией 3 react-router. Были даже некоторые обходные пути для динамических панировочных сухарей, которые вы описываете (например, с использованием реквизитов prepend или getDisplayName ).

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

TLDR; Если вы все еще используете react-router v3, вы, вероятно, можете заставить пакет react-breadcrumbs работать для динамических панировочных сухарей. Если вы перешли на v4, следите за обновлениями, и, надеюсь, скоро у меня будет лучший ответ.

Обновление

Не найдя других решений, соответствующих моим потребностям, я разработал решение и открыл запрос на вытягивание в репозитории react-breadcrumbs. Автоматическая панировка , как упоминалось ниже, и это обсуждение также являются потенциальными решениями, но допускают меньшую настройку. Если вам нужна дополнительная настройка, подпишитесь и не стесняйтесь комментировать или помогать с pr.

Обновление (2020)

Этот запрос на вытягивание был объединен, и react-breadcrumbs теперь отлично работает для react-router версии 4 и выше.

Я определил такие панировочные сухари на странице catalog/category/view.phtml. echo $this->getChildHtml('breadcrumbs') Я хочу показать панировочные сухари только на странице категории. Нужно ли мне добавить что-нибудь еще, чтобы использовать вышеприведенный код ? Нужно ли мне также определить.

Я пытаюсь реализовать динамические панировочные сухари в laravel со ссылками. Я успешно визуализирую панировочные сухари, но без ссылок, следуя следующему коду. .

Автоматическая панировка кажется лучшим вариантом, если вы используете версию 4 React Router. Мне еще предстоит найти отличный учебник, но есть незафиксированная, но довольно простая демо -версия.

Существует несколько способов сделать это и несколько решений с открытым исходным кодом (см. Также ответы здесь: Как создать панировочные сухари react-router v4? )

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

Вот решение, обеспечивающее единый источник истины для вложенной навигации и хлебных крошек.

Мы должны рекурсивно сгладить навигацию и сделать ее плоским массивом:

Затем постройте панировочные сухари из той же навигационной структуры.

Похожие вопросы:

Как создать панировочные сухари react-router v4? Я попытался задать этот вопрос на веб-сайте react-router V4 через билет на выпуск. Они просто сказали, чтобы посмотреть пример рекурсивных путей . Я.

Как лучше всего включить панировочные сухари в Rails?

Когда полностраничный кэш включен на главной странице появляются панировочные сухари, я пробовал изменить строку на getChildHtml('breadcrumbs') Я хочу показать панировочные сухари только на странице категории. Нужно ли.

есть ли какие-либо плагины, доступные для добавления динамической хлебной крошки для grails. не могли бы вы привести какой-нибудь пример? я использую grails 3.3.0. следующие плагины не работают.

В моем приложении reactJS с react router я пытаюсь сделать динамические панировочные сухари. Я попробовал это: const Breadcrumbs = () => < let parts =.

Чтобы удалить панировочные сухари, у меня есть решение, использующее css, которое я использовал, но я хочу удалить его с помощью крючка вместо css. .breadcrumbs < display:none; >Пожалуйста, дайте.

Есть очень хороший пример того, как сделать панировочные сухари на сайте в папке examples РЕПО react-router . Но мне интересно, как сделать хлебные крошки с динамическими маршрутами.

Предположим, что у нас есть такая конфигурация:

Я хочу сделать что-то вроде этого:

Проекты(ссылка на '/projects') -> MyAwesomeProject (ссылка на '/projects/11'. название взято откуда-то (из магазина по идентификатору от routeParams или другим способом)) - > MyTask (ссылка на '/projects/11/999')

Как я могу достичь этого результата? Есть ли какие-то лучшие практики? Спасибо.

В настоящее время мы разрабатываем сайт с Magento, и по какой-то причине, когда мы впервые просматриваем страницу категории, панировочные сухари там есть, однако, если мы обновим страницу, панировочные сухари исчезнут. Любые идеи о том, почему это может произойти, очень ценятся! Спасибо! Джефф.

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

Мы используем пакет react-breadcrumbs-dynamic , который является наиболее

гибкий для любого маршрутизатора (в комплекте react-router v4).

С react-router v4 все маршруты являются динамическими (хотя я думаю, что все еще есть варианты написания статических определений).

Как упоминалось @tbo в комментарии, react-breadcrumbs был подходящим решением для реализации этого с версией 3 react-router. Были даже некоторые обходные пути для динамических панировочных сухарей, которые вы описываете (например, с использованием реквизитов prepend или getDisplayName ).

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

TLDR; Если вы все еще используете react-router v3, вы, вероятно, можете заставить пакет react-breadcrumbs работать для динамических панировочных сухарей. Если вы перешли на v4, следите за обновлениями, и, надеюсь, скоро у меня будет лучший ответ.

Обновление

Не найдя других решений, соответствующих моим потребностям, я разработал решение и открыл запрос на вытягивание в репозитории react-breadcrumbs. Автоматическая панировка , как упоминалось ниже, и это обсуждение также являются потенциальными решениями, но допускают меньшую настройку. Если вам нужна дополнительная настройка, подпишитесь и не стесняйтесь комментировать или помогать с pr.

Обновление (2020)

Этот запрос на вытягивание был объединен, и react-breadcrumbs теперь отлично работает для react-router версии 4 и выше.

Я определил такие панировочные сухари на странице catalog/category/view.phtml. echo $this->getChildHtml('breadcrumbs') Я хочу показать панировочные сухари только на странице категории. Нужно ли мне добавить что-нибудь еще, чтобы использовать вышеприведенный код ? Нужно ли мне также определить.

Я пытаюсь реализовать динамические панировочные сухари в laravel со ссылками. Я успешно визуализирую панировочные сухари, но без ссылок, следуя следующему коду. .

Автоматическая панировка кажется лучшим вариантом, если вы используете версию 4 React Router. Мне еще предстоит найти отличный учебник, но есть незафиксированная, но довольно простая демо -версия.

Существует несколько способов сделать это и несколько решений с открытым исходным кодом (см. Также ответы здесь: Как создать панировочные сухари react-router v4? )

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

Вот решение, обеспечивающее единый источник истины для вложенной навигации и хлебных крошек.

Мы должны рекурсивно сгладить навигацию и сделать ее плоским массивом:

Затем постройте панировочные сухари из той же навигационной структуры.

Похожие вопросы:

Как создать панировочные сухари react-router v4? Я попытался задать этот вопрос на веб-сайте react-router V4 через билет на выпуск. Они просто сказали, чтобы посмотреть пример рекурсивных путей . Я.

Как лучше всего включить панировочные сухари в Rails?

Когда полностраничный кэш включен на главной странице появляются панировочные сухари, я пробовал изменить строку на getChildHtml('breadcrumbs') Я хочу показать панировочные сухари только на странице категории. Нужно ли.

есть ли какие-либо плагины, доступные для добавления динамической хлебной крошки для grails. не могли бы вы привести какой-нибудь пример? я использую grails 3.3.0. следующие плагины не работают.

В моем приложении reactJS с react router я пытаюсь сделать динамические панировочные сухари. Я попробовал это: const Breadcrumbs = () => < let parts =.

Чтобы удалить панировочные сухари, у меня есть решение, использующее css, которое я использовал, но я хочу удалить его с помощью крючка вместо css. .breadcrumbs < display:none; >Пожалуйста, дайте.

Читайте также: