Дизайн, основанный на метках

Дата публикации:Сентябрь 25, 2010

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

Метки, с другой стороны, обладают большей гибкостью и используются в основном для описания отдельных записей. В данном разделе мы рассмотрим их актуальное применение.

Достижение специального взаимодействия с помощью меток достигается одним из трех различных путей. Первый путь является наиболее очевидным: возможность управления страницами архивов меток. Вероятно, вы помните, что шаблон tag.php позволяет управлять отображением меток, также как и шаблон tag-X.php, где X — определяющая строка какой-либо метки. Существенное отличие между category-X.php и tag-X.php заключается в следующем: в первом шаблоне вместо X может быть употреблен только идентификатор рубрики. Использование указанных шаблонов дает возможность собственного представления списка записей, построенного на базе какой-либо метки. В теории это означает, что существует возможность создания секций, работающих аналогично рубрикам, но построенных на метках.

Второй путь, связанный с управлением контентом сайта, основан на использовании условного тега is_tag(). Он работает практически также, как и is_category(), и требует в качестве одного из своих параметров определяющую строку метки, к примеру:

<?php is_tag('pirates'); ?>

Хорошо продуманные проекты редко включают в себя значительное число рубрик. В основном они строятся как раз на использовании меток. Однако, одной меткой вряд ли удастся обойтись. Для того чтобы передать массив меток в условный тег is_tag(), используется следующая конструкция:

<?php is_tag(array('pirates', 'ninjas', 'mushrooms')); ?>

Она возвратит истину всякий раз, когда сообщение будет обладать какой-либо из перечисленных меток: pirates, ninjas или mushrooms.

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

К примеру, для записи с ID=129, post_class() вернет класс post-129:

<div id="post-129">
<!-- The actual post stuff would come here -->
</div>

Если вместо ID для рубрик использовать определяющую строку, к примеру, news, то класс получит вид category-news. То же самое относится и к меткам: они получают префикс «tag-«.

Удобство указанного использования заключается в более тщательном контроле над представлением различных материалов. Если вы хотить придать некоторым записям отдельный эмфазис, выделить их среди остальных — более приемлемого решения, чем размечивание, вам не найти. Допустим, к примеру, что вы хотите вывести сообщение «Спасибо нашим спонсорам» среди общего контента сайта, но не желаете, чтобы читатели спутали его с обычной записью. В таком случае достаточно будет добавить к сообщению метку sponsor, и затем при помощи post_class() присвоить записи класс post-sponsor, который в дальнейшем может быть отдельным образом стилизован в таблице стилей CSS. Можно задать выделяющийся шрифт, яркую цветовую гамму, фоновое изображение, границы и т.д.

Мы убедились в том, что сайт может быть построен как на основе рубрик, так и на основе меток. Мой совет — будьте очень внимательны при добавлении рубрик; используйте их лишь для основных разделов сайта. В дальнейшем вы всегда сможете выполнить любое представление записей, которое вам понадобится, с помощью меток и стилевых правил CSS.

Альтернатива: произвольные поля

Допустим, в силу ряда причин, вы не хотите использовать основанный на метках дизайн. Однако, вы остро нуждаетесь в добавлении спонсорских объявлений среди обычного контента, и хотите, чтобы соответствующая им метка не была отображена в облаке тегов. Исключить метку из облака тегов можно следующим образом:

<?php wp_tag_cloud('exclude=sponsor'); ?>

Однако, допустим, что в силу ряда причин вы не желаете идти данным путем, и хотите получить аналогичный результат с помощью альтернативных решений. В таком случае отличные возможности предлагают произвольные поля. В примере ниже мы создадим поле под названием Poststyle, которое будет хранить требуемый стиль для рекламных записей.

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

<?php $specialstyle = get_post_meta($post-&gt;ID, 'Poststyle', true); echo $specialstyle; ?>

Следующий код используется для вывода ID и классов для блока div:

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

Связать добавление классов с ID можно и по-другому:

<div id="post-<?php the_ID(); ?> <?php $specialstyle = get_post_meta($post->ID, 'Poststyle', true);
echo $specialstyle; ?>" <?php post_class(); ?>>

Однако, это решение не является самым лучшим. Попробуем связать добавление класса с post_class(). Насколько вы помните, post_class() может принимать параметры, которые будут преобразованы в классы. Если вы хотите добавить класс turtles к определенным записям, достаточно будет использовать следующее выражение:

<?php post_class('turtles'); ?>

В нашем случае понадобится воспользоваться следующим выражением:

<div id="post-<?php the_ID(); ?>" <?php post_class( $specialstyle = get_post_meta($post->ID, 'Poststyle', true) ); ?>>

Выражение добавит класс, хранящийся в произвольном поле Poststyle, к блоку div.

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

Поделиться

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

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

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.

Предыдущая запись:

Следующая запись: