Архив июля 2009 г.
27 июля 2009 г.

Может возникнуть необходимость выделения особым образом первого поста в цикле (например, когда нужно сделать совершенно другой дизайн в отличие от остальных постов), будь то главная страница, страница архивов, поиска и т.д. Такая задача решается путем добавления специального CSS-класса с помощью несложного PHP-кода.

Первоначально имеем примерно такой стандартный цикл вывода наших постов:

<?php if (have_posts()) : ?>
	<?php while (have_posts()) : the_post(); ?>

		<div class="post">
			...
		</div>

	<?php endwhile; ?>
<?php endif; ?>

Чтобы сменить оформление первого поста с помощью CSS, добавим к нему класс first. Код цикла примет следующий вид:

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

		<div class="post<?php if ($i == 1) echo ' first'; ?>">
			...
		</div>

	<?php endwhile; ?>
<?php endif; ?>

Вот и все. Теперь, остается, используя класс first, переопределить стили для первого поста.

—–
На сайте “из рук в руки” публикуются бесплатные частные и коммерческие объявления. Здесь вы можете добавить объявление, если вам нужно что-либо продать или купить, и его увидит большая аудитория.

11 июля 2009 г.

Имеется очень интересная возможность – с помощью PHP получить код первого изображения из поста и затем отобразить его в нужном месте цикла. Это может быть полезно, например, когда текст поста отображается в виде анонса.

В файл functions.php необходимо вставить следующую функцию:

function catch_that_image() {
	global $post, $posts;
	$first_img = '';
	ob_start();
	ob_end_clean();
	$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
	$first_img = $matches [1] [0];
	if(empty($first_img)) {
		$first_img = "/images/default.jpg"; // Ссылка на изображение-заглушку, если в посте оно не найдено
	}
	return $first_img;
}

После этого в цикл там, где нужно отобразить первое изображение из поста, вставляем следующий код:

<img src="<?php echo catch_that_image(); ?>" alt="" />

Тегу img можно указать ширину прямо в нем, или через CSS. Высоту при этом указывать не стоит, чтобы уменьшенное изображение сохраняло пропорции.

—–
В портале Trucklist.ru, предлагающем информацию о коммерческом транспорте, представлена вся спецтехника и грузовики, продажа которых осуществляется как частными лицами, так и производителями и официальными дилерами. Данный сайт является приложением к журналу “Коммерческие Авто”.

Задача: получить список страниц в следующем виде, используя встроенную в WordPress функцию вывода страниц wp_list_pages():

Контакты | О сайте | Карта сайта

В коде это должно выглядеть следующим образом:

<a href="#">Контакты</a> | <a href="#">О сайте</a> | <a href="#">Карта сайта</a>

По умолчанию хтмл-код списка страниц выглядит примерно так:

<li class="page_item page-item-49"><a href="#" title="Контакты">Контакты</a></li>
<li class="page_item page-item-78"><a href="#" title="О сайте">О сайте</a></li>
<li class="page_item page-item-69"><a href="#" title="Карта сайта">Карта сайта</a></li>

Решение

Содержимое, которое возвращает функция wp_list_pages(), мы с помощью дополнительного параметра echo=0 поместим в переменную, в которой, используя регулярные выражения, сделаем необходимую нам замену тегов. Можно использовать один из нижеприведенных вариантов.

1-й вариант решения

<?php
	$list_pages = wp_list_pages('sort_column=menu_order&title_li=&depth=1&echo=0');
	$list_pages = preg_replace('/<\/li>[^>]*<li([^>]*)><a/is', ' | <a$1', $list_pages);
	$list_pages = preg_replace('/<li([^>]*)>/is', '', $list_pages);
	$list_pages = str_replace('</li>', '', $list_pages);
	echo $list_pages;
?>

2-й вариант решения

<?php
	$list_pages = wp_list_pages('sort_column=menu_order&title_li=&depth=1&echo=0');
	$list_pages = preg_replace('#<li\s(.+)>.+(href=".+" title=".+">.+</a>)</li>#siU','<a $1 $2',$list_pages);
	preg_match_all('#(<a.+/a>)#siU',$list_pages,$matches);
	$list_pages = implode(' | ',$matches[1]);
	echo $list_pages;
?>

В результате выполнения этой хитрой замены вышеуказанный список в виде тегов li превратится в такой:

<a class="page_item page-item-49" href="#" title="Контакты">Контакты</a> | <a class="page_item page-item-78" href="#" title="О сайте">О сайте</a> | <a class="page_item page-item-69" href="#" title="Карта сайта">Карта сайта</a>

Получился хтмл-код, которого нам и требовалось добиться.

—–
Доминикана, благодаря теплому климату, является одним из популярных мест отдыха. Туры в Доминикану привлекательны и тем, что для отдыха в этом замечательном уголке Земли не требуется получение визы.

Облако тегов