Помочь проекту Отзывы Обратная связь Заказать шаблон/сайт Супер-шаблон MF
Войти / Регистрация
Закрыть

или зарегистрироваться

MaxSite CMS

  • Преимущества
  • Возможности
  • Основы
  • Документация
  • Скачать
Непонятные проблемы...
Кэширование в MaxSite CMS

Собственные опции шаблона

Архив записейПросмотров: 2432624 мая 2008 г.

Как я уже писал, опции я реализовал в виде ini-файла. Основные преимущества такого подхода в том, что можно с помощью простого ini-файла создать или поменять любые настройки сайта. То есть вместо «вшивания» настроек в «движок» мы выносим их в отдельный описательный файл.

Точно такой же способ я реализовал и для настройки шаблона. Попробую объяснить что я хотел добиться на примере WordPress.

Для примера можно рассмотреть такую настройку как количество записей для вывода на главной. В WordPress данная опция определена в самой админке. Кажется, что все логично, но предположим я хочу выводить разное количество записей для главной и для страницы рубрик. Что делать? В WordPress нужно лезть в шаблон и прописывать query_posts(). Согласитесь, малоэлегантное решение.

Когда-то я понял, что многие админские настройки WordPress - это прежде всего настройки самого шаблона. И вот добавление своих опций в админ-панель в WordPress'е сделано крайне сложно. Для того, чтобы добавить одну опцию придется дополнительно заниматься программированием и самого шаблона и «обслуживающего» файла (например, плагина).

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

  1. Вначале активируем плагин «Template options». Он как раз и подключает опции шаблона в админку. Этот плагин ищет в шаблоне файл options.php, где и реализуется нужный функционал.
  2. Теперь указываем в options.ini нужные нам настройки
  3. В шаблоне прописываем вызов настроки mso_get_option().
Вот пример ini-файла (рабочий):
[Количество записей на главной]
options_type = templates
options_key = limit_post_home
type = textfield
description = "Укажите количество записей, которые будут выводиться на главной странице сайта."
default = 5
[Количество записей на остальных]
options_type = templates
options_key = limit_post
type = textfield
description = "Укажите количество записей, которые будут выводиться на остальных страницах (рубрики, архивы и т.д.)"
default = 5
Файл options.php нет смысла описывать - он будет типовой и состоит из нескольких строчек.

В самом шаблоне, например в home.php в функции, которая получает вывод записей мы допишем нужную нам опцию:

$par = array( 'limit' => mso_get_option('limit_post_home', 'templates', '7') );
То есть мы просто получаем опцию (ключ, тип) и её значение по-умолчанию (если нет).

Здесь важный момент состоит в том, что все опции хранятся в единой таблице БД и у них единый механизм работы. Все опции автоматически кэшируются (в памяти и на диске), поэтому лишних запросов к БД не генерируется. Конечно же в опции не следует «загонять» большие значения, как это сделано в WordPress - из-за этого кэш получается слишком большим и способен уже притормаживать.

Получение же любой опции осуществляется с помощью функции:

mso_get_option('ключ', 'тип/группа', 'значение если нет')
Непонятные проблемы...
Кэширование в MaxSite CMS
twitter.com facebook.com google.com yahoo.com

Еще записи по теме

  • Создание редиректов в MaxSite CMS
  • Структура каталогов шаблона. Файлы шаблона
  • Первая запись из блог-клиента
  • Использование произвольных опций и настроек в своем шаблоне
  • Новый Default-шаблон в MaxSite CMS 0.84
  • Шаблоны для новичков. Урок 8. Создание своего шаблона. Настройка дизайна
  • Вышел CodeIgniter 1.6.2
  • Увеличение времени сессии
  • Комментирование в MaxSite CMS (по сравнению с WordPress)
  • Отличия MaxSite CMS от WordPress с точки зрения верстки шаблона

Комментариев: 10 RSS

1Аноним24-05-2008 14:04

А почему бы не использовать вместо ini файла базу данных? А вместо ручного добавления в ini файл админку? Кстати, очень быстро сессия заканчивается:

Ошибка сессии! Обновите страницу

2Максим24-05-2008 14:08

ini-файл очень просто редактировать и работать с ним. А данные так и хранятся - в базе.

3Роман24-05-2008 14:26

Забыл имя указать. Я понимаю, что легче работать с ini-файлом, чем непосредственно с кодом, но ведь удобнее редактировать в html интерфейсе, вынесенного в админку.

Если честно, я не понимаю смысл ini-файла, если

[quote]

данные так и хранятся - в базе

[/quote]

:)

4Максим24-05-2008 19:32

Не уловил... Что редактировать?

5Sam24-05-2008 21:40

А зачем ini, если в CI уже есть нативные конфиги и они прекрасно работают?

6Максим24-05-2008 23:18

Видимо я плохо объяснил. ;)

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

Что касается встроенного config, то толку от него как с козла молока: с таким же успехом можно просто задать массив и не морочить голову.

7Роман25-05-2008 11:26

Я бы сделал немного по-другому.

В админке есть пункт «Дополнительные поля», там добавляется поле с параметрами (пример):

«Название поля» — mood

«Описание поля» — Настроение

«Категория» — edit_news

«Тип поля» — выпадающее меню

«Значение» — Отличное | Нормальное | Ужасное

«Использовать при желании» — да (если поле останется пустым, то будет использовано дефолтное значение)

После создания поля, в категории edit_news («Редактирование новости») в самом низу добавляется выпадающее меню для выбора настроения.

Для вывода настроения в шаблоне используется функция get_metafiled('mood', $id), где переменная id — идентификатор новости с настроением.

Кстати, какой будет дефолтный шаблон?

8Максим25-05-2008 13:20

То есть ini-файл вынести в админку? Честно говоря, я не уверен в такой необходимости. Но, если сложилось мнение, что опциями можно управлять только через ini-файл, то это ошибка.

В данном случае я исхожу из того, что ini-файлом проще описать нужные нам опции/формы и не более того. Если нужно отредактировать сам файл, то несложно сделать редактор в файл-менеджере. Это если нужно править через админку.

Другой вариант - это добавить отдельный плагин, который будет выдавать/создавать/редактировать опции.

Что касается мета-полей к страницам, то тут немного сложней, поскольку это уже не таблица опций, а таблица meta. Я исходил из того, что в WordPress'е есть настрока метаполей, но а) многие мета являются служебными и их не требуется отображать; б) с ними неудобно работать; в) уже из своего опыта я выяснил, что в 99% случаев клиенту не требуются какие-то «сверх-поля» - обычно все ограничивается стандартным «источник», «title», «путь к миниатюре». То есть это один и тот же набор мета для всех записей. И тут, конечно же проще всего задать их один раз в файле, чем администрировать через панель управления.

Но, еще раз подчеркну, можно сделать плагин, который будет позволять управлять опциями/мета/ini через админку. Но в моих планах пока он не значится. ;)

Дефолтный шаблон - это который сейчас на этом сайте.

9Антон КокинСайт11-07-2009 10:50

Максим, здравствуйте.

Максим, я пользуюсь этим файлом и мне он кажется очень удобным. Но у меня возник вопрос. Дело в том, что после добавления своих данных в файл, эти данные подключаются к общему ini-файлу и отображаются на общей же странице настроек. В этом случае не так быстро находятся "свои" опции (да, они в конце, но без отделения от дефолтных).

Вопрос: а не планируется ли сделать что-то типа отдельно странички для дефолтных опция и пользовательских?

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

Спасибо.

10Максим11-07-2009 15:07

Нет, Антон, не планирую. ;-) Для того, чтобы отключить дефолтные опции нужно объявить их с пустой секцией. Например:

[Текст для «Далее»]
[Количество записей на главной]
[Количество записей на остальных]
[Количество записей в RSS]
[Полные записи в RSS]

отключит соответствующие опции в админке.

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

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)

Learn more about buy Instagram likes check popular website Friendlylikes
Find more information why people are used to buy Instagram likes for photos and videos these days.
Документы на оформление вида на жительство (ВНЖ) можно подать после получения.. В течении 7 рабочих дней после получения ВНЖ зарегистрироваться в территориальном УФМС. Ежегодно уведомлять о подтверждении своего проживания в РФ территориальный УФМС по месту регистрации. Список документов для оформления вида на жительство:
Рубрики
  • Блог 36
  • Версии (релизы) 93
  • Архив записей 180
Последние записи
  • Переход к минимальной PHP 7.1
  • Обновление документации
  • MaxSite CMS 11 лет
  • MaxSite CMS 103
  • Каталог студий и фрилансеров MaxSite CMS
  • Мы переходим к одной ветке разработки MaxSite CMS
  • MaxSite CMS 102
  • MaxSite CMS 101
  • Установка и начальная настройка MaxSite CMS (видео)
  • Landing Page на MaxSite CMS
Поиск по сайту
Архив сайта

О проекте

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

Другие проекты
  • Сайт автора — MaxSite.org
  • UniCSS (Universal Atomic CSS)
  • Landing Page Framework
  • Бесплатные HTML-курсы
Соцсети
  • Twitter
  • Github
  • YouTube
© MaxSite CMS, 2008-2019 | Время: 0.2674 | SQL: 20 | Память: 1.44MB | Вход