Интересные статьи

Создание навигации “волшебная... Такой “скользящий” стиль навигации существует довольно давно, мне всего лишь было нужно изменить...

Readmore

15 регулярных выражений PHP в помощь... Регулярные выражения – это очень полезный инструмент для разработчиков. С их помощью можно находить,...

Readmore

Создание формы со скользящими... Пару недель назад, я читал статью Люка Вроблевски. Для тех, кто еще не слышал о нем, Люк -  автор...

Readmore

Анимация jQuery: изучение за 7 шагов Небольшой штрих анимации может украсить любой, скучный интерфейс. В сегодняшней статье, вы узнаете,...

Readmore

Фантастическая CSS3 лайтбокс... С удовольствием принимаю эстафету по обзору полезных зарубежных ресурсов, предложенную блоггером...

Readmore

Очередной блог фрилансера Rss

WordPress. Как разделить контент на две колонки

Дата публикации : 05-02-2010 | в рубрике : wordpress, переводы

Метки: ,

1

WordPress замечательная CMS, однако для реализации некоторых функций в вашей теме, иногда требуется нестандартное мышление. Обычно текст записи или страницы, выводится в шаблоне, с помощью одиночного вызова соответствующей функции:

the_content(args);

Но, что если вам нужно разделить контент на несколько блоков? Это может потребоваться, для многоколоночной темы, или, имеющей несколько разделов на одной странице. В wordpress есть функция get_the_content(), для получения контента в виде PHP-переменной, но как же определить где именно располагаются разделы?

Существуют различные решения, но все они сводятся к следующему:

  1. Разбивание контента HTML-тэгами, такими например, как заголовок h2. К сожалению, этот метод предполагает наличие минимальных знаний HTML у автора, к тому же он не очень гибкий – вам нельзя будет использовать два заголовка в одной колонке.
  2. Использование шорткода WordPress. Это более удобный способ, но все же, он накладывает определенные обязательства на редактора статьи – запоминать и правильно использовать необходимый код.

WordPress-тэг <!—more—>, может предложить гораздо лучшее решение. Обычно, он используется для разбиения длинной статьи на две части, однако не все темы используют эту возможность, к тому же, по умолчанию, он работает только для записей (не для страниц). Использование тега <—more—>, имеет ряд преимуществ:

  • кнопку “more”, которая доступна как в HTML, так и в визуальном редакторе.
  • разделы можно располагать в любом месте текста.
  • принцип действия очень простой, процесс разделения контента понятен даже не опытным пользователям.

Для того, чтобы использовать тег more, для разделения статьи, вам понадобится файл functions.php, расположенный в вашей теме. Просто откройте его, и вставьте следующий код.

// разбиваем контент тегом more и возвращаем в виде массива
function split_content() {

	global $more;
	$more = true;
	$content = preg_split('/<span id="more-\d+"><\/span>/i', get_the_content('more'));
	for($c = 0, $csize = count($content); $c < $csize; $c++) {
		$content[$c] = apply_filters('the_content', $content[$c]);
	}
	return $content;

}

Теперь, вам нужно найти файлы темы, содержащие вызов функции the_content(), расположенный внутри цикла. Как правило, это файлы single.php и page.php, которые используются для отображения одиночной записи и страницы. Однако, кроме этих файлов, the_content() также используется в файлах index.php, archive.php и search.php, для вывода списка записей, поэтому будьте осторжны, с внесением изменений в шаблон.

После того, как найдете нужный код, закомментируйте строку вызова функции the_content(), и вызовите функцию split_content().  Она вернет контент в виде массива,  где каждый элемент представляет собой одиночный блок контента, разделенный тегом <--more-->, $content[0], $content[1], $content[2] … и так далее. После этого, расположить блоки внутри нужной HTML-разметки не составит труда.

< ?php
// обычный вывод контента
// the_content('<p>Read the rest of this page »</p>');

// разбиение контента в массив
$content = split_content();

// вывод первой секции контента в отдельной колонке
echo '<div id="column1">', $content[0], '</div>';

// вывод оставшейся части контента в другой колонке
echo '<div id="column2">', implode(array_shift($content)), '</div>';
?>

Надеюсь, этот код будет вам полезен.

Перевод статьи «How to Split WordPress Content Into Two or More Columns«, автор Craig Buckler

Похожие записи

Комментарии: (1)

И вот после нескольких таких случаев, люди потихоньку начинают понимать, что CMS – это не совсем то, что удовлетворяет их замашкам.
Я уже писал похожий комментарий, однако, по случаю повторюсь: CMS – это не есть хорошо. По крайней мере в таких размахах, как это популярно сейчас. Каждому инструменту своё применение. И уж совсем не понятно, что делают CMS в блогах вэб-разработчиков.

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