Kasha Posted July 18, 2012 Report Share Posted July 18, 2012 Озадачился просмотром готовых шаблонов которые предлагают фрилансеры для Simpl'ы... Наткнулся на то, что у всех есть скриншоты шаблонов, а поставить шаблон на демо-магазин можно только по предварительной договоренности. Решил что удобно будет сделать модулик который будет менять тему не из админки, а со стороны клиента. Выкладываю в паблик, может кому пригодиться.Установка:Заменяете файл view/indexview.php на этотЗаливаете в папки с темами файл themechanger.tplИ в каждой теме, в файле index.tpl после добавляете код{include file='themechanger.tpl'}В итоге получаем возможностью посмотреть все продаваемые шаблоны в онлайне и сразу.p.s. кто реализует более элегантное и грамотное решение просьба делиться решениями в паблик. ver. 2.1.0 Quote Link to post Share on other sites
Noxter Posted July 22, 2012 Report Share Posted July 22, 2012 Минус в этой реализации так то, что выбранная тема записывается в БД, что есть не очень хорошо.Я пробовал реализовывать через куки и у меня вполне стабильно все переключалось, но увы у меня были проблемы с корзиной, входом пользователя, регистрации и т.д. в общем все что связанно с куками.Попробую доделать модуль и выложу в паблик. Quote Link to post Share on other sites
Wizard Posted July 22, 2012 Report Share Posted July 22, 2012 Блин, такую ерунду сложно даже модулем назвать, а вы устроили тут практически консилиум. Есть сеты темы - подменяем их на сеты с сессии, если их нет то тема по умолчанию. Quote Link to post Share on other sites
Noxter Posted July 22, 2012 Report Share Posted July 22, 2012 Визар собсно я так и сделал=) Quote Link to post Share on other sites
Kasha Posted July 22, 2012 Author Report Share Posted July 22, 2012 Ой да ну, проблем в том что тема сохраняется в бд нет, а вот с тем что она криво чистит компилед - есть. Модуль не модуль - не суть важно. Главное что можно в живую смотреть шаблоны, а не ждать пока сонный дизайнер поставить тебе тему на демо магазин... Знаете-ли время нынче дорого стоит...p.s. если кто поправит реализацию - буду благодарен, мне пока некогда (( Quote Link to post Share on other sites
Noxter Posted July 22, 2012 Report Share Posted July 22, 2012 2-5 заказчиков, каждый из них выбрал нужную тему и соответственно в БД то одна то другая записалась, если одновременно это делать то не факт что каждый заказчик увидит ту тему которую выбрал он, а скорее всего увидит ту которую выбрал другой.Вот и выйдет такая белеберда.С куками же намного проще, храним имя темы в куке, далее через шаблон вызываем и каждый пользователь сайта видит свою выбранную тему=) Quote Link to post Share on other sites
Kasha Posted July 22, 2012 Author Report Share Posted July 22, 2012 Выложи в паблик, думаю дизы оценят Quote Link to post Share on other sites
SimplaTemplate Posted July 28, 2012 Report Share Posted July 28, 2012 Можно как-то реализовать смену шаблона по ссылке? Из минусов после смены шаблона необходимо обновлять страницу. Quote Link to post Share on other sites
Ogybil Posted April 27, 2013 Report Share Posted April 27, 2013 Так выложите решение Quote Link to post Share on other sites
Kasha Posted April 27, 2013 Author Report Share Posted April 27, 2013 оно выложено, ссылки кривенькие, но работают Quote Link to post Share on other sites
Ogybil Posted May 9, 2013 Report Share Posted May 9, 2013 Так в этом решении выбранная тема записывается в БД, а я имел ввиду решение, чтобы по ссылке (как валюты) менялось.Т.е. чтобы основная тема была основной, но при желании вызываем другую тему типа: /?theme_name=sosПри этом другие пользователи, видят сайт в основной теме.Помогите, потому-что даже по аналогии не могу допереть... Quote Link to post Share on other sites
Noxter Posted May 10, 2013 Report Share Posted May 10, 2013 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 Quote Link to post Share on other sites
Ogybil Posted May 10, 2013 Report Share Posted May 10, 2013 Да, Noxter, все работает, спасибо огромное!!!Конечно, там есть моменты со стилями (стиль берется не из шаблона сессии, а из темы по-умолчанию, объяснил как понимаю), но думаю можно допилить.Я это планирую попробовать подогнать под интеграцию с Вконтакте.Теоретически это тупой, но простой способ. А-то за 100 уев, как здесь предлагали не камильфо...Оцените шансы такого способа... Quote Link to post Share on other sites
Noxter Posted May 10, 2013 Report Share Posted May 10, 2013 Совсем забыл. <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"/> Quote Link to post Share on other sites
Ogybil Posted May 10, 2013 Report Share Posted May 10, 2013 Ха, кстати, это также можно использовать для мобильной версии (принудительно), сложность со стилями убивается заменой {$settings->theme|escape} на название шаблона. Quote Link to post Share on other sites
Ogybil Posted May 10, 2013 Report Share Posted May 10, 2013 Совсем забыл. <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"/>Ну да, Твое решение, красивше будет! Quote Link to post Share on other sites
Ogybil Posted May 10, 2013 Report Share Posted May 10, 2013 // Берем шаблон из сессии if(isset($_SESSION['template']) && is_dir($this->config->root_dir.'design/'.$_SESSION['template'])) $theme = $_SESSION['template']; // Берем шаблон из настроек else $theme = $this->settings->theme;Вот еще проверка на существование дирректории Quote Link to post Share on other sites
Ogybil Posted May 10, 2013 Report Share Posted May 10, 2013 Noxter, подскажи плиз, как подставить страницу шаблона:имею ввиду при переходе на шаблон http://site.ru/?template=sport нет тегов описания и прочего, а на странице http://site.ru/index.php?template=sport все это есть.Те как сделать редирект с ?template=sport на index.php?template=sport или идеальный вариант как с валютами, ссылка на ?template=sport и сразу показывается с этим шаблоном без шаблона в адресе. Quote Link to post Share on other sites
Noxter Posted May 10, 2013 Report Share Posted May 10, 2013 Noxter, подскажи плиз, как подставить страницу шаблона:имею ввиду при переходе на шаблон http://site.ru/?template=sport нет тегов описания и прочего, а на странице http://site.ru/index.php?template=sport все это есть.Те как сделать редирект с ?template=sport на index.php?template=sport или идеальный вариант как с валютами, ссылка на ?template=sport и сразу показывается с этим шаблоном без шаблона в адресе.Я уже все реализовал, чуть позже напишу туториал ожидай либо сам пробуй.Подскажу одно в форме используй POST запрос. Quote Link to post Share on other sites
Ogybil Posted May 10, 2013 Report Share Posted May 10, 2013 Спасибо, попробую сам, хотя... Если получится напишу. Quote Link to post Share on other sites
Ogybil Posted May 10, 2013 Report Share Posted May 10, 2013 Noxter, я извиняюсь, можешь больше подсказать а-то я закипаю уже.Не могу понять Quote Link to post Share on other sites
Noxter Posted May 10, 2013 Report Share Posted May 10, 2013 <form action="/" method="post"> Quote Link to post Share on other sites
Ogybil Posted May 12, 2013 Report Share Posted May 12, 2013 К сожалению на локале, но действительно работает. Quote Link to post Share on other sites
Ogybil Posted May 17, 2013 Report Share Posted May 17, 2013 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;Не знаю возможно ли это вообще, подскажите плз Quote Link to post Share on other sites
Ogybil Posted May 17, 2013 Report Share Posted May 17, 2013 Прошу прощения на базовом сайте он видит шаблон Vkontakte Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.