Jump to content

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


Recommended Posts

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


Установка:

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

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

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

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

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

Link to post
Share on other sites
  • Replies 98
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 8 months later...
  • 2 weeks later...

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

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

 

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

<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"/>

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

Link to post
Share on other sites

 

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

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

            $theme = $_SESSION['template'];

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

        else

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

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

 

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

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

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

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

Link to post
Share on other sites

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;

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...