Как сделать хлебные крошки react
Укажите местоположение текущей страницы в иерархии навигации, которая автоматически добавляет разделители через 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() – для вывода название текущей рубрики или метки соответственно.
Как в хлебные крошки добавить родительские страницы?
Это можно хорошо наблюдать в метабоксе Атрибуты страницы:
Если вы планируете отображать в своих хлебных крошках родительские страницы тоже, то вам нужно немного модифицировать соответствующие строчки в коде выше:
То есть вставляете этот код на 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; >Пожалуйста, дайте.
Читайте также: