Перейти к содержанию
Официальный форум поддержки Simpla

Смена шаблона пользователем (для магазинов шаблонов)


Рекомендуемые сообщения

Озадачился просмотром готовых шаблонов которые предлагают фрилансеры для Simpl'ы... Наткнулся на то, что у всех есть скриншоты шаблонов, а поставить шаблон на демо-магазин можно только по предварительной договоренности. Решил что удобно будет сделать модулик который будет менять тему не из админки, а со стороны клиента. Выкладываю в паблик, может кому пригодиться.


Установка:

Заменяете файл view/indexview.php на этот

Заливаете в папки с темами файл themechanger.tpl

И в каждой теме, в файле index.tpl после добавляете код
{include file='themechanger.tpl'}

В итоге получаем возможностью посмотреть все продаваемые шаблоны в онлайне и сразу.

p.s. кто реализует более элегантное и грамотное решение просьба делиться решениями в паблик. ver. 2.1.0

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 98
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Популярные посты

view/View.php после строки parent::__construct(); пишем такой код: // Выбор шаблона if($template = $this->request->get('template', 'text')) $_SESSION['template'] = $template; if($template = $t

Корс - ты дебил?? Или придуриваешься??? Если у тебя не работает - значит ТЫ что-то сделал неправильно, а теперь сношаешь всем мозги...

Отлично, я рад что Вам это пригодилось!

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

Ссылка на сообщение
Поделиться на другие сайты

Блин, такую ерунду сложно даже модулем назвать, а вы устроили тут практически консилиум. Есть сеты темы - подменяем их на сеты с сессии, если их нет то тема по умолчанию.

Ссылка на сообщение
Поделиться на другие сайты

Ой да ну, проблем в том что тема сохраняется в бд нет, а вот с тем что она криво чистит компилед - есть. Модуль не модуль - не суть важно. Главное что можно в живую смотреть шаблоны, а не ждать пока сонный дизайнер поставить тебе тему на демо магазин... Знаете-ли время нынче дорого стоит...

p.s. если кто поправит реализацию - буду благодарен, мне пока некогда ((

Ссылка на сообщение
Поделиться на другие сайты

2-5 заказчиков, каждый из них выбрал нужную тему и соответственно в БД то одна то другая записалась, если одновременно это делать то не факт что каждый заказчик увидит ту тему которую выбрал он, а скорее всего увидит ту которую выбрал другой.
Вот и выйдет такая белеберда.
С куками же намного проще, храним имя темы в куке, далее через шаблон вызываем и каждый пользователь сайта видит свою выбранную тему=)

Ссылка на сообщение
Поделиться на другие сайты

Можно как-то реализовать смену шаблона по ссылке? Из минусов после смены шаблона необходимо обновлять страницу.

Ссылка на сообщение
Поделиться на другие сайты
  • 8 месяцев спустя...
  • 2 недели спустя...

Так в этом решении выбранная тема записывается в БД, а я имел ввиду решение, чтобы по ссылке (как валюты) менялось.

Т.е. чтобы основная тема была основной, но при желании вызываем другую тему типа: /?theme_name=sos

При этом другие пользователи, видят сайт в основной теме.

Помогите, потому-что даже по аналогии не могу допереть...

Ссылка на сообщение
Поделиться на другие сайты

view/View.php после строки parent::__construct(); пишем такой код:

// Выбор шаблона
if($template = $this->request->get('template', 'text'))
	$_SESSION['template'] = $template;
if($template = $this->request->post('template', 'text'))
	$_SESSION['template'] = $template;

 

api/Design.php ищем код:

// Берем тему из настроек
$theme = $this->settings->theme;

 

и меняем его на следующий:

// Берем шаблон из сессии
if(isset($_SESSION['template']))
	$theme = $_SESSION['template'];
// Берем шаблон из настроек
else
	$theme = $this->settings->theme;

 

Теперь менять шаблон можно дописав &template=sport к ссылке на любой странице сайта, примерно так http://simplacms.ru/?template=sport

Ссылка на сообщение
Поделиться на другие сайты

Да, Noxter, все работает, спасибо огромное!!!

Конечно, там есть моменты со стилями (стиль берется не из шаблона сессии, а из темы по-умолчанию, объяснил как понимаю), но думаю можно допилить.

Я это планирую попробовать подогнать под интеграцию с Вконтакте.

Теоретически это тупой, но простой способ. А-то за 100 уев, как здесь предлагали не камильфо...

Оцените шансы такого способа...

Ссылка на сообщение
Поделиться на другие сайты

Совсем забыл.

<link href="design/{if $smarty.session.template}{$smarty.session.template}{else}{$settings->theme|escape}{/if}/css/style.css" rel="stylesheet" type="text/css" media="screen"/>
Ссылка на сообщение
Поделиться на другие сайты

Ха, кстати, это также можно использовать для мобильной версии (принудительно), сложность со стилями убивается заменой {$settings->theme|escape} на название шаблона.

Ссылка на сообщение
Поделиться на другие сайты

 

Совсем забыл.

<link href="design/{if $smarty.session.template}{$smarty.session.template}{else}{$settings->theme|escape}{/if}/css/style.css" rel="stylesheet" type="text/css" media="screen"/>

Ну да, Твое решение, красивше будет!

Ссылка на сообщение
Поделиться на другие сайты

 

        // Берем шаблон из сессии

        if(isset($_SESSION['template']) && is_dir($this->config->root_dir.'design/'.$_SESSION['template']))

            $theme = $_SESSION['template'];

        // Берем шаблон из настроек

        else

            $theme = $this->settings->theme;

Вот еще проверка на существование дирректории

 

Ссылка на сообщение
Поделиться на другие сайты

Noxter, подскажи плиз, как подставить страницу шаблона:

имею ввиду при переходе на шаблон http://site.ru/?template=sport нет тегов описания и прочего, а на странице http://site.ru/index.php?template=sport все это есть.

Те как сделать редирект с ?template=sport на index.php?template=sport или идеальный вариант как с валютами, ссылка на ?template=sport и сразу показывается с этим шаблоном без шаблона в адресе.

Ссылка на сообщение
Поделиться на другие сайты

Noxter, подскажи плиз, как подставить страницу шаблона:

имею ввиду при переходе на шаблон http://site.ru/?template=sport нет тегов описания и прочего, а на странице http://site.ru/index.php?template=sport все это есть.

Те как сделать редирект с ?template=sport на index.php?template=sport или идеальный вариант как с валютами, ссылка на ?template=sport и сразу показывается с этим шаблоном без шаблона в адресе.

Я уже все реализовал, чуть позже напишу туториал ожидай либо сам пробуй.

Подскажу одно в форме используй POST запрос.

Ссылка на сообщение
Поделиться на другие сайты

C интеграцией Вконтакте, все получилось, правда не без сложностей!
 
Но возникла проблема:
Если пользователь находится на сайте Вконтакте в приложении магазина (где используется шаблон Вконтакте) и переходит на сайт базовый (где используется шаблон, пусть Simpla), то на базовом сайте он видит шаблон Simpla и это правильно ведь сессия одна.
А как сделать проверку сесси на домен?

Типа, если не simpla.ru

        // Берем шаблон из сессии и проверяем существование директории шаблона
        if(isset($_SESSION['template']) && file_exists($this->config->root_dir.'design/'.$_SESSION['template'])) && проверяем домен
            $theme = $_SESSION['template'];
        // Берем шаблон из настроек
        else
            $theme = $this->settings->theme;

Не знаю возможно ли это вообще, подскажите плз

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...