Consult Опубликовано 19 ноября, 2018 Жалоба Поделиться Опубликовано 19 ноября, 2018 Возникла необходимость внести кардинальные изменения в шаблон магазина. Вопрос: можно ли как-нибудь сделать новый шаблон и изменять его, чтобы он был виден только при авторизации в админ.панели? Я пробовал на поддомен new.site.ru скопировать сайт, но в итоге там вместо главной 404 ошибка выдается. Суть - редактировать шаблон не наживую, а внести изменения, а потом выкатить на основной сайт Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 19 ноября, 2018 Жалоба Поделиться Опубликовано 19 ноября, 2018 значит копию не правильно сделали. Почему 404 бьет, нужно разбираться. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 20 ноября, 2018 Жалоба Поделиться Опубликовано 20 ноября, 2018 http://forum.simplacms.ru/topic/2368-%D1%81%D0%BC%D0%B5%D0%BD%D0%B0-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%BC-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%BE%D0%B2-%D1%88%D0%B0%D0%B1/ Цитата Ссылка на сообщение Поделиться на другие сайты
Consult Опубликовано 20 ноября, 2018 Автор Жалоба Поделиться Опубликовано 20 ноября, 2018 значит копию не правильно сделали. Почему 404 бьет, нужно разбираться.Надо ставить также на поддомен как и копирование сайта на новый домен получается? Файлы копирнул, база та же. Конфиг тот же. что еще сделать нужно? http://forum.simplacms.ru/topic/2368-%D1%81%D0%BC%D0%B5%D0%BD%D0%B0-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%BC-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%BE%D0%B2-%D1%88%D0%B0%D0%B1/В таком варианте куча минусов Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 20 ноября, 2018 Жалоба Поделиться Опубликовано 20 ноября, 2018 (изменено) В таком варианте куча минусов Согласен. Мильком полистал тему, может наверное что то упустил, но там вроде бы ничего подобного не было. В api/settings.php добавляем метод: public function set_var($name, $value) { $this->vars[$name] = $value; } Он нам позволит изменить нашу переменную theme без внесения ее в БД. Далее просто в api/Design.php делаем подмену темы. Единственная сложность в том что нам нужно отсечь изменение этой переменной на страницах админки. Эта сложность выплывает из за того что симпла не имеет единой точки входа. Вообще можно врезаться и в view/view.php. Но не все программисты, в аякс модулях, при работе с шаблоном создают экземпляр View. Зачастую это просто api/Simpla.php. Поэтому если у вас корректно работает переменная $_SERVER['PHP_SELF'] то можно попробовать просто так api/design.php перед строкой: $theme = $this->settings->theme; добавляем: // Если администратор и находимся на витрине if(!empty($_SESSION['admin']) && substr($_SERVER['PHP_SELF'], 1, 6) !== 'simpla') $this->settings->set_var('theme', 'название темы для админа'); и все. если же $_SERVER['PHP_SELF'] работает не корректно то в view/View.php после self::$view_instance = $this; Добавляем $this->settings->set_var('theme', 'название темы'); но тут, как я писал выше, могут быть проблемы с ajax-модулями витрины. можно еще повозится с контроллером ThemeAdmin (сделав там прямое получение текущей темы), но думаю как то не комильфо. Не забудьте заменить 'название темы' на нужное. Можете создать в настройках какой то параметр, типа тема для админа и заменить на переменную (или же механизмы кук и сессий) Изменено 20 ноября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 21 ноября, 2018 Жалоба Поделиться Опубликовано 21 ноября, 2018 В таком варианте куча минусов В той теме как минимум ДВА варианта. В самом первом - действительно много минусов. А тот, который в конце темы - почти совсем хороший... Способ yr4ik-а - обременен недостатками "если же $_SERVER['PHP_SELF'] работает не корректно", "могут быть проблемы с ajax-модулями витрины" и потому изначально неудачен. В то время как проблемы с ajax-модулями легко преодолеть, всего лишь записывая название подмененной темы в сессию или куки... Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 21 ноября, 2018 Жалоба Поделиться Опубликовано 21 ноября, 2018 В той теме как минимум ДВА варианта. В самом первом - действительно много минусов. А тот, который в конце темы - почти совсем хороший... Способ yr4ik-а - обременен недостатками "если же $_SERVER['PHP_SELF'] работает не корректно", "могут быть проблемы с ajax-модулями витрины" и потому изначально неудачен. В то время как проблемы с ajax-модулями легко преодолеть, всего лишь записывая название подмененной темы в сессию или куки... почти совсем хороший - это какой? Можете показать? Для начала прочитайте внимательно и разберитесь при каких условиях будет не верный PHP_SELF (я думаю это не очень частый случай). Про куки и сессии - я тоже писал. Это всего лишь обвес, а я показал механизм смены и туда нужно лишь подставлять то что нужно. (кука, сессия, прочие переменные). Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 21 ноября, 2018 Жалоба Поделиться Опубликовано 21 ноября, 2018 почти совсем хороший - это какой? Можете показать? Почти совсем хорошим я назвал этот, который дал mart:http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=55490 Вопрос этот кажется простым и легким. А на самом деле, как ни странно, все сложнее.Если посмотрите ту тему повнимательнее, то можно обнаружить, что некоторые знатоки, один из которых себя на форуме позиционирует как "с большими скилами", больше года никак не могли понять очевидную ошибку из начального способа темы и доказывали, что способ хороший. А когда появился способ от mart-а, никто из них почему-то не спросил, зачем mart изобретал новый способ от уже имевшегося "хорошего"... Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 21 ноября, 2018 Жалоба Поделиться Опубликовано 21 ноября, 2018 (изменено) Почти совсем хорошим я назвал этот, который дал mart:http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=55490 Вопрос этот кажется простым и легким. А на самом деле, как ни странно, все сложнее.Если посмотрите ту тему повнимательнее, то можно обнаружить, что некоторые знатоки, один из которых себя на форуме позиционирует как "с большими скилами", больше года никак не могли понять очевидную ошибку из начального способа темы и доказывали, что способ хороший. А когда появился способ от mart-а, никто из них почему-то не спросил, зачем mart изобретал новый способ от уже имевшегося "хорошего"... ну я бы его не назвал таким. Имеет нуу очень большую не доработку... В частности этот момент: $settings = $this->settings;$settings->theme = $this->get_theme();$this->design->assign('settings', $settings); и он так же не учтет работу админки... Изменено 21 ноября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
chocolate_moles Опубликовано 21 ноября, 2018 Жалоба Поделиться Опубликовано 21 ноября, 2018 Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 ну я бы его не назвал таким. Имеет нуу очень большую не доработку... В частности этот момент: и он так же не учтет работу админки... Почему решили, что не учтет? Простым созерцанием кода?У меня способ Марта работает, одновременно прекрасно показывает и разные шаблоны на витрине и админку... Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 (изменено) Почему решили, что не учтет? Простым созерцанием кода?У меня способ Марта работает, одновременно прекрасно показывает и разные шаблоны на витрине и админку... ну я не вижу ничего подобного то бы там решалось. Не вариант 1 не вариант 2.Ничего там не сообщалось о доработке api settings и о settingsAdmin. Поэтому я и выложил свой вариант Изменено 22 ноября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Ну вы как всегда, господа. Ищете универсальное решение на годы. Человек хочет временно ставить другую тему, пока разрабатывает её. В файле api/Design.php после: // Берем тему из настроек $theme = $this->settings->theme; добавляем: if($_SESSION['admin']) $theme = 'new'; Всё. Делаем копию темы в админке, называем её new. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 ну я не вижу ничего подобного то бы там решалось. Не вариант 1 не вариант 2.Ничего там не сообщалось о доработке api settings и о settingsAdmin. Поэтому я и выложил свой вариант Не понял ничего. Вы способ Марта пробовали? Способ описан в статье:https://simplashop.com/article/simpla-2-pereklyuchatel-polzovatelskogo-shablona У меня все легко устанавливается, появляется переключалка шаблонов на витрине. Прекрасно работает и переключает. При любом выборе шаблона на витрине стандартно работает админка как обычно. Откуда Вы сделали вывод, что при способе Марта не работает админка? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Ну вы как всегда, господа. Ищете универсальное решение на годы. Человек хочет временно ставить другую тему, пока разрабатывает её. В файле api/Design.php после: // Берем тему из настроек $theme = $this->settings->theme; добавляем: if($_SESSION['admin']) $theme = 'new'; Всё. Делаем копию темы в админке, называем её new. Вы повторяете в упрощенном виде ошибку, который мастер "с большими скилами" уже демонстрировал в указанной в #3 теме. На осознание простенькой ошибки у него в той теме ушел почти год:http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=54250 Теперь Вы продолжаете его дело. Должно быть, Ваши скилы еще больше... Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Вы повторяете в упрощенном виде ошибку, который мастер "с большими скилами" уже демонстрировал в указанной в #3 теме. На осознание простенькой ошибки у него в той теме ушел почти год:http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=54250 Теперь Вы продолжаете его дело. Должно быть, Ваши скилы еще больше... Не вводите никого в заблуждение, называя ошибкой то, что ошибкой не является. Необходимость прописывать верные (шок!) адреса ко всяким стилям и скриптам — просто следствие, а не ошибка. Которое с лихвой компенсируется легкостью доработки. Можете сколько угодно важные щеки надувать, рассуждая о идеальном решении. Ну напишет человек в шаблоне ссылку так:<link rel="stylesheet" href="design/new/css/style.css"> С учетом поставленной задачи это в сто раз проще и приятнее, чем читать ваши комментарии. Да гирю пудовую приятнее поднимать, чем ваши комментарии читать. Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 (изменено) Вы повторяете в упрощенном виде ошибку, который мастер "с большими скилами" уже демонстрировал в указанной в #3 теме. На осознание простенькой ошибки у него в той теме ушел почти год:http://forum.simplacms.ru/topic/2368-смена-шаблона-пользователем-для-магазинов-шаб/?p=54250 Теперь Вы продолжаете его дело. Должно быть, Ваши скилы еще больше... Если сделать так: if($_SESSION['admin']) $theme = 'new'; else $theme = 'old'; $this->settings->theme = $theme;то вы получите рабочий {$settings->theme} в шаблоне, но постоянно будет перезаписываться значение в базе. Лично меня это раздражает. Я бы лучше указал нормальный адрес к шаблону, без переменной. Изменено 22 ноября, 2018 пользователем bananovsv Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Не вводите никого в заблуждение, называя ошибкой то, что ошибкой не является. Необходимость прописывать верные (шок!) адреса ко всяким стилям и скриптам — просто следствие, а не ошибка. Которое с лихвой компенсируется легкостью доработки. Можете сколько угодно важные щеки надувать, рассуждая о идеальном решении. Ну напишет человек в шаблоне ссылку так:<link rel="stylesheet" href="design/new/css/style.css"> С учетом поставленной задачи это в сто раз проще и приятнее, чем читать ваши комментарии. Да гирю пудовую приятнее поднимать, чем ваши комментарии читать. Вы просто гигант мысли. Вот автор Simpla не знал такой хорошей идеи. Он, лапоть отсталый, зачем-то в шаблонах много раз писал сложности типаhref="design/{$settings->theme|escape}/css/style.css"вместо простенького и понятногоhref="design/default/css/style.css". И заметьте, ни один программист с форума до такой простой идеи не дошел. Но теперь они, конечно, осознают Ваше чудесное открытие и перейдут на Ваш стиль. Мелкие недостатки в Вашем методе, конечно, есть - например, в админке копирование шаблонов работать не будет - но сама идея колоссальная. Если б еще в шаблоне заменить всякие глупости типа {$product->image->filename|resize:800:600:w} на конкретный текст, было б вообще отлично. И убрать всякие {foreach} {if} {else} - чтоб было ближе к чистому HTML. Так что можете развивать свою идею дальше... Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Не понял ничего. Вы способ Марта пробовали? Способ описан в статье:https://simplashop.com/article/simpla-2-pereklyuchatel-polzovatelskogo-shablona У меня все легко устанавливается, появляется переключалка шаблонов на витрине. Прекрасно работает и переключает. При любом выборе шаблона на витрине стандартно работает админка как обычно. Откуда Вы сделали вывод, что при способе Марта не работает админка? Корс, опять читаем не вдумываясь в суть? Я не писал что не работает админка! Я писал что он не учтет работу админки... посмотрим на примере ТС. Ему нужна тема именно для админа. Возьмем то решение с статьи (доработаем на условие или какой то параметр нужного админа, пусть даже сессия админа). Далее при заходе на сайт что мы получаем в итоге с этого кода: $settings = $this->settings; $settings->theme = $this->get_theme(); $this->design->assign('settings', $settings); 1) $settings = $this->settings; в переменную $settings мы ложим ОБЪЕКТ класса settings. Это не массив! Это объект!2) $this->get_theme(); - возвращает нужную для админа тему исходя из условий3) $settings->theme = $this->get_theme(); и что же мы тут видим? Мы через переменную $settings вызываем магический метод сет класса settings, который через БД запишет название темы админа в качестве основной. и тогда объясните что увидит новоприбывший посетитель сайта? То ли это будет? конкретно на примере статьи - это всего лишь новым клиентам в качестве основной темы ставится последняя тема любого другого посетителя... По моему это вроде все как не слабый баг... Что касается определения админки. Если не делать отсечение этого функционала - то тут конечно все пустячное. Но все же. При заходе в дизайн - нам в качестве активной темы отображается не дефолтная, а ту что мы выбрали для админа или последний раз (при пересохранениях - может дать критические неудобства). + стили в tinymce немного не те будут цепляться (но тут уже кто как посмотрит). Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 По моему это вроде все как не слабый баг... Спасибо за разъяснения. Ваша правда - решение Марта тоже не годится... Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Вы просто гигант мысли. Вот автор Simpla не знал такой хорошей идеи. Он, лапоть отсталый, зачем-то в шаблонах много раз писал сложности типаhref="design/{$settings->theme|escape}/css/style.css"вместо простенького и понятногоhref="design/default/css/style.css". И заметьте, ни один программист с форума до такой простой идеи не дошел. Но теперь они, конечно, осознают Ваше чудесное открытие и перейдут на Ваш стиль. Мелкие недостатки в Вашем методе, конечно, есть - например, в админке копирование шаблонов работать не будет - но сама идея колоссальная. Если б еще в шаблоне заменить всякие глупости типа {$product->image->filename|resize:800:600:w} на конкретный текст, было б вообще отлично. И убрать всякие {foreach} {if} {else} - чтоб было ближе к чистому HTML. Так что можете развивать свою идею дальше... Да, и отец русской демократии. Спасибо. Вы очень избирательно комментируете. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 (изменено) Спасибо за разъяснения. Ваша правда - решение Марта тоже не годится... ну вот. Поэтому я думаю практичней решать через PHP_SELF. Он не так часто будет неверен. Или же я чет сразу не придумал - можно его заменить на REQUEST_URI. Принцип будет тот же и все будет работать Изменено 22 ноября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
Consult Опубликовано 22 ноября, 2018 Автор Жалоба Поделиться Опубликовано 22 ноября, 2018 Да, и отец русской демократии. Спасибо. Вы очень избирательно комментируете.Так что, можно использовать ваш способ?) Сообщество одобряе?) Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Так что, можно использовать ваш способ?) Сообщество одобряе?) я ж вам вроде бы расписал инструкцию что нужно сделать. Что не так? Цитата Ссылка на сообщение Поделиться на другие сайты
bananovsv Опубликовано 22 ноября, 2018 Жалоба Поделиться Опубликовано 22 ноября, 2018 Так что, можно использовать ваш способ?) Сообщество одобряе?) Рекомендую вам прочитать все ответы. В теме куча решений на любой вкус — от дилетантских до заморочных.Я бы сделал так (это по-дилетантски): if($_SESSION['admin']) $theme = 'new'; else $theme = 'old'; $this->settings->theme = $theme;Но правильнее однозначно решение, которое предлагает yr4ik. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.