Переход к предыдущей публикации Бросить курить реально? SABRE - Simple Anti Bot Registration Engine [Russian by Daemony] - защищаемся от автоматических регистраций Переход к следущей публикации
 
Я хочу добавить Daemony`s Live RSS ленту в Google Reader Я хочу добавить Daemony`s Live RSS ленту в Яндекс.Лента Я хочу получать RSS ленту Daemony`s Live Blog по электронной почте Я хочу добавить Daemony`s Live RSS ленту в My Yahoo Я хочу добавить Daemony`s Live RSS ленту в My MSN

 

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

Немного о циклах и условиях в PHP (модифицируем Wordpress шаблон)

Немного о циклах и условиях в PHP для модификации Wordpress шаблона Говорю сразу, что в PHP я не шибко силен. Так, по мелочам что-либо (для себя) могу подправить, синтаксис языка знаком. Однако, творить какие-то более или менее сложные вещи это не для меня. Потому, знающих этот язык на хорошем уровне, просьба меня не пинать, а лучше поправить или дополнить, если есть что сказать.

Так же следует отметить, что я никогда не использовал и наверное не буду использовать плагины WP для вставки кода Google Adsense в публикации. Гораздо удобнее и быстрее (как по мне) делать это руками, вставляя блоки непосредственно в шаблон темы оформления.

Значит сегодня заинтересовался блогом товарища Brim’а. Просмотрел практически все публикации в нем, обнаружив интересные для меня заметки. Среди прочего встретились рекомендации, как в полосе комментариев пронумеровать список оставленных комментариев, а так же как выделить те комменты, которые оставил автор обсуждаемого материала. Это мне напомнило то, что я хотел давно сделать у себя…

Собственно, ничего сложного и нет. Использование PHP цикла дает возможность нумеровать комментарии. Условие, которое проверяет соответствие e-mail адреса комментатора адресу автора публикации, вставляет в код необходимый стиль css, если эти параметры равны.

Для того, чтобы пронумеровать ленту комментариев в цикл вывода сообщений вставляется счетчик с переменной $i начальное значение которого равно 1. Далее в цикле это значение каждый раз увеличивается на единицу, после вывода скриптом очередного комментария. Исправления следует сделать в файле comments.php текущей темы оформления. К слову сказать, есть достаточно много wordpress темок, которые уже имеют такой счетчик и вывод комментов сопровождается нумерацией.

Для того, чтобы выделить комментарий автора обсуждаемой публикации следует добавить условие вида if ($comment->comment_author_email == get_the_author_email()) и при выполнении условия задать определенный стиль, либо класс из файла style.css

Вот так выглядит мой файл comments.php (точнее, его фрагмент):

	<?php $i = 1; ?>
	<?php foreach ($comments as $comment) : ?>
	<?php if (get_comment_type()=="comment") : ?>

	<li class="<?php if ( $comment->comment_author_email == get_the_author_email() ) echo 'mycomment';
                         else echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">

<fieldset <?php if ($comment->comment_author_email == get_the_author_email()) {
                echo 'style="border: 1px solid #0000ef;"';} ?>>
        	<legend <?php if ($comment->comment_author_email == get_the_author_email()) {
                              echo 'style="border: 1px dotted #0000ef;"';} ?>>
			<a style="font-family: Verdana;" href="#comment-<?php comment_ID() ?>"
			title="ID комментария <?php comment_ID() ?>">№ <?php echo $i; $i++; ?></a> .:.
			<strong><?php comment_author_link() ?></strong> говорит:
		</legend>

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

		<?php comment_text() ?>

	<div style="font-size: 9px; margin-bottom: 5px;" align="right">
		<span style="font-size: 11px; font-family: courier new;">
                 <?php comment_date('Y-m-d H:i:s T') ?>
                </span>
	</div>
</fieldset>

	</li>

В нем:

  • - желтым маркером отмечены фрагменты кода - счетчика и вывода номера комментария;
  • - белым на черном отмечены фрагменты для изменения стилей <fieldset> и <legend>, при условии, что комментарий оставлен автором публикации -   необходимо для выделения комментариев автора.

Начинать правку следует с поиска в файле comments.php фрагмента <?php foreach ($comments as $comment) : ?> Таких фрагментов здесь обычно два. Использовать и работать следует с первым, потому что второй служит для вывода трекбеков (см. комментарии в коде темы).

Покрутив комменты, я подумал, что циклы можно использовать еще с одной целью. Ранее, при вставке блоков Google Adsense в шаблоне темы оформления Daemony’s Live я обошел стороной файл index.php который отвечает за вывод ленты последних публикаций на главной странице. В этой ленте у меня отображается семь последних публикаций (анонсов). Неплохо было бы, если рекламные блоки отображались на главной странице в двух местах, допустим, после первого, четвертого и седьмого анонса. С циклами и счетчиком реализовать это несложно.

Лента последних публикаций формируется с помощью цикла  <?php while (have_posts()) : the_post(); ?>. Вставим перед этим циклом счетчик с исходным значением $i = 0. В цикле с каждым новым "проходом" будем увеличивать $i на единицу <?php $i++; ?>. Поставим условие, что если $i равно 1 или 4 или 7, то произвести вставку файла через инклюд. В целом у меня index.php преобразился до такого вида:

	<?php if (have_posts()) : ?>

		<?php $i = 0; ?>
		<?php while (have_posts()) : the_post(); ?>
		<?php $i++; ?>

		<div class="entry">
		   <div id="post-<?php the_ID(); ?>">
			<div align="right"><?php the_time('l, j F, Y  H:i:s T') ?></div>
			 <h2><a href="<?php the_permalink() ?>" rel="bookmark">
                                <?php the_title(); ?>
                             </a>
                         </h2>

					<?php the_content(''); ?>

		<?php if ($i == 1 || $i == 4 || $i == 7 ) {
			echo '<div>&nbsp;</div><div align="center"';
			include (TEMPLATEPATH . '/adsense/adsense_720x90_text_noborder.php');
			echo '</div><div>&nbsp;</div>';
		} ?>

				<p class="postmetadata">
                                   ...
				</p>
		   </div>
		</div>

		<?php endwhile; ?>

А как это выглядит в работе можно посмотреть на главной странице.

 

Ключевые слова


| | | |
 

Публикации по теме

Вторник, 13 мая, 2008 07:57:03 EEST

Подпишись на RSS ленту и будь в курсе обновлений

Я хочу добавить Daemony`s Live RSS ленту в Google Reader Я хочу добавить Daemony`s Live RSS ленту в Яндекс.Лента Я хочу получать RSS ленту Daemony`s Live Blog по электронной почте Я хочу добавить Daemony`s Live RSS ленту в My Yahoo Я хочу добавить Daemony`s Live RSS ленту в My MSN

Я хочу подписаться на Daemony`s Live RSS ленту комментариев к записям

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

Быстрая вставка HTML тегов

Подсказки:
  • Для вставки фрагментов кода используйте "быстрый" тег <PRE></PRE>.
  • Для цитирования фрагментов текста используйте "Цитата".
  • Поддерживаются также другие HTML теги.

Поля, помеченные красной "звездочкой" обязательны к заполнению.