хлебные крошки

У кого-нибудь есть соображения, как здесь http://www.icontext.ru/reklamodatelyam/kontekstnaya-reklama/mediynyiy-kontekst/ реализовано? (это вордпресс)

А что именно?

"хлебные крошки" :
iConText.ru » Рекламодателям » Контекстная реклама » Медийный контекст

Да, интересно. 🙂

Получить доступ к родителю элементарно: $post->post_parent

Зная его можно организовать цикл: получить уже его parent, и выполнять до тех пор, пока parent не станет равен 0 (самый верхний уровень). Соответствнно на каждой итерации выводить ссылку на родителя.

Мне тут подумалось, что все может быть намного проще:
Запись относится одновременно к 3 категориям, вложенным друг в друга, тогда получается такая цепочка:

Опубликовано в Рекламодателям » Контекстная реклама » Медийный контекст

А ссылку на клавную страницу сайта iConText.ru можно спереди поставить вручную, в шаблоне.
А?

А как такой цикл организовать $post->post_parent?

Вполне возможно, только почему в каждой из этих категорий только одна запись? Это наводит на мысль, что там на static (страницах) и сделано. В итоге получается примерно такая же схема, что я и привел выше.

А как такой цикл организовать $post->post_parent?

Его не нужно организовывать :). Он доступен в "обычном" while (have_posts())….

Что же вы у нас не спросили? У нас же на сайте есть форма "Задать вопрос". Я бы вам ответил 🙂

Реализовано вот так:

function bread_crumbs()
{
    global $wpdb;

    $CPtheFullUrl = $_SERVER["REQUEST_URI"];
    $CPurlArray = explode("/",$CPtheFullUrl);
    echo '<a href="/">iConText.ru</a>';
    while (list($CPj,$CPtext) = each($CPurlArray))
    {
        $CPdir = '';
        if ($CPj > 1)
        {
            $CPi = 1;
            while ($CPi < $CPj)
            {
                $CPdir .= '/' . $CPurlArray[$CPi];
                $CPtext = $CPurlArray[$CPi];

                $r = $wpdb->get_row("SELECT post_title FROM $wpdb->posts WHERE post_name = '$CPtext'");
                $CPtitle = $r->post_title;

                $CPi++;
            }
            if($CPj < count($CPurlArray)-1) echo ' &raquo; <a href="'. $CPdir. '">'. $CPtitle. '</a>';
        }
    }
    echo wp_title();
}

Соответственно, вызов функции втыкается в то место, где надо выводить эти самые крошки. Код был взят из какого-то плугина.

Сделано всё на страницах.

Неплохо, главное оригинально. 🙂

Работать, правда будет только при включенном ЧПУ. Кто не понял, объясню: в этом коде разбивается текущий URL разделенный слэшами ("/") на части. Каждая такая часть есть не что иное, как короткая ссылка (page slug, page name). Дальше по этому значению ищется в базе данных и получаем заголовки (post title). Ну и, соответственно, выводится на стрницу.

phoontic, спасибо за интересный код, наверняка кому-нибудь пригодится. 🙂

У меня не работает 🙁 Зато оказалось что есть плагины breadcrumbs:
1) http://sw-guide.de/wordpress/breadcrumb-nav-xt/
2) http://www.thedevproject.com/projects/wordpress-breadcrumb-plugin/

У меня ни один из предложенных вариантов не сработал 🙁
Точнее сработали, но коряво: отображаются Главная —> последняя страница (т.е. опускаются в выдаче промежуточные категории)

Если отключить плагин Seo-Without-Category, то все отображается корректно.
Sonika, Max, как реализованы хлебные крошки у вас на сайтах? Просто вижу, что у вас и плагин Seo-Without-Category подключен и навигация корректно показывается

У меня так (для категорий):

<a href="<?php echo get_option('home'); ?>">На главную</a> / 
<?php foreach((get_the_category()) as $cat) { 
$cat=$cat->cat_ID; 
echo(get_category_parents($cat, TRUE, ' / '));
} ?> <?php the_title(); ?>

Этот кусок кода я выцепила на старом форуме mywordpress.ru, его привела Яна Таран

Тут есть ограничение:
запись должна принадлежать только 1 (дочерней) рубрике, чтобы получились логичные хлебные крошки
То есть для сайтов с опред. структурой категорий подойдет, а для других — нет

"Тут есть ограничение:
запись должна принадлежать только 1 (дочерней) рубрике, чтобы получились логичные хлебные крошки
То есть для сайтов с опред. структурой категорий подойдет, а для других — нет"

А может можно как-нибудь изменить этот код, чтобы если пост принадлежит нескольким рубрикам одновременно, они бы выводились в скобочках и через запятую а не через слеш ?

Отличный вопрос! А в коде (кот я привела выше) слеши на запятые поменять не пробовали? 🙂

Еще вариант «хлебных крошек» от Макса: http://forum.maxsite.org/viewtopic.php?pid=10189#p10189

sonika, и Ваш вариант и вариант Макса выводят название поста. А как сделать, чтоб оно не выводилось? А были только категории.

<?php the_title(); ?> убрать

код от Фунтика – просто не работает.

лично у меня, с кодом Соники, "путь" отображается криво, а именно:
на странице категории выводится не "главная – категория", а "главная – категория – первая подкатегория – первый пост"…

вариант Макса у меня тоже не работает.
прихожу к выводу, что "путь" – самое слабое место WP.
придется писать вручную с указанием подкатегорий…

помог только плагин Breadcrumb NavXT
количество запросов к БД, вроде, не увеличивает…
http://mtekk.weblogs.us/code/breadcrumb-navxt/

Еще способ:
http://mywordpress.ru/support/viewtopic.php?pid=17345#p17345

Хлебные крошки для Статических страниц, любого уровня вложенности

[code- <div id="breadcrumbs">
<a href="<?php echo get_bloginfo(‘url’); ?>" title="">На главную</a>
<?php
$parent_id = $post->post_parent;
$breadcrumbs = array();
while ($parent_id) {
$page = get_page($parent_id);
$breadcrumbs
= ‘<a href="’.get_permalink($page->ID).’" title="">’.get_the_title($page->ID).'</a>’;
$parent_id = $page->post_parent;
}
$breadcrumbs = array_reverse($breadcrumbs);
foreach ($breadcrumbs as $crumb) echo ‘ / ‘.$crumb;
?>
</div>[/code]
источник http://wordpress.org/support/topic/179226#post-770113

Anonymous
Отправить
Ответ на: