Создание собственной CMS, как работать с настройками страницы? - PullRequest
1 голос
/ 13 июня 2010

Не специфичный для Coldfusion вопрос, поэтому ответьте, однако, вы можете.

Я унаследовал проект 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

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

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 13 июня 2010

В CF у вас есть супер-крутые Application.cfm (устаревшие) или Application.cfc (современные) шаблоны. Они глобальные. Они мощные. Они гибкие (намного больше).

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

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

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

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

1 голос
/ 13 июня 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...