Как представить 'части' контента в WordPress?

3 авг. 2010 г., 14:04:42
Просмотры: 1.03K
Голосов: 10

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

Однако у меня возникли сложности с редактированием отдельных секций на странице - в частности, я даже не знаю, с чего начать. В "обычной" CMS страница традиционно разбивается на отдельные секции, и можно редактировать любую из них, либо напрямую изменяя контент, либо включая в это место общий контент. Я не могу понять, как сделать это в WordPress.

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

Есть ли подсказки, с чего начать?

Обновление

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

  • должен ли статический контент на странице находиться в Записи, Странице, Шаблоне или чем-то еще?
  • должен ли редактируемый контент быть Страницей, ... или чем-то другим?

Например:

<h1>О нас</h1>

<p>Example.com - компания, специализирующаяся на примерах, демонстрациях
и канонических вещах.</p>

Если я хочу, чтобы этот абзац был редактируемым, предположительно мне нужно что-то вроде:

<h1>О нас</h1>

<p><?php insert_page('name-of-content-chunk'); ?></p>

Обновление 2

После долгих исследований, проб и ошибок я пришел к следующим выводам:

  1. WordPress не настроен для простого повторения классической CMS, особенно в плане размещения нескольких частей контента на одной странице.
  2. Эту модель можно имитировать, более или менее, используя пользовательские типы записей (см. ниже)
  3. Страницы почти позволяют это сделать, однако:
    • Для включения страницы требуется плагин
    • Страницы не такие гибкие, как записи - например, нет пользовательских типов страниц

Метод, который я использовал с пользовательскими типами записей, в целом следующий:

  1. Страница является 'Page' с пользовательским шаблоном - назовем его 'mypage.php'
  2. Этот шаблон содержит следующее:
    <div id="header">
      <?php
        query_posts(array('name' => 'foo', 'post_type' => 'header-text'));
        get_template_part('header-text');
      ?>
    </div>
    
    <div id="content">
      <p>Некоторый статический текст в шаблоне, который может
      быть изменен только администратором сайта.</p>
    
      <?php
        query_posts(array('name' => 'bar', 'post_type' => 'image'));
        get_template_part('image');
      ?>
    </div>
    

Кто-нибудь понимает, что я имею в виду? :-)

cms
1
Комментарии

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

Tim Post Tim Post
3 авг. 2010 г. 14:57:58
Все ответы на вопрос 5
2

Как упомянул tnorthcutt, вы можете использовать пользовательские типы записей. Однако вам также стоит обратить внимание на произвольные поля, которые позволят вам указывать фрагменты динамических пользовательских данных, которые вы хотите связать с каждой страницей. Вот руководство от Smashing Magazine по произвольным полям, учебник от Nettuts (и видео), а также список других руководств.

4 авг. 2010 г. 12:40:33
Комментарии

Я изучу пользовательские типы записей. Проблема с произвольными полями, если я правильно их понимаю, заключается в том, что в худшем случае это просто обычный текст, а в лучшем - они не предлагают WYSIWYG-редактирование.

Bobby Jack Bobby Jack
4 авг. 2010 г. 13:44:03

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

Travis Northcutt Travis Northcutt
4 авг. 2010 г. 19:21:23
3

Если я правильно понял, вы хотите иметь разные макеты для разных страниц. Этого можно достичь двумя способами: создав индивидуальный шаблон для каждой страницы сайта или используя единый кастомный шаблон с различными условиями.
Для первого варианта ознакомьтесь с разделом WordPress Codex о создании собственных шаблонов страниц: http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates

Для второго варианта изучите этот туториал: http://www.darrenhoyt.com/2007/12/26/multiple-wordpress-page-layouts-in-one-single-template/

Затем вы можете перенести эти "блоки" в разные PHP-файлы, которые подключаются на конкретных страницах.

3 авг. 2010 г. 15:33:24
Комментарии

Хм... Я посмотрю ссылки, но не уверен, что правильно объяснил свою проблему. По сути, мне нужно работать с максимально 'атомарными' частями контента; то, что в любой другой CMS, с которой я работал, делается очень просто. Я обновил вопрос, чтобы попытаться объяснить его понятнее.

Bobby Jack Bobby Jack
3 авг. 2010 г. 16:03:33

Если вам нужен статический контент (и под статическим я подразумеваю чистый HTML, не загружаемый из базы данных — в отличие от записей WordPress), но вы всё равно хотите его редактировать, то добавьте эти блоки в шаблон. В противном случае просто разместите его на странице, и всё.

User User
3 авг. 2010 г. 17:02:03

А если я хочу, чтобы эти блоки можно было редактировать в WYSIWYG-режиме?

Bobby Jack Bobby Jack
4 авг. 2010 г. 17:12:02
0

Я думаю, ваш лучший вариант — использовать пользовательские типы записей.

4 авг. 2010 г. 06:52:35
0

Ознакомьтесь с такими плагинами, как Magic Fields. Он использует пользовательские поля внутри, но интерфейс может иметь богатый текстовый редактор, выпадающие списки и т.д.

Это позволяет вам определять элементы контента, их типы и (для выбора) их значения. Затем ваша тема может отображать это.

Альтернативой может быть определение области для плагина и выбор, какой плагин будет там размещен. Однако это менее гибко, так как все равно не позволяет использовать два специфичных для страницы/записи элемента контента.

8 авг. 2010 г. 06:45:03
0

Лучший плагин для безболезненного добавления пользовательских областей контента помимо заголовка и основного содержимого — это, вероятно, плагин "More Fields".

11 окт. 2011 г. 18:18:56