Форум русской поддержки Joomla!® CMS
07.12.2016, 18:29:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

смена шаблона на лету через url ?template=tepmalete_name

 (Прочитано 5686 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sergic
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« : 14.07.2010, 15:20:18 »

Возникла потребность через фрейм вывести частичный сайт с Joomla но в другом шаблоне(не меняя дефолтный в БД)
нашел такую штуку: добавляем после index.php ? template=tepmalete_name   но возникает проблема... все урл которіе сілаются на статьи и другие внутренние ресурсы не подставляют себе это "template=tepmalete_name"
как решить данную проблему? может можно как-то по-другому сделать вывод шаблона на лету?
Записан
onyx1337
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 59



« Ответ #1 : 14.07.2010, 16:45:10 »

я конечно могу немного ошибаться но чем тебе не подходит смена шаблона по определённым пунктам меню.
Заходишь в настройки не дефолтного шаблона и там указываешь на каких пунктах меню переключать на этот шаблон.
И вуаля  Wink
Записан
Dj_Dingo
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #2 : 30.10.2011, 18:32:01 »

У меня также возникла необходимость менять шаблон на лету, и кстати, сайт также бедт выводится через iFrame. Не буду рассказывать, зачем это надо - долгая история, но проблема такая же - при смене шаблона через ?template=имя_шаблона шаблон меняется, но при переходе по следующей ссылке по сайту, возвращается на шаблон по умолчанию. Может кто нибудь знает как заставить Joomla запомнить выбор (сессию)?
Смена шаблонов по пунктам меню в данном случае не подходит. Смена шаблонов с помощью Template Chooser, TemplateSelector, Template Switcher и им подобных - так же не вариант, в них смена происходит через выбор шаблона в поле типа select list, а мне нужно именно ссылкой. Как из select list сделать ссылку типа index.php?bla-bla-bla для смены шаблона - я тоже не понял. Если кто знает как сделать - буду очень признателен за совет.
 Спасибо!
Записан
Dj_Dingo
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #3 : 31.10.2011, 01:30:59 »

Я нашёл решение, по закону жанра - делюсь с общетственностью:
Для того что бы PHP сессия (?template=name) сохранялась на сайте для каждого пользователя до конца сессии (пока пользователь не покинет сайт), необходимо в каждом шаблоне, который нужно "сменять" и после смены "запоминать", желательно до указания доктайпа (<! DOCTYPE >), прописать PHP код начала сессии, а именно:
Код:
<?php
 session_start();
 
 if (isset($_GET['template'])) {
 $_SESSION['template'] = $_GET['template'];
 $template = '?template='.$_SESSION['template'];
 } elseif (isset($_SESSION['template'])) {
 $template = '?template='.$_SESSION['template'];
 } else {
 $template = '';
 }
?>
Не знаю насколько это эстетично, по отношению к PHP, но работает.
Надеюсь, кому-нибудь поможет.
Спасибо за внимание.
Записан
Dj_Dingo
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #4 : 31.10.2011, 08:37:32 »

Прошу прощения, ошибся.
Код, представленный выше, следует прописать в шаблоны и использовать совместно с плагином Template Chooser, который доступен для скачивания. Почему-то его убрали с extensions.joomla.org (http://extensions.joomla.org/extensions/2401/details), но его можно скачать на joom.ru (http://ext.joom.ru/template-chooser.html).
Сам плагин поставляется с модулем, в котором так же как и во всех остальных, выбор шаблона из выпадающего списка. Но если прописать код, который я написал выше - то модуль можно не активировать, а активировать только плагин, и менять шаблоны ссылкой вида site.ru?template=name. Сохранятся будет только смена тех шаблонов, в которых прописан код.

(Дальше к делу не относится, из раздела - я познаю мир.)
Я так понимаю, система такая - модуль, с помощью выпадающего списка, даёт выбрать шаблон, дальше, при выборе шаблона - он просто добавляет в url идентификатор сесии (?template=name), которую в свою очередь перехватывает плагин и меняет шаблоны встроенным механизмом Joomla. Также, модуль хранит эти сессии, на каждой странице, каждого шаблона, где он активирован. А мы, с помощью кода, представленного выше, храним сессии в шаблоне, вместо модуля. Видимо в модуле такой же код. По этому, получается, что модуль можно не активировать.
Так, или я чего то не понимаю? Если есть знатоки - прошу поправить. Интересно это всё...
Записан
Azizkz
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #5 : 24.01.2014, 15:24:16 »

Я нашёл решение, по закону жанра - делюсь с общетственностью:
Для того что бы PHP сессия (?template=name) сохранялась на сайте для каждого пользователя до конца сессии (пока пользователь не покинет сайт), необходимо в каждом шаблоне, который нужно "сменять" и после смены "запоминать", желательно до указания доктайпа (<! DOCTYPE >), прописать PHP код начала сессии, а именно:
Код:
<?php
 session_start();
 
 if (isset($_GET['template'])) {
 $_SESSION['template'] = $_GET['template'];
 $template = '?template='.$_SESSION['template'];
 } elseif (isset($_SESSION['template'])) {
 $template = '?template='.$_SESSION['template'];
 } else {
 $template = '';
 }
?>
Не знаю насколько это эстетично, по отношению к PHP, но работает.
Надеюсь, кому-нибудь поможет.
Спасибо за внимание.

Здравствуйте! как можно сделать тоже самое на Joomla 2.5. Все что описано выше не работает на Joomla 2.5
Записан
MMONSTERR
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 59



« Ответ #6 : 08.09.2015, 09:45:39 »

Вот мой код, без плагинов. Вставляется просто в начале index.php КАЖДОГО нужного шаблона.

Код:

if( $_SESSION['template'] != '' ){
if( htmlspecialchars($_GET['template']) == ''){
if( stristr( $_SERVER["REQUEST_URI"], '?' ) === FALSE ){
header('Location: '.htmlspecialchars($_SERVER["REQUEST_URI"]).'?template=beez5');
exit;
}else{
header('Location: '.htmlspecialchars($_SERVER["REQUEST_URI"]).'&template=beez5');
exit;
}
}

if( htmlspecialchars($_GET['template'])!= $_SESSION['template']){
$_SESSION['template'] = '';
}
}else{
if( htmlspecialchars($_GET['template'])!= ''){
$_SESSION['template'] = htmlspecialchars($_GET['template']);
}
}

Т.е что бы переключиться на один шаблон ?template=beez5 , на другой ?template=beez_20

Я это сделал для мобильного сайта. Скачал мобильный шаблон для Joomla, и поставил код определения устройства. И просто на автомате перекидываю. + закрыл от индексации *temlpate* в robots.txt
« Последнее редактирование: 08.09.2015, 10:00:06 от MMONSTERR » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet