Разные макеты страниц магазина Есть решение

Добрый день.

Как реализовать для каждой страницы магазина отдельный макет, как к примеру home.html?

Спасибо.

6 ответов

  • 1
    Genasyst 14 сентября 2016 14:53 # Решение

    добавлять дополнительный параметр страницы с названием макета.

    например: page_type=maket1

    page_type=maket2

    В теме дизайна создать файлы maket1.html maket2.html

    в макете page.html сделать условие смарти

    вместо {$page.content}

    {if !empty($page.type)}
        {$file = "`$page.type`.html"}
    {else}
        {$file = 'page_default.html'}
    {/if}
    {include file=$file}

    а {$page.content} перенесите в макеты и создайте макет page_default.html

    • +1
      Виталий Виталий 14 сентября 2016 15:30 #

      Не работает.

      Создал файл в теме дизайна магазина maket1.html с кодом макета:

      <div class="container">
      <h1>{$page.name}</h1>
      
      {$subpages = $wa->shop->pages($page.id)}
      {if $subpages}
          <ul class="sub-links">
              {foreach $subpages as $p}
                  <li><a href="{$p.url}">{$p.name}</a></li>
              {/foreach}
          </ul>
      {/if}
      
      <div id="page" role="main">
          {$page.content}
       </div>
      </div>

      далее создал файл page_default.html с кодом:

      <div class="container">
      <h1>{$page.name}</h1>
      
      {$subpages = $wa->shop->pages($page.id)}
      {if $subpages}
          <ul class="sub-links">
              {foreach $subpages as $p}
                  <li><a href="{$p.url}">{$p.name}</a></li>
              {/foreach}
          </ul>
      {/if}
      
      <div id="page" role="main">
          {$page.content}
       </div>
      </div>

      в доп. параметрах страницы дописал: page_type=maket1

      в файле page.html сменил код на:

      <div class="container">
      <h1>{$page.name}</h1>
      
      {$subpages = $wa->shop->pages($page.id)}
      {if $subpages}
          <ul class="sub-links">
              {foreach $subpages as $p}
                  <li><a href="{$p.url}">{$p.name}</a></li>
              {/foreach}
          </ul>
      {/if}
      
      <div id="page" role="main">
          {if !empty($page.type)}
              {$file = "`$page.type`.html"}
          {else}
              {$file = 'page_default.html'}
          {/if}
          {include file=$file}
      
       </div>
      </div>

      все это сделал в теме дизайна shop

      • +1
        Genasyst Genasyst 14 сентября 2016 15:41 #

        я переменную перепутал!!!!!!!

          {if !empty($page.page_type)}
        {$file = "`$page.page_type`.html"}
        {else}
        {$file = 'page_default.html'}
        {/if}

        {include file=$file}

      • +1
        Genasyst Genasyst 14 сентября 2016 15:58 #
          {if !empty($page.page_type)}
        
                {$file = "./`$page.page_type`.html"}
            {else}
                {$file = './page_default.html'}
            {/if}
        {include file=$file}
        • +1
          Виталий Виталий 14 сентября 2016 16:09 #

          Работает. Спасибо большое за помощь.

        • +2
          Виталий Виталий 15 сентября 2016 15:01 #

          Подскажите как можно реализовать что бы макет был полностью отдельным для каждой новой страницы?

          Начиная к примеру с <html><head> и заканчивая </body></html>

          Спасибо

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите