2010-06-12 2 views
1

Не конкретный вопрос, связанный с холодом, так что ответьте, как вы можете.Создание пользовательской CMS, как обрабатывать настройки страницы?

Я унаследовал ColdFusion проект, где в верхней части каждой страницы устанавливаются различные страницы устанавливающих конкретные переменные, такие как:

<cfset request.page.title = "Example Page"> 
<cfset request.page.machineTitle  = "example_page"> 
<cfset request.page.isJQueryEnabled = 1> 
<cfset request.page.showNavigation = 1> 
<cfset request.page.SWFObjectVersion = 2.2> 

Я думаю о создании таблицы базы данных только с

integer page_id 
varchar key 
varchar value 

Я бы уменьшил переменные в верхней части каждой страницы только на идентификатор страницы, а затем позвонил в БД для правильных настроек.

Это хорошая идея? Ненавижу изобретать колесо, но это действительно большой проект, который потребует много месяцев для полной миграции контента на CMS.

Каковы текущие методы хранения настроек страницы? (Например, что делает WordPress делать? Drupal? И т.д.)

---- Редактировать ----

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

Кроме того, что происходит, когда я получаю кучу устаревших переменных? Например, в конечном итоге переменная «usePrototype» будет постепенно отключена, и весь сайт будет использовать jQuery.

Другим методом было создание и включение файла с гигантским блоком переключения, который устанавливает эти переменные. Это уже сделано для некоторых вещей (например, метатеги - switch on request.page.machine title, case xxx <meta tag whatever>). Это беспорядок.

+0

Какая проблема вы пытаетесь решить? Что случилось с нынешним подходом? Какую выгоду вы получите от реорганизации всех существующих (работающих) страниц, чтобы использовать ваш другой подход? –

+0

В eclipse вы можете искать и заменять все вхождения некоторой строки в считанные секунды. Я бы поместил это в метод onRequest в Application.cfc. Вызов db каждый раз для получения SWFObjectVersion кажется для меня немного лишним. application.config.request.SWFObjectVersion - один из вариантов. –

ответ

1

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

Если это то, что вы предлагаете, то результаты будут:

  • больше загрузки страницы раз
  • увеличил использование базы данных и сварливость
  • снижается читаемость кода (заголовок страницы может» t можно найти, не ища его в таблице)
  • увеличенная вероятность ошибки (легко редактировать страницу 45 на стр. 54 при редактировании таблицы).

Это будет иметь тенденцию делать вещи менее ясными, а не более ясными.

Я не могу говорить с Drupal, но Wordpress хранит всю страницу (или сообщение) в таблице вместе с другими метаданными. Wordpress объединит данные в таблице с набором файлов шаблонов и вернет пользователю жалобу. Таблица будет иметь числовой ключ, но также имеет другие данные непервичного ключа, которые могут быть использованы для определения местонахождения данной страницы (название, пул, категория, тег, дата и т. Д.)

+0

Хорошо, результаты, которые вы указали, не должны быть слишком большими для производительности сайта, поэтому я мог бы продолжить его. Спасибо. Что касается определения файла, который я редактирую, это путь к файлу путь/имя/и встроенный комментарий. Я также создаю простой менеджер страниц, который отображает заголовок страницы, возможно, URL-адрес, который он затрагивает, и входы/флажки для переключения переменных и добавления новых переменных. – davidosomething

1

В CF у вас есть uber-cool Application.cfm (legacy) или Application.cfc (modern) templates. Они глобальны. Они сильны. Они гибкие (cfc намного больше).

  • Вы можете вытащить глобальные настройки из БД и сохранить их в области Приложения для быстрого повторного использования.
  • Вы можете прочитать настройки каждой страницы по каждому запросу и ввести в нужный объем request.page.
  • Вы даже можете прочитать информацию для всех страниц (используйте область CGI для определения текущей страницы) и кешировать ее в области приложения (или встроенной системы кеширования - доступной для CF9 и Railo).
  • Вы можете временно кэшировать информацию для уже посещенных страниц для быстрого повторного использования.
1

Вызов из Db - неплохая идея, так как вы будете централизовать конфигурацию. Это немного зависит от вашей настройки, но coldfusion должен уметь справляться с такой нагрузкой.

Изучите Application.cfm или Application.cfc - если они включены в корень папки, код в этих файлах вызывается до запуска вашей страницы. В результате они могут включать общие задачи, такие как загрузка этих переменных. (Application.cfc немного сложнее, но также может выполнять очистку после прогона страницы).

Возможно, вы сможете сделать следующее, чтобы сэкономить время. Создайте файл Application.cfc (требуется Coldfusion MX7 или выше) с помощью метода onReqestEnd. В этот метод входит код для сохранения переменных в настоящее время заданных страниц в Db (если они ранее не были сохранены). Если на страницах еще нет идентификатора, вы можете использовать CGI.varibles, чтобы отменить текущий URL. Затем, когда люди просматривают страницы, они автоматически сохраняются в Db. Нажмите вокруг сайта, чтобы все было сохранено. Установите код, чтобы отменить конфигурацию в методе on.quidStart App.cfc, и найдите и замените регулярное выражение, чтобы убить все встроенные параметры.

Смежные вопросы