Создание структуры CMS

vart

Новичок
День добрый!

Появилась необходимость создать небольшую mvc админку. Думаю как организовать вывод модулей в шаблон.

Структура такая:
-modules
--mod_index
---controller.php
---view.php (здесь вывод конкретного модуля, например тут формируется меню)
---model.php

...
-templates
--main.tmpl.php (это шаблон главной страницы)
^ здесь в коде где необходимо пишу например %mod_index%
и там где выводится этот шаблон в месте ^ выводится код view.php

Вроде в Joomla такая же структура, кто подскажет как это лучше реализовать?
 

vart

Новичок
Никто не подскажет. Никто не бросится сейчас тебе тут писать структуру всего приложения. Тему о создании cms можно разбить как минимум на 10 подтем и в каждой не будет ни капли объективности.
Мне кажется я не просил писать мне cms, я попросил описать как организовать вставку кода модуля в шаблон, чтобы переменные отображались в шаблоне. И в каком порядке должна происходить обработка скриптов. А если вы не знаете как, то нечего вообще лезть в эту тему
 

Raziel[SD]

untitled00
vart ты задал очень абстрактный вопрос, Духовность™ именно об этом тебе говорит.
 

vart

Новичок
в шаблон не надо вставлять "код модуля"
в шаблон надо вставлять данные, полученные от модуля
http://phpfaq.ru/tpl
Вот в этом и заключается мой вопрос (может я его не правильно сформулировал) Что значит вставлять данные, полученные от модуля? Т.е. необходимо чтобы скрипт модуля отработал (ладно, а куда данные запихнуть и как), а потом просто заменить переменную в шаблоне на эти данные.
 

Духовность™

Продвинутый новичок
Т.е. необходимо чтобы скрипт модуля отработал (ладно, а куда данные запихнуть и как), а потом просто заменить переменную в шаблоне на эти данные.
http://phpfaq.ru/tpl там все написано и в конце есть пример. я тебе щас прямо ссылку на это пример дам - http://phpfaq.ru/tpl#example

только там написано
PHP:
у нас всегда будут участвовать два шаблона - общий шаблон сайта и шаблон контента конкретной страницы.
я сторонник НЕ делать "общий шаблон сайта", а исходить из принципа 1 модуль на php - один общий шаблон страницы. это нужно для того, что далеко не всегда на сайте шаблоны имеют одинаковый каркас верстки .
 

vart

Новичок
т.е. как я понял мне в основном шаблоне (где необходим модуль) необходимо просто подключить файл отображение (view.php) конкретного модуля? просто проект будет иметь достаточно большую аудиторию (около 5 000 / сутки) и я хотел выбрать самый "элегантный" способ
 

AmdY

Пью пиво
Команда форума
vart
а зачем тебе шаблоны с %var%, если можно использовать нормальные php-шные c небольшой надстройкой http://amdy.su/own-templater/

хотя лучше воспользоваться нормальной cms-кой c уже готовой админкой
 

vart

Новичок
vart
а зачем тебе шаблоны с %var%, если можно использовать нормальные php-шные c небольшой надстройкой http://amdy.su/own-templater/

хотя лучше воспользоваться нормальной cms-кой c уже готовой админкой
У меня стоит очень конкретная задача, + в дальнейшем придется вносить большое количество доработок, поэтому готовая админка мне не подойдет. Вообщем в любом случае мне придется подключать скрипты модулей в шаблоне, я правильно понимаю?
 

vart

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

AmdY

Пью пиво
Команда форума
во первых модули и шаблон это разные вечщи. если нужна схема с главным шаблоном
1.
PHP:
//файл module/news.php
$view = new View();
$view->var = 'variable for template';
$view->moduleTemlate = 'news.php';
$view->display('main.php');

//директория view
view
----main.php
----news.php

view/main.php
<body>
    <h1>Главный шаблон</h1>
    <div id="content"><?php include "views/{$this->moduleTemlate}"; ?></div>
</body>
 

Absinthe

жожо
я сторонник НЕ делать "общий шаблон сайта", а исходить из принципа 1 модуль на php - один общий шаблон страницы. это нужно для того, что далеко не всегда на сайте шаблоны имеют одинаковый каркас верстки .
+1, только самое главное - это использовать наследование шаблонов, а не разводить копипасты, как это делает Духовность.
 

Духовность™

Продвинутый новичок
+1, только самое главное - это использовать наследование шаблонов, а не разводить копипасты, как это делает Духовность.
в чем копипасты? в том, что я копипаст делаю тегов <header>? это ерунда, все повторяющиеся\ кучки кода я инклужу
 

vart

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

Вурдалак

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

Absinthe

жожо
в том, что я копипаст делаю тегов <header>? это ерунда, все повторяющиеся\ кучки кода я инклужу
"А то, что я скопипастил 20 строк кода - это ерунда, я же там значение 1 переменной поменял"

У тебя ОЧЕНЬ много кода скопипасчено, при этом наследование шаблона проблему полностью решает, оно для решение этой проблемы и предназначено. И не имеет минусов при этом.
Ну я могу это сравнить с "копипаст vs функция" только.
Ты понимаешь, что я имею ввиду под наследованием? Это не пошаговый(nested templates, layouts) рендер, а использование блоков в виде.
Более того, наследование может быть многоуровневым, что еще более уменьшит копипаст.
 

Духовность™

Продвинутый новичок
я не понимаю о чем вы говорите

У тебя ОЧЕНЬ много кода скопипасчено
моя идеология такова - верстка - это не программирование. повторяющаяся верстка - это не тоже самое, что и повторяющийся код функции. верстка - это одежда для модуля/контроллера/страницы. она должна быть независима и легко измеряема.
 

caballero

Новичок
Вроде в Joomla такая же структура, кто подскажет как это лучше реализовать?
возьми готовый фреймворк - большинство из них MVC (если по неведомой причине нужен именно MVC). Начни с CI - он самый простой там просто голая структура - навешаешь своих контроллеров и все дела.

Мне кажется я не просил писать мне cms, я попросил описать как организовать вставку кода модуля в шаблон, чтобы переменные отображались в шаблоне.
если тебе надо именно с нуля вот в CI и посмотри (или в кохане которая из него выросла) и скопируй архитектуру.
Чтобы чтобы модуль отобразился ему надо отработать и передать данные в локальный шаблон (шаблон этого модуля - .php) потом необходимо вынести все это дело в глобальный шаблон (шаблон конкретной страницы сайта)
если у тебя активный шаблон то можно просто инклудами втыкать локальные которые будут подтягивать свои данные

а зачем тебе шаблоны с %var%, если можно использовать нормальные php-шные
верно, с активным шаблоном проще и естественней , особено если надо цикл там организовать и все такое

Выбора у меня в любом случае нет.
возле твоего очка стоят крепкие ребята с паяльником?

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

И не заморачивайся некими модулями под которыми подразумевается неизвестно что. - напишешь код сгруппируеш по папкам - вот тебе и модули. тем более речь об админке на фига там модули какие то.

Да, если на мой пост будут возражения - не обращай внимания - это но по существу написаного а против меня лично.
 
  • Like
Реакции: vart
Сверху