ZendFramework Шаблоны сайта

Professor

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

Нужно на одном движке сделать 2 и более сайтов с одним функционалом и одной БД
Все решения которые находил в гугле - самопальные. Один из вариантов, делать под каждый сайт свой модуль, который будет обращаться к общим моделям и общим контроллерам одного модуля.
Мне почему то крайне не нравится такой подход. Для того что бы просто поменять верстку нужно создавать модуль, ну как то не айс.

Подскажите, кто как делает?
 

Yuriy_S

-=PHP-Club=-
Все зависит от конкретных требований.
Можно сделать и с 1 модулем, опираясь на hostname сайта. Для каждого hostname хранишь список соответствия hostname => template. Ну и используешь в зависимости от hostname нужный шаблон.
 

Yuriy_S

-=PHP-Club=-
Это я ответил, как решить проблему с шаблонами. Если нужно разделять по данным, т.е. используя одну бд, подгружать разные данные на каждом сайте, то и на уровне бд должна быть связь между данными и доменом (сайтом).
 

Professor

Новичок
Ну и используешь в зависимости от hostname нужный шаблон.
Как в зависимости от hostname поменять переменную с названием шаблона проблем нет.
Меня интересует идеология ZF. Как подключать шаблоны, где их хранить, что бы у каждого шаблона были свои стили, и JS, и в тоже время была возможность использовать общие(в основном это относится к JS). Есть какой нибудь компонент отвечающий за шаблоны?

Как сделать это по феншую, в идеологии ZF?
 

hell0w0rd

Продвинутый новичок
Professor
фреймворк - это инструмент для построения архитектуры, а не архитектура:)
 

Professor

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

hell0w0rd

Продвинутый новичок
Подобные вещи должны настраиваться через конфиг, у вас явно особенная ситуация, если грамотно продумать - вопросов возникнуть не должно
И почему вы так уверенны что от вашей работы сразу охренеют и побегут вопросы задавать?)
 

Professor

Новичок
Естественно я утрирую.
Понятно что это должно быть в конфиге. А конфиг выбирается исходя из hostname. Это мы выяснили =)
Видимо я как то не так вопрос сформулировал, что получаю не те ответы, на которые рассчитывал =)
 

Yuriy_S

-=PHP-Club=-
меня интересует идеология ZF. Как подключать шаблоны, где их хранить, что бы у каждого шаблона были свои стили, и JS
подключать через Zend_View :) Это можно сделать в любом контроллере/экшене. Просто тупо менять layout-ы. В них уже загружать необходимые CSS и JS, пути/имена которых так же зависимы от того же hostname (например /css/domain.ru.main.css, /js/domain.ru.main.js, только не статикой прописывать, а нечто наподобие <script src="/js/<?=$this->hostname?>.main.js"> и т.п.)
Хранить шаблоны там, где им предназначено храниться по документации.

А вопросы да, ты никак не сформулировал, ты написал: "Нужно на одном движке сделать 2 и более сайтов с одним функционалом и одной БД"
 

Professor

Новичок
Более того, даже не ясно, какая версия имеется в виду?
Да, извините 1.8

а че, ZF темы не поддерживает?
Да вот насколько я понял нет.
Нашел вот это http://framework.zend.com/wiki/display/ZFPROP/Zend_Template+-+Ramses+Paiva , но это "Component Proposal"

А вопросы да, ты никак не сформулировал, ты написал: "Нужно на одном движке сделать 2 и более сайтов с одним функционалом и одной БД"
Вопрос был такой "Подскажите, как Правильно организовываются шаблоны в ZF?"
Видимо на этом нужно было остановиться, а то ввел вас в заблуждение.
 

WMix

герр M:)ller
Партнер клуба
папки где лежат шаблоны это настраиваемая переменная
application.ini изначально поддерживает секции к примеру production, developing ...
а также наследование

.httaccess
Код:
SetEnv APPLICATION_ENV theme1
application.ini
Код:
[theme1:production]
resources.view[] =
resources.view.scriptPath = "/your/path/"
дальнейшая логика в твоих руках
 
  • Like
Реакции: AmdY

Professor

Новичок
папки где лежат шаблоны это настраиваемая переменная
Спасибо. А стили и JS?

В общем сделал так:
Шаблоны лежат так
/application/modules/default/views/default/
/application/modules/default/views/phone/
/application/modules/default/views/dev_template/
JS и CSS лежат так

/public/themes/default/
js
css
img
/public/themes/phone/
js
css
img
/public/themes/dev_template/
js
css
img

Написал хелпер подключения JS и CSS
PHP:
 public function addScripts($scripts, $type = NULL)
    {
        if (empty($scripts)) {
            return;
        }

        if (!is_array($scripts)) {
            $scripts = array($scripts);
        }

        $theme = 'default';
        if (!empty($_ENV["APPLICATION_THEME"])) {
            $theme = $_ENV["APPLICATION_THEME"];
        }

        $path = $type == NULL ? "/themes/{$theme}" : "/vendor";


        foreach ($scripts as $script) {
            $this->view->headScript()->appendFile($path . $script);
        }
    }
Ну в переменную $_ENV["APPLICATION_THEME"] естественно из конфига передается название темы.
Таким образом я во всех шаблонах скрипты и стили подключаю так
PHP:
<? $this->AddScripts("/js/filters.js"); ?>
<? $this->AddCss("/css/filters.css"); ?>
Если нужно подключить общие стили или JS библиотеки, то добавляю второй параметр $type=true
 

WMix

герр M:)ller
Партнер клуба
нормально придумал, только вот
PHP:
<? $this->AddScripts("/js/filters.js"); ?>
<? $this->AddCss("/css/filters.css"); ?>
не кажется ли тебе что ты умудрился 3 раза сказать что это css или js названием метода, папкой и разширением файла?
 

Professor

Новичок
хм...
Да, возможно стоит папки вынести в методы.
Я просто думаю о бедных верстальщиках. Потом каждому объяснять что это не полный путь от шаблона. Особенно если верстальщики удаленные.
Название метода не изменишь, поэтому нужно подумать о надобности расширения. Мне все равно кажется что его нужно оставить.
Ну по моему это дело вкуса.
 

WMix

герр M:)ller
Партнер клуба
в моем случае это звучит приблезительно так
PHP:
$this->addRessource("filters.css"); // файл /public/css/filters.css
$this->addRessource("jquery/other.js"); // файл  /public/js/jquery/other.js
// сгенерит 2 ссылки для css и js на cache-файл md5('core') в папке public/cache в который войдут все файлы описанные в конфиге для метки core в минифицированном виде
$this->addRessource("core");
 

keltanas

marty cats
WMix
Очень много магии - тоже не всегда хорошо. Теряется гибкость.
 

WMix

герр M:)ller
Партнер клуба
да знаю, но много гибкости ломает систематизацию. нужно искать золотую середину.
 
Сверху