Jump to content

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


Recommended Posts

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

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

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

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

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

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

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

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

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

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

  • 3 weeks later...

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

Link to post
Share on other sites

 

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

 

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

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

Link to post
Share on other sites
  • 6 months later...

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. У автора (у Марта) есть свой способ решения переключения шаблонов, но он как то не пошел у меня... бьюсь уже месяц (

Link to post
Share on other sites
  • 6 years later...
5 часов назад, phukortsin сказал:

Можно. 

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

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

 

 

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

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

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

Link to post
Share on other sites
23 минуты назад, phukortsin сказал:

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

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

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

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

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

Link to post
Share on other sites

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

если зайти на 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');
	}
}

 

Link to post
Share on other sites
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');
	}
}

 

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

Link to post
Share on other sites
1 минуту назад, a13x сказал:

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

 

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

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

Спасибо!

Link to post
Share on other sites
6 минут назад, get31 сказал:

 

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


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

Спасибо!

Решил.

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

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

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

Link to post
Share on other sites
27 минут назад, get31 сказал:

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

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

Link to post
Share on other sites
7 минут назад, a13x сказал:

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

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

 

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...