Автор Тема: jmspagebuilder динамическое изменение скина  (Прочитано 303 раз)

22 Сентябрь 2019, 20:28:02
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Доброе время суток всем.
Моя задача сделать смену скина (home page) от варианта категории , на cms presta установлен модуль jmspagebuilder в фронтэнде есть менюшка с выбором скина 

<form action="index.php" method="POST">
            {if $themeskins|@count > 0}
            <div class="form-group">
                <label class="form-label">Выбор скина</label>   <p>{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI} </p>
                    <a class="skin-box {if $jpb_skin=='default' || $jpb_skin==''}active{/if}" title="Default">
                    <img src="{$content_dir|escape:'htmlall':'UTF-8'}themes/{$themename|escape:'htmlall':'UTF-8'}/skin-icons/default.png" alt="Default" />
                    </a>
                {foreach from=$themeskins item=sk}
                    <a class="skin-box {if $jpb_skin=={$sk}}active{/if}" title="{$sk|escape:'htmlall':'UTF-8'}" data-color="{$sk|escape:'htmlall':'UTF-8'}">
                    <img src="{$content_dir|escape:'htmlall':'UTF-8'}themes/{$themename|escape:'htmlall':'UTF-8'}/skin-icons/{$sk|escape:'htmlall':'UTF-8'}.png" alt="{$sk|escape:'htmlall':'UTF-8'}" />
                    </a>                   
                {/foreach}
            </div>
            {/if}   
            {if isset($homepages) && $homepages|@count > 1}
            <div class="form-group">
                    <label>Home Page</label>
                    <select name="jpb_homepage" id="jmshomepage">
                    {foreach from=$homepages item=hp}
                        <option value="{$hp.id_homepage|escape:'htmlall':'UTF-8'}" {if $jpb_homepage=={$hp.id_homepage|escape:'htmlall':'UTF-8'}}selected="selected"{/if}>{$hp.title|escape:'htmlall':'UTF-8'}</option>                 
                    {/foreach} 
                    </select>
            </div>
            {/if}           
            {if isset($producthovers)}
            <div class="form-group">
                    <label>Product Box Hover</label>
                    <select name="jpb_phover" id="jmsphover">
                    {foreach from=$producthovers item=ph key=phkey}
                        <option value="{$phkey|escape:'htmlall':'UTF-8'}" {if $jpb_phover=={$phkey|escape:'htmlall':'UTF-8'}}selected="selected"{/if}>{$ph|escape:'htmlall':'UTF-8'}</option>                   
                    {/foreach} 
                    </select>
            </div>
            {/if}               
            <div class="form-group">       
                <label>Расположить</label> 
                <select name="jpb_rtl">
                    <option value="0" {if $jpb_rtl=='0'}selected="selected"{/if}>LTR</option>                                       
                    <option value="1" {if $jpb_rtl=='1'}selected="selected"{/if}>RTL</option>                                       
                </select>               
            </div>
            <input id="jmsskin" type="hidden" name="jpb_skin" value="{$jpb_skin|escape:'htmlall':'UTF-8'}" />
           
            <div class="form-group btn-action">
                <button type="submit" class="btn" name="apply" value="1">Применить</button>
                <a class="btn" href="index.php?settingreset=1">Сбросить</a>
            </div>
            <input type="hidden" name="settingpanel" value="1" />
        </form>
нашел контроллер который обрабатывает и выводит страницу.
пробывал насильно менять в $jpb_homepage  от  1-16
но меняется для всех  а  мне  нужно  чтоб  конкретно для одного через сесию, читал сесию но там не понятноде  чо
консоль
Цитировать
document.cookie
"__atuvc=25%7C39; __atuvs=5d87a44e8bbb4f9900e"

23 Сентябрь 2019, 10:58:17
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
{if $category.id == "id категории"}
        {jpb_skin='название скина'}
можно в зависимости от id / name категории загружать скин
23 Сентябрь 2019, 13:27:30
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле js есть, в ней довьте переменную id_category и событие клика при загрузки категорий.
23 Сентябрь 2019, 21:00:15
Ответ #3
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Спасибо,  сейчас испытаю  два варианта.
  вопрос  решен _для  тех  кому  может пригодится  , отрывок из кода

 public function getCurrentHomePage()
    {
        $id_shop = $this->context->shop->id;

$this->context->cookie->jpb_homepage  = 16;  //  <===== Добавил строчку , меняю в куки и все работает, а по категоряем  уж  дело  техники
        if ($this->context->cookie->jpb_homepage != '') {
            $homepage_id = $this->context->cookie->jpb_homepage;
        } else {
            $homepage_id = Configuration::get('JPB_HOMEPAGE');
        }