Разные шаблоны сайта для разных компонентов

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#16 10 июня 2013 в 19:38
LonelyCat, в моем случае так не выйдет. На первом шаблоне фиксированная шапка и меню, во втором — все упрощенно. То есть, как css не крутить, для конкретно блогов нового шаблона не создать (включая меню и body) ) Хотя, над моментом этим нужно подумать, есть ли выход какой.
#17 10 июня 2013 в 19:41

при каждой смене шаблона надо очищать кеш.

LonelyCat
ну да, если бы проблема была только в этом, то модулем "Шаблон сайта" все решилось бы только так. Но, по сути, нужно другое… Скажем так, расположение как у "Шаблон страницы", но функционал как у модуля "Шаблон сайта".
#18 10 июня 2013 в 23:15


Но, по сути, нужно другое… Скажем так, расположение как у "Шаблон страницы", но функционал как у модуля "Шаблон сайта".

Джехутимери
Позициями в шаблонах компонентов не решается?
#19 10 июня 2013 в 23:41
Олег Васильевич я, позиции идентичны (два шаблона на базе дефолта), нужна только смена шаблона для заданного компонента с нормальным отображением, без косяков.
#20 10 июня 2013 в 23:54


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

Джехутимери
мне, непрограммисту, видится бредовое решение из длиннююююююю… ей цепочки elseif для позиций в шаблоне
#21 11 июня 2013 в 06:24

длиннююююююю… ей цепочки elseif для позиций в шаблоне

Олег Васильевич я
ну или привязка очистки кеша при переходе на страницу с другим дизайном, что тоже не айс)
#22 11 июня 2013 в 09:37
LonelyCat, зачем же? Кешируются ведь модули, но не стиль сss. И еще база шаблонов — дефолт. По идее, с кешем не должно быть проблем?
#23 11 июня 2013 в 15:20
Здравствуйте!
Я решил эту проблему этим образом:
В файле "/core/cms.php"
~ 2246 СТРОКА
  1.  
  2. public function menuTemplate($menuid){
  3.  
  4. if (!$this->menu_item) { $this->menu_item = $this->getMenuItem($menuid); }
  5.  
  6. if(preg_match("/^\/НАЗВАНИЕ ВАШЕГО КОМПОНЕНТА\/([a-zA-z0-9\.]+)$/i",$_SERVER['REQUEST_URI'])){
  7. return "ДРУГОЙ ШАБЛОН";
  8. }else{
  9. return $this->menu_item['template']; /*ШАБЛОН ПО-УМОЛЧАНИЮ (_default_) */
  10. }
  11.  
  12. }
  13.  
Таким образом можно для ЛЮБОГО компонента задать свой шаблон.
#24 11 июня 2013 в 20:05
Daniil, что-то у меня не видно изменений...

ввожу:
  1. public function menuTemplate($menuid){
  2.  
  3. if (!$this->menu_item) { $this->menu_item = $this->getMenuItem($menuid); }
  4.  
  5. if(preg_match("/^\/blogs\/([a-zA-z0-9\.]+)$/i",$_SERVER['REQUEST_URI'])){
  6. return "mytheme";
  7. }else{
  8. return $this->menu_item['mytheme']; /*ШАБЛОН ПО-УМОЛЧАНИЮ (_default_) */
  9. }
  10.  
  11. }
при этом шаблон "mytheme" есть шаблон, которым нужно заменить дефолтный в блогах… Но все по-прежнему. Кэш чистил, не помогает.
#25 11 июня 2013 в 20:20
Есть один нюанс!!!
То, что я писал, меняет только файл "template.php" для данной страницы.
Все .tpl этого компонента остаются в шаблоне по-умолчанию.

Т.Е.: У меня в настройках стоит шаблон _default_, а я хочу, чтобы личка была в шаблоне _lich_.
Я создаю файл /templates/_lich_/template.php с нужным мне дизайном, а .tpl редактирую в _default_
#26 11 июня 2013 в 20:34
Daniil, все равно нету результата… Ведь в template.php и есть указание на шаблон (styles.css) страницы, но просто дефолт не перекрывает, он так и остается. Все без изменений…
#27 11 июня 2013 в 21:12
scratchСтранно… Буду разбираться.
---------
Хотя… можно попробовать в начале файла frontend.php нужного компонента вставить $_SESSION['template'] = "ШАБЛОН"; ...
---------
ИЛИ!!!
  1.  
  2. public function menuTemplate($menuid){
  3.  
  4. if (!$this->menu_item) { $this->menu_item = $this->getMenuItem($menuid); }
  5.  
  6. if(strstr($_SERVER['REQUEST_URI'],"/КОМПОНЕНТ/")){ // ИСПОЛЬЗОВАТЬ ФУНКЦИЮ strstr()
  7. return "ДРУГОЙ ШАБЛОН";
  8. }else{
  9. return $this->menu_item['template']; /*ШАБЛОН ПО-УМОЛЧАНИЮ (_default_) */
  10. }
  11.  
  12. }
  13.  
#28 11 июня 2013 в 21:43
Daniil, оооо! Шикарно теперь! Спасибо огромное!!!
Тему, думаю, можно закрывать :)
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.