Как создать редактируемые блоки текста для главной страницы?

30 нояб. 2012 г., 22:25:35
Просмотры: 20.3K
Голосов: 11

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

Вопрос:

  • Как я могу разместить блоки текста в моём шаблоне, которые пользователи смогут редактировать из панели администратора?

Допустим, что-то вроде этого:

Схема макета главной страницы

Как сделать редактируемыми 3 верхних блока (о нас, миссия, почему мы...) через панель администратора? Или определенный текст в шапке или подвале сайта. Нужно ли мне создавать 3 записи и ссылаться на них в шаблоне через get_post($id)?

Какой способ будет наилучшим?

3
Комментарии

Дублирующий вопрос от того же пользователя.

Steve Steve
30 нояб. 2012 г. 22:31:24

@Stephen Нет, другой вопрос содержал несколько вопросов, я предложил разделить их на отдельные. И именно это автор делает здесь.

fuxia fuxia
30 нояб. 2012 г. 22:46:47

"Дублирующий вопрос от того же пользователя", говорите? Конечно, toscho закрыл его... чего еще ожидать? И как он сказал, теперь вы знаете почему.

Lightworker Lightworker
1 дек. 2012 г. 11:47:24
Все ответы на вопрос 6
5

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

  1. Создайте пользовательский цикл с помощью WP_Query. Смотрите наши примеры и страницу в Кодексе по использованию. Затем выводите анонсы страниц, к которым привязаны эти блоки.
    Здесь можно использовать вложения (изображения) и полное форматирование.

  2. Используйте виджеты. Смотрите наши примеры и страницу в Кодексе. Ограниченное форматирование, так как визуальный редактор плохо работает в формах виджетов.

  3. Используйте пользовательское меню навигации и выводите описание.

Вы можете комбинировать эти методы: используйте виджеты для шапки и подвала, WP_Query и анонсы страниц или записей для остальных блоков.

30 нояб. 2012 г. 22:54:58
Комментарии

Думаю, я проверю правильность вашего решения. Просто потому что вы выполняете остальные части и суммируете их. Как насчёт i18n здесь? Есть ли проблемы? И для пункта "1." вы рекомендуете использовать POSTS или PAGES? И конкретную страницу/запись для этого текстового отрывка, или целую страницу "О нас" со всем содержимым и выводом на главной только определённой части этой полной страницы?

Lightworker Lightworker
1 дек. 2012 г. 12:51:35

А для решения пункта "1.", что если клиент удалит запись/страницу, которую вы использовали для ссылки на текстовый отрывок из админ-панели? Потому что вы по сути модифицируете WP_Query, например, post_id=3, верно?

Lightworker Lightworker
1 дек. 2012 г. 13:04:27

Запрашивайте конкретный meta-ключ записи, или заголовки, или авторов. Но не запрашивайте ID записей, они могут измениться в любой момент. И если записей нет, просто ничего не показывайте. Клиент должен иметь возможность контролировать, какой контент отображается, а какой нет.

fuxia fuxia
1 дек. 2012 г. 13:08:41

То есть ты предлагаешь создать запись типа POST с названием "О нас", а в теме модифицировать WP_Query через post_title = "О нас" (или что-то в этом роде) и вывести the_content() в этот DIV, верно? Тогда у меня будет страница "О нас", и я смогу создать ссылку на неё, например, в навигационной панели? Я также видел, как это можно сделать через виджет, как ты показывал в ответе. Я могу расширить класс Widget, чтобы получить по сути текстовое поле с заголовком... но без форматированного текста, и это немного сложно в использовании и даже реализации... не так ли?

Lightworker Lightworker
1 дек. 2012 г. 13:16:50

Да, да, да, нет, да, возможно, нет. Как видишь, пихать кучу новых вопросов в комментарии — не самая удачная идея. :) Следуй по ссылкам, задавай новые вопросы, когда застрянешь.

fuxia fuxia
1 дек. 2012 г. 13:52:05
1

Мои пять копеек:

  • если ваш редактор страниц имеет доступ администратора и может редактировать виджеты, вы можете создать зону виджетов для каждого из этих элементов и предоставить соответствующий виджет для каждого
  • если у вашего редактора страниц нет доступа администратора, например, у него роль редактора или автора, то он не сможет редактировать виджеты для их обновления; используйте произвольные поля на странице. Вы можете использовать для этого обычные произвольные поля или установить плагин Advanced Custom Fields.
1 дек. 2012 г. 00:49:53
Комментарии

Действительно хороший ответ.

Lightworker Lightworker
1 дек. 2012 г. 12:50:45
1

Для единичных, разовых элементов контента на главной странице вы можете рассмотреть возможность использования виджетов. Зарегистрируйте "сайдбар" в файле функций, а затем выведите этот сайдбар в шаблоне главной страницы. Перетащите текстовые виджеты в этот сайдбар — и готово.

Для ленты новостей используйте записи (Posts) или пользовательские типы записей (custom post types). Содержимое шапки (Header) и подвала (Footer) зависит от того, что именно вы хотите в них разместить.

30 нояб. 2012 г. 22:52:09
Комментарии

Мне тоже нравится ваш вариант, потому что он объясняет, как использовать виджеты (это предложение было дано другими, но не объяснялось, как это сделать), и конкретно расширяет его частью с лентами! Отлично!

Lightworker Lightworker
1 дек. 2012 г. 12:56:12
1

Несколько месяцев назад мне пришлось делать нечто подобное при разработке WordPress. Самый простой способ, который я нашел — использовать плагин под названием Spots.

Описание
Управляйте небольшими фрагментами текста, которые нужны на вашем сайте WordPress и в виджетах. Забудьте о текстовом виджете.

Создайте "спот" через админ-панель, добавьте контент, а затем вставьте тег 'Spot' в ваш код.

30 нояб. 2012 г. 22:53:03
Комментарии

Это тоже действительно потрясающее решение! И очень заманчивое. А как насчёт i18n здесь?

Lightworker Lightworker
1 дек. 2012 г. 12:57:13
1

Еще один отличный способ реализации — использование плагина Advanced Custom Fields. Можно создать страницу настроек (Options page) и централизованное место под названием, например, Главная, где пользователи смогут редактировать эти блоки. При использовании ACF также можно предоставить возможность добавлять практически любой контент, с более гибким контролем над форматированием — например, повторители для изображений, текстовых блоков и т. д.

30 нояб. 2012 г. 23:16:02
Комментарии

Расширение первого ответа и тоже действительно хорошее.

Lightworker Lightworker
1 дек. 2012 г. 12:57:40
1

Дополняя прекрасные ответы моих коллег, где упоминается:

  • важность Виджетов
  • обширная документация в Кодексе
  • использование бесплатных Плагинов для упрощения задач и добавления функциональности на сайт
  • использование этого Stack в качестве источника глубокой информации

Я добавлю, что у вас есть множество Бесплатных Тем.

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

Существуют Маркетплейсы, где вы найдёте темы полностью упакованные функциями. Но это не всегда хорошо. В отличие от WordPress.org, стандарты кодирования не всегда соблюдаются в этих темах. И иногда это может вызвать серьёзные проблемы.
Пожалуй, самый известный — это ThemeForest, и они недавно предприняли шаги для улучшения качества продаваемых там продуктов.

Также есть Дома Тем, такие как Woo, Elegant Themes, Graph Paper Press, и многие другие, где код выполнен так же качественно, как и дизайн.

Ещё есть Фреймворки Тем. О них даёт обзор эта статья.

Что бы вы ни выбрали, избегайте сомнительных поставщиков Тем.

30 нояб. 2012 г. 23:42:53
Комментарии

Хороший ответ. Спасибо. А как насчет пустого шаблона под названием Starkers? Надежный ли он?

Lightworker Lightworker
1 дек. 2012 г. 12:49:59