Как структурировать CMS? - PullRequest
5 голосов
/ 24 июня 2011

Итак, я делаю CMS, скрипт галереи через объектно-ориентированный PHP. В любом случае, проблема в том, что теперь у меня есть базовый макет для объектов, и до такой степени, что мне нужно начать собирать вместе, я в тупик, как это сделать.

То, что у меня есть, это, по сути, класс Navigation, Data, Gallery и Module. Модуль обозначает страницы, категории и так далее. Проблема в том, что Галерея выводит изображения, модуль выдает данные для страниц, навигация создает навигацию. Вы получаете картину.

На странице индекса я в конечном итоге делаю это (это изменится, но это иллюстрирует то, как я начинал его настраивать):

$navigation = new Navigation();
$navigation->top();

$page = new Module();
$page->basicPage($_GET['m']);

basicPage () делает несколько вещей, но в первую очередь это проблема:

$gallery = new Gallery();
$gallery->setGallery($id);
$gallery->thumbGallery();

И так далее.

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

Так что я подумал о нескольких решениях проблемы. У меня нет этих основных страниц, но у меня есть дизайнеры, создающие шаблоны, очень похожие на WordPress. Мне не нравится это решение, потому что оно делает процесс проектирования сложным, хотя и тщательным. Я не хочу, чтобы все было под контролем, и это один из способов. Конечно, вы можете «показать: нет» элементам, как дизайнеру, и несколько других трюков, но я хочу, чтобы они имели возможность делать много вещей, без сложного способа, которым это делает Wordpress.

Мой вопрос: как мне найти баланс между простым и гибким?

Любая помощь, даже идеи приветствуются. Спасибо.

РЕДАКТИРОВАТЬ: я забыл упомянуть. Проблема в том, что у индекса есть все эти данные. В противном случае мне придется много делать if / else и тому подобное, и я действительно не хотел превращать это в процедурную программу, просто такую, которую вы можете просто запустить. заткнись и у нас все хорошо. Смотрите, модуль обозначает как галерею, так и страницу. К большинству страниц не будут прикреплены изображения, а категории будут иметь изображения, но не всегда текст. Это вызовет ошибку, если я вызову thumbGallery, и это просто информационная страница, и если я вызову информационную страницу, и это категория, она не покажет изображения (чтобы избежать ошибки). Я мог бы и начал собирать его вместе на так называемой базовой странице, но проблема, как я уже отмечал ранее, заключается в том, что она ограничивает степень свободы, которую имеет дизайнер, не связываясь с php, и большинство дизайнеров довольно глупы, когда речь заходит к php, к сожалению. По сути ООП (без обид. Я тоже дизайнер, но я тоже программный).

1 Ответ

1 голос
/ 25 июня 2011

Не видя остальной части вашего кода, сложно найти лучшее решение, учитывая то, что у вас уже есть. Последние 9 лет я разрабатывал свои собственные пользовательские рамки приложений CMS с нуля, и я был бы рад дать вам несколько советов.

Я предполагаю, что вы храните весь контент CMS в базе данных. Сохранение конфигурации для параметров галереи в базе данных может быть возможным решением. Теоретически у вас должны быть разные представления (следуя шаблону MVC) для отображения галереи по-разному. Вид списка для отображения нескольких миниатюр изображений, один для отображения одного изображения, а также вид списка категорий, возможно.

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

Не уверен, что это решение вашей проблемы, но это очень упрощенный пример того, как я делал это в моей CMS в прошлом.

...