Здравствуйте, уважаемые читатели wmbn.ru! Продолжаем изучать структуру шаблона WordPress и сегодняшний пост будет посвящен файлам — archives.php, comments.php и footer.php. Те, кто знаком с английским языком могут догадаться, что данные файлы дословно переводятся как архивы, комментарии и подвал. Эти 3 составляющих любого шаблона для WordPress отвечают за вывод и структуру записей в архивах, отзывов в комментарии и остальных данных в подвале.

Структура комментариев, архива и футера шаблона WordPress

Конечно, можно обойтись и без комментариев, и, возможно, без подвала сайта, однако уже давно сложилось, что любой блог, в особенности персональный, создан для общения, в чем проявляется тенденция Web 2.0. Я пока не видел ни одного блога, в котором запрещалось комментировать все записи — бывало находил такие, что только часть статей запрещалось комментировать, точнее невозможно, так как текстового блока для отзывов не было. Что касается нижней части сайта, именуемого подвалом или футером (footer) — возможно и есть сайты, которые не используют футер, а именно файл footer.php, просто заключив закрывающие теги в основном шаблоне, что конечно, проще всего сделать. Признаться, на первых порах изучения языка PHP я вообще все составляющие сайта кидал в один файл, не задумываясь о последующем редактировании.

Структура файла archives.php — параметры кода и запросов и способы вывода рубрик на страницы

Начнем с просмотра и анализа файла archives.php — Шаблон страницы «Архивы», который формирует записи по определенным критериям, в частности это по месяцам или статьи из определенной рубрики. Данный файлы можно найти в Редакторе, который расположен в меню Внешний вид на странице администратора WordPress. Рассмотрим на примере моей темы данный файл (шаблон брал не измененный, так как нынешний подвергся многочисленным изменениям).

Структура архивов шаблона

Начинается файл со строк:

<?php
/*
Template Name: Archives
*/
?>

В ограничителях ?php и ? указано название шаблона с использованием комментариев.

<?php get_header(); ?>
<div class="page_archives_div">

Так же по стандарту загружается в основной шаблон заголовок сайта (header.php), после которого идет блок для вывода записей на страницу (не путать с циклом). Посмотреть его стиль можно с помощью Firebug или с помощью расширения Google Chrome. Для интереса заглянув в файл style.css, чтобы посмотреть структуру и применяемые стили, стало понятно, что для вывода и построения структуры используется не один селектор (оператор), а множество — начиная от простого выравнивания текста, заканчивая сложной структурой для создания списков, ссылок и прочих составляющих текста, для которых прописывались свои шрифты, размеры. цвета и прочие стили.

<div class="ar_panel">
<h2><span>Архив по категориям:</span></h2>
<ul>
<?php wp_list_categories('title_li='); ?>
</ul>
</div>

Следующая составляющая структуры шаблона начинается с блока div, для которой прописан класс ar_panel. Ниже уже понятно, что указывается заголовок второго уровня h2, но вот дальше идет интересный участок кода, в котором используется маркированный список, причем структура его очень интересна — как обычно открывается тег маркированного списка, но для построения пунктов уже используется PHP код, о котором поговорим по подробнее. Данная строка, а именно:

<?php wp_list_categories('title_li='); ?>

Используется для создания структуры в виде списка, о чем говорит тег ul, а то, что выводятся именно категории — завершение title_li’, при этом создается для каждого пункта ссылка на исходную запись соответствующей рубрики. Что интересно, то данный участок кода, а точнее запрос имеет свои параметры, и почитав документацию к WordPress, нашел к ней 25 свойств, с помощью которых можно выводить данные. Для примера приведу код, который позаимствовал из документации, чтобы более наглядно понять в чем суть данного запроса ну и его структуру:

<ul>
<?php wp_list_categories('orderby=name&include=3,5,9,16'); ?>
</ul>

Происходит сортировка пунктов в алфавитном порядке, причем выводятся категории только и ID 3, 5, 9 и 16. Свойства конечно можно поменять. Исходники находятся в файле categoty-template.php , где в основном указаны различные действия для структуры кода, дополненные комментариями, что может слегка напугать большим объемом страницы.

Следующий участок файла archives.php:

<div class="ar_panel ar_panel2">
<h2><span>Архив по месяцам:</span></h2>
<ul class="dark">
<?php wp_get_archives('type=monthly'); ?>
</ul>

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

  • yearly — вывод записей по годам;
  • monthly — по месяцам;
  • daily — дни;
  • weekly — недельные данные;

Кроме вывода записей по месяцам, можно указать и другие параметры, к примеру ограничить количество выводимых статей (limit), указать формат вывода (format) и другие параметры. Так же для примера приведу измененный код, в котором указано ограничение по выводу постов:

<?php wp_get_archives('type=monthly&limit=7'); ?>

Исходники находятся в файле general-tempalte.php, который тоже сопровождается комментариями к каждой функции.

Структура файла comments.php — комментарии WP

Перейдем к не менее интересному файлу comments.php, который отвечает за структуру и вывод комментариев на страницы сайта, в частности записей, но это кто как настроит.

Структура комментариев WordPress

Начинается код с предупреждения, причем сразу двух:

<?php // Do not delete these lines
if ('...']))
die ('Не стоит обращаться к этому файлу напрямую. Спасибо!');
if (!empty($...)) { // if there's a password
...
?>
<p>Запись защищена паролем. Введите пароль, чтобы оставить комментарий к данной записи.</p>

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

Изменять можно только ту структуру кода, которая находится после слов (комментария):

<!-- You can start editing here. -->

Опят же люди, знающие английский это поймут и без объяснения. Начинается цикл с проверки условия комментариев на странице, т.е. есть ли возможность оставить свое слово, и если ответ будет положительным, то будет показано общее число отзывов — 0, 1 и т.д.:

<?php if ($comments) : ?>
<h2 id="comments">Комментарии: <?php comments_number('(0)', '(1)', '(%)' );?></h2>

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

<p>Вы должны <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">Войти</a>,
чтобы оставить комментарий.</p><?php else : ?>
...
<p>Вы вошли как <a href="<?php echo get_option('siteurl'); ?>
<?php ... ?></a>. <a href="<?php ... logout_url(get_permalink()); ?>"
title="Выйти из аккаунта">Выйти &raquo;</a></p>

Древовидную структуру комментариев получаем с помощью функции reply, правда я нашел только функцию отмены ответа (возможно, ответ строится из основного цикла):

<div class="cancel-comment-reply">
<small><?php cancel_comment_reply_link(); ?></small>
</div>

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

<label for="author"><small>Name <?php if ($req) echo "(обязательно)"; ?></small></label></p>

Лучше будет выглядеть, если за место Name поставить Имя:

<label for="author"><small>Имя <?php if ($req) echo "(обязательно)"; ?></small></label></p>

Понятно, что код зависит от блока комментирования и настроек, но по умолчанию в структуре файла и блока всегда присутствовали 3 текстовых поля — Адрес сайта (URL), адрес электронной почты (Email) и Имя автора, хотя Имя в первую очередь.

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

Подвал сайта footer.php — структура и назначение

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

Подвал сайта footer.php

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

<div id="footer">
<div id="footer_text">
<p>&copy; 2011-2012 <a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a> Всё интересное о блоге, создании и продвижении блога на WordPress, заработке на блоге и не только...

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

<div style="text-align: center;">
<?php if ( (is_home())&&!(is_paged()) ){ ?>

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

<?php }else{ ?>

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

<?php } ?>

Ну и как положено разметке html — в конце завершающие body и html.

На этом можно запись закончить, однако серию постов завершать рано, ибо она будет законченной, когда внизу вы уведите полный список постов из серии Структура шаблона. Если собрались что-то менять в структуре шаблона, в особенности скрипты (для любопытства), то обязательно сделайте резервную копию и читайте комментарии к функциям — авторы их пишут не просто так.

Комментариев: 10

  1. Александр

    Есть вопрос по поводу подвала блога. У меня в теме находится ссылка на автора который создал данную тему. Если быть точным, то написано «Локализация: Шаблоны для Вордпресс». Я нашёл в подвале эту ссылку, подумал надо её удалить. Удалил. И после блог перестал работать. Выдавалась ошибка такого типа: не обнаружена обратная ссылка. Получается безвыходная ситуация.

    1. writer

      Выход есть, один шаблон однажды получилось убрать от сслыки, но там много кода перерыл…Буду искать более менее универсальный способ

  2. Татьяна

    Подскажите! На своём сайте не знаю, где искать внешнюю ссылку, чтобы её удалить. Она расположена под календарём, называется «сайт для родителей»

      1. Татьяна

        Спасибо , получилось. Ссылка была зашита в sidebar-default.php И зашифрована echo base64_decode($str) Удалила всё на свой страх и риск. Получилось! Спасибо!

  3. West Blogger

    Вадим, файл Archives.php не обязательно называется именно так, встречал названия, которые отдельно выводят категории — Categories.php, архивы — Archives.php (разбиение по месяцам) и т.п.

    1. writer

      Я это знаю, просто чаще всего встречал стандартное название файла archives.php и вообще сам шаблон состоял из стандартных файлов. А если рассматривать каждый файл, который встречается в каждом шаблоне — это будет долгий труд и, возможно, мало кому нужный. А так, по крайней мере нужно иметь представление хоть о стандартных файлах, что бы можно было решить большинство проблем)))

      1. West Blogger

        Ну да, в целом париться из-за этого не стоит, но иметь ввиду нужно, так как неподготовленные люди могут не сразу врубиться в такое несоответствие ;)

  4. Ольга

    Здравствуйте. Подскажите, пожалуйста, что делать: подвал прилип к правому сайдбару, т. е. убежал со своего законного места внизу шаблона и обвился как змея вокруг сайдбара. Сколько не искала ответ на этот вопрос найти так и не смогла. Когда случилось, точно не знаю. В код не лазила, ничего не изменяла, но была атака на сайт, может хакеры постарались? Что делать не знаю, переустановка темы (даже другой) ничего не дает, все остается также. Переустанавливать вордпресс очень не хочется, потом работы непочатый край.

  5. Дмитрий

    Доброго времени суток. Помогите решить проблему.Редактирую текст в записи все нормально а в рубрике выводится не отредактирован (пробелы разные между словами, запятые итд).Я только учусь так что в этом полный 0. Я понял что может дело archives.php, category.php. или style.css.
    Ну как посмотреть на это все, куда зайти и где исправить не знаю. Помогите месяц бьюсь как рыба об лед.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>