Разделяемый контент

Был у меня такой запрос от заказчика, чтобы контент был различный, в зависимости от того, где пользователь находится. Суть такова: на главной отображаются ссылки на новости и Статьи(соответственно рубрики «Новости» и «Статьи»), а так же список рубрик(конкретно – марки автомобилей, например «Ford»), при нажатии на которые ссылки, которые вели на общие новости и статьи, теперь должны вести на подрубрики новости и статьи из выбранной рубрики автомобиля, но есть одна особенность: новости и статьи – это подрубрики моделей авто, которые соответственно подрубрики марки (выглядит как Ford->Focus->Новости и Ford->Focus->Статьи или Ford->Mondeo->Новости и Ford->Mondeo->Статьи). Помимо этого в сайдбарах так же выводятся по 2 новости и статьи, и они соответственно должны меняться, когда заходишь в рубрику с маркой авто. Весьма интересная задачка, на мой взгляд, делаем :).

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

  • 1) главная страница (отображаем из рубрик «Новости» и «Статьи»)
  • 2) рубрики «Новости» и «Статьи» и посты в них (отображаем из рубрик «Новости» и «Статьи»)
  • 3) страницы (отображаем из рубрик «Новости» и «Статьи»)
  • 4) рубрики машин и их посты (отображаем из подрубрик «Новости» и «Статьи» конкретной марки)
  • 5) подрубрики «Новости» и «Статьи» рубрик автомобилей и их посты (отображаем из подрубрик «Новости» и «Статьи» конкретной марки)

Строим последовательно алгоритм, который и проверяет где мы находимся. Определяем ID текущей рубрики, если находимся непосредственно в рубрике, то всё просто – берём ID по названию рубрики, если же находимся в посте, то берём последовательную иерархию рубрик (по сути «хлебные крошки») и берём саму главную рубрику.

Проверка is_front_page() используется в том случае, если главная – отдельная страница, если же у вас идёт просто вывод постов, то используйте is_home(). После выполнения алгоритма id рубрики сохранится в $id1, а её урл в $cat_url. Так же мы сохранили id в глобальном массиве ($GLOBALS["figna"] :)), чтобы была возможность использовать это значение во всех файлах темы.

Теперь выводим наши ссылки соответствующим образом:

ID 1 и 59 – это номера рубрик «Новости» и «Статьи», вместо них подставте свои. Как видите к ссылке рубрики я дополнительно прикрепил параметр act, который принимает 2 значения news и posts, т.е. в зависимости от этого параметра мы будем выводить посты или новости.

Всё это я прописывал в header.php, следующим для правок идёт archive.php, здесь уже будем разбирать, что же нам надо выводить.

Первым делом отлавливаем параметр act. если его нету, то выводим как обычно. Если параметр есть, то в зависимости от его значения делаем отсев с помощью query_posts. Суть отсева прост: берём все подрубрики нашей марки и отсеиваем по значению имени равного «Новости» или «Статьи».Выглядит это так:

Вставляем это перед основным циклом вывода записей.

Теперь осталось только в сайдбарах тот же отсев сделать, алгоритм практический идентичен, только добавляем ограничение на количество постов showposts=2.

Новости выводятся так же, просто нужно слово «Статьи» поменять на «Новости». Вот таким образом и решилась задачка.

Одна мысль про “Разделяемый контент”

Добавить комментарий

Ваш e-mail не будет опубликован.