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

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


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

Корс, я не пойму, чего ты добиваешься?

У тебя есть решение лучше - покажи, если нет, то сиди сопи в две дырки)))

Тебе не нравится - не используй, только не сри, пожалуйста, в теме...

Многим подходит, люди пользуются и говорят спасибо.

А что-то обосрать, не предложив НИЧЕГО взамен - много ума не надо.

Я это заметил с нашей первой стычки, когда я САМ написал, что решение не самое лучшее, топорное, но оно РАБОТАЕТ.

После этого появился Корс, который стал исходить на говно, что это неправильно)) Правильного решения не предоставил, как и любого другого... Просто срал в теме, хотя я сам сказал, что решение не лучшее.

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

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

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

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

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

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

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

Корс правила-форума пункт 4.12. Устное предупреждение, последующее нарушение влечет за собой бан. Достал меня уже своим высокомерием и маразмом.

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

Сделал свой вариант "переключалки" шаблонов - http://www.simplashop.com/article/simpla-2-pereklyuchatel-polzovatelskogo-shablona

Демо - http://demo.simplashop.com/ (блок никак не оформлял - нет времени, если кто поможет - сделаю ап)

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

Я не перезаписываю настройки - только меняю значение 1 переменной на выводе, но Ваш случай проверю и отпишусь по результату. Спасибо!

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

 

$this->settings - не скалярная переменная, а объект с несколькими скалярными значениями

Честно не знал, да и var_dump($settings->theme) выдает что это string(7) "default" - может я не там смотрю. Да и в 32 строке api/Design.php автор сам обращается к ней как к строке...

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

Понял. Спасибо, что так явно сказали, что я забыл инициализировать переменную  $settings. При переносе кода случайно удалил в визуальном редакторе.

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

Я знаю, что есть еще в 1 месте передача настроек, но пока не разбирался для чего. Можете расшифровать Ваше замечание? Поправить недолго.

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

Если делать сразу инициализацию, то согласно класса settings Вы перезапишете данные в базе, т.к. там есть такой механизм, при попытке присвоения значения переменной.

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

Если делать сразу инициализацию, то согласно класса settings Вы перезапишете данные в базе, т.к. там есть такой механизм, при попытке присвоения значения переменной.

Артём не обращай внимания на Корса, вариант работает и хорошо, а кому что-то не нравится пусть головой об стенку бьется может ума добавит.

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

Если делать сразу инициализацию, то согласно класса settings Вы перезапишете данные в базе, т.к. там есть такой механизм, при попытке присвоения значения переменной.

Нашел у Вас на сайте готовое решение по переключению шаблонов и еще много полезных бесплатных статей, спасибо огромное что не жадничаете и периодически выкладываете что-то интересное, поэтому соглашусь с Администратором, если кому-то что-то не нравиться, пусть реализовывает самостоятельно!

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

 

Нашел у Вас на сайте готовое решение по переключению шаблонов и еще много полезных бесплатных статей, спасибо огромное что не жадничаете и периодически выкладываете что-то интересное, поэтому соглашусь с Администратором, если кому-то что-то не нравиться, пусть реализовывает самостоятельно!

Да у нас есть один очень взрослый и глупый человек на форуме которому памперсы давно никто не менял, вот он и сношает мозг всем вокруг.

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

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

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

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

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

 

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

 

Добрый день, спасибо вам за решение, и спасибо Марту за решение с мобильной версией!

А как соединить ваши решения, имея код ниже (со страницы http://simplashop.com/article/simpla-2-mobilnaya-versiya-sajta),  чтобы отдавать мобильным устройствам определенный шаблон, можно даже не динамически, а конкретно прописать:

public function get_theme() {
  if(!isset($_COOKIE['theme']) || !is_dir($this->config->root_dir.'/design/'.$_COOKIE['theme'].'/html')) {
      if($this->is_mobile_browser())
          $theme = $this->set_theme($this->settings->theme_mobile);
      else
          $theme = $this->set_theme($this->settings->theme);
  }
  else
      $theme = $_COOKIE['theme'];
 
  return $theme;
}

 я так понял $_COOKIE нужно заменить на $_SESSION, но что дальше ума не приложу, как задать конкретный шаблон в условия с определением мобильного устройства? 

Спасибо.

 

P.S. У автора (у Марта) есть свой способ решения переключения шаблонов, но он как то не пошел у меня... бьюсь уже месяц (

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

Можно. 

Смотрите документацию по .htaccess. 

Пример для подражания - обработка адресов вида order/2dc76..8d0c9a6d/

 

 

Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, phukortsin сказал:

Можно. 

Смотрите документацию по .htaccess. 

Пример для подражания - обработка адресов вида order/2dc76..8d0c9a6d/

 

 

нужно сделать так?

RewriteCond %{QUERY_STRING} ^template=mobile$
RewriteRule ^/$ /mobile/? [R=301,L]

но не работает =(

Ссылка на сообщение
Поделиться на другие сайты
23 минуты назад, phukortsin сказал:

Скорее как-то так:

RewriteRule ^mobile/?$    index.php?template=mobile  [L,QSA]

если с index.php?template=mobile то "страница не найдена"

а если без, просто site.com/?template=mobile то ничего не происходит

а нужен какой-то роутер писать, или достаточно в htaccess?

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

Почти получилось

если зайти на site.com/mobile/ то откроет главную страницу, но если зайти в категорию или др раздел то получается обычно site.com/категория
а как сделать чтобы работало с site.com/mobile/категория ?

.htaccess

Options -Indexes
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^mobile/?$ ?template=mobile  [L,QSA]
RewriteRule ^mobile/([^/]+)/?$  index.php?module=TemplateView&url=$1  [L,QSA]
RewriteRule ^mobile/?$  index.php?module=TemplateView  [L,QSA]

TemplateView

require_once('View.php');

class TemplateView extends View
{
	function fetch()
	{
		$url = $this->request->get('url', 'string');
		$template = $this->pages->get_template((string)$url);

		return $this->design->fetch('template.tpl');
	}
}

 

Ссылка на сообщение
Поделиться на другие сайты
13 минут назад, get31 сказал:

Почти получилось

если зайти на site.com/mobile/ то откроет главную страницу, но если зайти в категорию или др раздел то получается обычно site.com/категория
а как сделать чтобы работало с site.com/mobile/категория ?

.htaccess


Options -Indexes
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^mobile/?$ ?template=mobile  [L,QSA]
RewriteRule ^mobile/([^/]+)/?$  index.php?module=TemplateView&url=$1  [L,QSA]
RewriteRule ^mobile/?$  index.php?module=TemplateView  [L,QSA]

TemplateView


require_once('View.php');

class TemplateView extends View
{
	function fetch()
	{
		$url = $this->request->get('url', 'string');
		$template = $this->pages->get_template((string)$url);

		return $this->design->fetch('template.tpl');
	}
}

 

У вас не правильный подход к задаче. Суть в том что вы хотите сами решить задачу не будучи программистом, в итоге вам сказали как сделать, но возникает другая проблема, а всё потому что надо правильно ставить задачу. Напиши вы сразу вопрос "как сделать так чтобы ...." и люди бы написали варианты решений.

Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, a13x сказал:

У вас не правильный подход к задаче. Суть в том что вы хотите сами решить задачу не будучи программистом, в итоге вам сказали как сделать, но возникает другая проблема, а всё потому что надо правильно ставить задачу. Напиши вы сразу вопрос "как сделать так чтобы ...." и люди бы написали варианты решений.

 

Я спросил выше :) , цитирую:

а как сделать чтобы работало с site.com/mobile/категория ?

Спасибо!

Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, get31 сказал:

 

Я спросил выше :) , цитирую:


а как сделать чтобы работало с site.com/mobile/категория ?

Спасибо!

Решил.

нужно было продублировать товары для категорий index.php?module=ProductsView&category=$1

И последний вопрос:

Подскажите пожалуйста, как сделать чтобы при нажатии на главную (site.com/) заходило на первый шаблон (не mobile)?

Ссылка на сообщение
Поделиться на другие сайты
27 минут назад, get31 сказал:

нужно было продублировать товары для категорий index.php?module=ProductsView&category=$1

:))))) лучшее решение, я бы до такого точно не додумался.

Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, a13x сказал:

:))))) лучшее решение, я бы до такого точно не додумался.

от души, братан, помог :))

 

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

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

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

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

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

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

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

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

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

Загрузка...

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