Делаем собственную тему для WP — часть 4

10 03 2007

Оригинал статьи - Part 4 - Comment

    В части 4, мы изучим сделать на? comments.php файл. Сначала я покажу Вам где и как будут отображаться для комментариев, и затем мы поместим необходимые тэги. Этот comments.php будет вызываться на?им index.php файл, когда мы отображаем отдельно запись или страницу. Функция, которая вызовет файл - <?php comments_template(); ?>.

Размещение комментариев.

Отобразим примерную схему размещения комментариев:

Заголовок (Header) - ?апка блога

пндекс (Index) - основное содержание страниц

Список комментариев, если они есть

Форма добавления комментария

 

Меню блога (Sidebar)

Нижний колонтитул - подвал (Footer)

     Откройте Ва? текстовый редактор, вставьте следующий HTML код и сохраните как comments.php

<div id="comments">
<div class="comments_list">
comments list here
</div> <!– close comments list –>
<div class="comments_form">
comments form here
</div> <!– close comments form –>
</div> <!– close comments –>

    В comments_list, мы отобразим комментарии упорядоченно. Таким образом мы заменяем “comments form here” На список (тег <ol>)? где между тегами <li> (пункт списка) будет отображаться автор и его комментарий.

<div class="comments_list">
<ol>
<li>
<div class="comments_author">
comments author here
</div> <!– close comments_author –>
<div class="comments_text">
comments text here
</div>
</li>
</ol>
</div> <!– close comments list –>

    Мы не будем касаться на?его comments_form прямо сейчас, поэтому мы только скопируем и вставим html + php код. Не просто объяснить, как это работает, если Вы не имеете знаний основ php. Теперь мы вставляем тэги WordPress, необходимые в на?ем comments.php. Поместите этот код вы?е, чем на?и комментарии (вы?е <div class="comments_list">)

<?php // Не удаляйте эту линию!
if (?comments.php’ == basename($_SERVER[?SCRIPT_FILENAME’]))
die (?Please do not load this page directly. Thanks!’);
if (!empty($post->post_password)) { // if there’s a password
if ($_COOKIE[?wp-postpass_’ . COOKIEHASH] != $post->post_password) { // and it doesn’t match the cookie
?>
<p class="nocomments">This post is password protected. Enter the password to view comments.<p>
<?php
return;
}
}
/* Эта переменная будет чередовать фон на?их комментариев */
$oddcomment = ?alt’;
?>
<div id="comments">
...

Вы?е <div id = ”comments_list”>, мы помещаем функцию <?php if ($comments) : ?>. WordPress отобразит комментарии, если они есть.

<?php if ($comments) : ?>
<div class="comments_list">

    Следующая вещь, которую мы сделаем, это цикл вывода комментариев. Он начинается после тега <ol> и заканчивается перед </ol>.

<ol>
<?php foreach ($comments as $comment) : ?>
<li> и </li> здесь. смотри ниже...
<?php endforeach; ?>
</ol>

    Теперь мы сосредоточимся в на?ем цикле. Сконцентрируйте все свое внимание на нем. Хоро?о? птак, вот - на?е начало списка комментариев с <li> и концом с </li>. Примерно так:

<li>
<div class="comments_author">
comments author here
</div> <!– close comments_author –>
<div class="comments_text">
comments text here
</div> <!– close comments_text –>
</li>

    Заменим <li> на это: <li class=”<?php echo $oddcomment; ?>” id=”comment-<?php comment_ID() ?>”>  Этот код разделяет оформление четных и нечетных комментариев. Теперь при помощи Ва?его CSS файла Вы сможете настроить красивый список комментариев. Для вывода автора комментария вставляем <? php comment_author_link ()?>. Теперь заменяем "comments text here" на <?php comment_text() ?> - это отобразит на на?ем сайте текст комментария.
Некоторые из Вас могли бы использовать опцию премодерации комментариев. Таким образом мы должны сказать комментатору, что его комментарий ожидает проверки. Чтобы сделать это, мы помещаем этот код перед на?им <? php comment_text ()?>:

<?php if ($comment->comment_approved == ?0?) : ?>
<em>Ва? комментарий ожидает проверки.</em>
<?php endif; ?>

    Теперь добавляем код после <?php endforeach; ?>.

<?php /* Changes every other comment to a different class */
if (?alt’ == $oddcomment) $oddcomment = ”;
else $oddcomment = ?alt’;
?>

Но и это еще не всё! Мы должны вставить этот код до comments_list div.

<?php else : // Это отобразиться, если еще нет ни одного комментария ?>
<?php if (?open’ == $post->comment_status) : ?>
<!– Комментирование разре?ено, но комментариев нет. –>
<?php else : // comments are closed ?>
<!– Комментирование закрыто. –>
<p class="nocomments">К данной записи нельзя оставлять комментарии.</p>
<?php endif; ?>
<?php endif; ?>

Форма отправки комментариевв

    Теперь надо дать возможность на?им посетителям оставлять комментарии. Однако, мы должны удостовериться, что форма будет доступна пользователям. Это проверяется с помощью функции <?php if (’open’ == $post->comment_status) : ?>. Вставляем её перед <div class="comments_form">.  Возможно, что Вы хотите разре?ить только зарегистрированным и авторизованным пользователям. Тогда код будет выглядеть так:

<?php if (?open’ == $post->comment_status) : ?>
<?php if ( get_option(?comment_registration’) && !$user_ID ) : ?>
<p>Вы должны <a href="<?php echo get_option(’siteurl’); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">Войти </a> чтобы прокомментировать пост.</p>
<?php else : ?>
<div class="comments_form">

    После  всей comments_form, проверяем конец цикла. Наконец, на? comments.php будет походить на это

<?php // Do not delete these lines
if (?comments.php’ == basename($_SERVER[?SCRIPT_FILENAME’]))
die (?Please do not load this page directly. Thanks!’);
if (!empty($post->post_password)) { // if there’s a password
if ($_COOKIE[?wp-postpass_’ . COOKIEHASH] != $post->post_password) { // and it doesn’t match the cookie
?>
<p class="nocomments">Эта запись защищена паролем. Введите пароль, чтобы прокомментировать.<p>
<?php
return;
}
}
/* Это изменяет фон комментариев */
$oddcomment = ?alt’;
?>
<div id="comments">
<?php if ($comments) : ?>
<div class="comments_list">
<ol>
<?php foreach ($comments as $comment) : ?>
<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">
<div class="comments_author">
<?php comment_author_link() ?>
</div> <!– close comments_author –>
<div class="comments_text">
<?php if ($comment->comment_approved == ?0?) : ?>
<em>Ва? комментарий ожидает проверки.</em>
<?php endif; ?>
<?php comment_text() ?>
</div> <!– close comments_text –>
</li>
<?php /* Changes every other comment to a different class */
if (?alt’ == $oddcomment) $oddcomment = ”;
else $oddcomment = ?alt’;
?>
<?php endforeach; ?>
</ol>
</div> <!– close comments_list –>
<?php else : // this is displayed if there are no comments so far ?>
<?php if (?open’ == $post->comment_status) : ?>
<!– If comments are open, but there are no comments. –>
<?php else : // comments are closed ?>
<!– If comments are closed. –>
<p class="nocomments">Комментарии запрещены.</p>
<?php endif; ?>
<?php endif; ?>
<?php if (?open’ == $post->comment_status) : ?>
<?php if ( get_option(?comment_registration’) && !$user_ID ) : ?>
<p>Вы должны <a href="<?php echo get_option(’siteurl’); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">войти</a> чтобы прокомментировать.</p>
<?php else : ?>
<div class="comments_form">
<!– Форма отправки комментария Редактируем очень осторожно! –>
<form action="<?php echo get_option(’siteurl’); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if ( $user_ID ) : ?>
<p>Вы во?ли как <a href="<?php echo get_option(’siteurl’); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option(’siteurl’); ?>/wp-login.php?action=logout" title="Log out of this account">Выйти »</a></p>
<?php else : ?>
<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
<label for="author"><small>пмя: <?php if ($req) echo "(required)"; ?></small></label></p>
<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
<label for="email"><small>Е-Mail (не будет опубликован) <?php if ($req) echo "(required)"; ?></small></label></p>
<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small>Website</small></label></p>
<?php endif; ?>
<?php smilies_clickable(); ?>
<p><textarea name="comment" id="comment" cols="50" rows="10" tabindex="4"></textarea></p>
<p><input name="submit" type="submit" id="submit" tabindex="5" value="Отправить" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /></p>
<?php do_action(?comment_form’, $post->ID); ?>
</form>
<!– Конец формы отправки комментария! –>
<div class="comment_meta">
<?php if ($post-> comment_status == "open" && $post->ping_status == "open") { ?>
<p>
<a href="<?php trackback_url(display); ?>">Trackback this post</a> | <?php comments_rss_link(?Subscribe to the comments via RSS Feed’); ?>
</p>
<?php } elseif ($post-> comment_status == "open") {?>
<p>
<?php comments_rss_link(?Subscribe to the comments via RSS Feed’); ?>
</p>
<?php } elseif ($post->ping_status == "open") {?>
<p>
<a href="<?php trackback_url(display); ?>">Trackback this post</a>
</p>
<?php } ?>
</div>
<?php endif; // If registration required and not logged in ?>
</div> <!– close comments form –>
<?php endif; // if you delete this the sky will fall on your head ?>
</div> <!– close comments –>

    Вы читаете четвертую часть статьи "Как создавать свои темя для WordPress". Для того, чтобы ознакомиться с другими частями нажмите на ссылки ниже.
· Часть 1 - Слои (Layout)
· Часть 2 - Заголовок (Header)
· Часть 3 - пндекс (Index)
· Часть 4 - Комментарий (Comment)
· Часть 5 - Меню блога (Sidebar)
· Часть 6 - Нижний колонтитул - подвал (Footer)
· Часть 7 - Фини?! (Последние доводки и советы)

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Информация