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

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

Чуть меньше года назад зарегил домен для контентного сайта, затем установил WordPress и бесплатную темку оформления, которая мне тогда приглянулась достаточно приличным, и в то же время, скромным внешним видом. Ни шатко, ни валко, написал несколько страничек, создал примитивную структуру и стал ждать… Для себя вопрос иерархии решил так — новости сайта, сериала и т.д. пусть будут записями блога, а странички актеров и персонажей — соответственно, статичными страницами.

После того, как на сайте появились первые посетители, вплотную встал вопрос о том, что нужна нормальная структура, ведь Вордпресс не создает категории для статичных страниц, поэтому страницы с героями сериала, актерами, и т.д., идут вперемешку. Выход, конечно, есть — вложенные страницы. Например, создаем страничку «Персонажи» и подчиняем все странички ей, делаем ее родительской страницей всех этих страниц.

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

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

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

В папке темы создал файл navy.php , содержащий следующую запись:

<ul>
<?php
global $id;
wp_list_pages("title_li=&child_of=$id&show_date=modified&date_format=$date_format");
?>
</ul>

Этот код (собстна wp_list_pages с нужными аргументами) отвечает за вывод страниц, являющихся детьми текущей страницы, страниц, для которых текущая страница является родительской.

Однако, от того, что я создал файл navy.php, абсолютно ничего не изменилось — его еще нужно вставить в нужное место и в нужный файл… Нет ничего проще — идем в файл page.php и в нужном месте (можно экспериментировать, хотя, как мне кажется, там все и так достаточно понятно и наглядно) вставляем следующий код:

<?php
if (is_page(array (5,7,133))) {
// looking for page 5, 7, 133
include(TEMPLATEPATH . '/navy.php');
}
?>

где (array (5,7,133) — массив, в котором перечислены ID всех страниц, на которых нужно выводить список вложенных страниц. Таким образом я перестраховался в том плане, что, возможно, будут страницы, имеющие другую логику вложения, и для них выводить это все не нужно. Вот и все танцы с бубном, тем, у кого возникнет желание повторить это, думаю, проблем не возникнет. Если что-то непонятно — спрашивайте, отвечу по мере сил.

h++p://yakov.name/2009/03/21/kak-sdelat-vyvod-detej-stranicy/

2 комментария

  1. Вопрос появился такой:
    А если еще нужно вывести не только название страницы а еще и миниатюру, то как это решить?

  2. Данные вещи решаются не сказать что просто, но все же не очень сложно… Код я Вам сейчас вряд ли найду, в вот подсказку дать могу: Поищите то что вам нужно в уже готовых шаблонах и темах WordPress, в частности видел несколько интересных подобных примочек у Гудвина (GoodwinPress.ru)

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


восемнадцать + 17 =