Вывод категории

Добрый день. Есть ли возможность в  WebAsyst вывести список категории на уровне ссылки site.ru/category/

Есть категории например:

/category/category-1/

/category/category-2/

/category/category-3/ ... /category/category-N/

Хочется например если находимся по ссылке site.ru/category/ то видели категории с блоком и с картинкой

category-1, category-2, category-3 ... category-N

Если это возможно напишите пожалуйста?

11 ответов

  • 1
    Syrbek.RU 28 февраля 2023 00:37 #

    Кто ни будь может ответить?

    • +1
      replicant replicant 28 февраля 2023 01:14 #
      • +1
        Syrbek.RU Syrbek.RU 28 февраля 2023 03:12 #

        Да, именно так.

        Сейчас если перейти на site.ru/category/ то у меня ошибка 404

        Не подскажете где это решается?

        Спасибо.

        • +2
          Nail Nail 28 февраля 2023 07:45 #

          Создаёте в приложении Магазин/Сайт страницу с URL "category".

          Потом в режиме редактирования HTML подключаете вывод и отображение категорий через код:

          {$categories = $wa->shop->categories(0, 0, true)}

          - подробнее можете глянуть в Шпаргалке.

          А дальше сами стилизуете вывод этих категорий.

          • +1
            Syrbek.RU Syrbek.RU 10 марта 2023 12:13 #

            Спасибо за подсказку. Отображение категории сделал:

            {$categories = $wa->shop->categories(0, 0, true)}
                    {if count($categories)}
                        <ul class="tree">
                            {foreach $categories as $cat}
                                <li>
                                    <a href="{$cat.url}">{$cat.name}</a>
                                </li>
                            {/foreach}
                        </ul>
                    {/if}

            Возможно ли тут на лету под категории второго уровня хотя бы отобразить? 
            Например: 

            /category/category-1/category-1-1/
            /category/category-1/category-1-2/
            ....
            /category/category-1/category-1-N/

        • +2
          replicant replicant 28 февраля 2023 12:47 #

          К решению данной задачи могут быть разные подходы, но в общем виде сначала делаете страницу, а затем в ней уже реализуете функционал шаблона темы дизайна.

          Либо можно просто подключить созданный для этого шаблон примерно так {include file="`$wa->shop->themePath('theme_id')`имя_шаблона.html" inline}

          В самом шаблоне реализуется что-то подобное

          {foreach $wa->shop->categories(id_parent,depth,true,false,'url_витрины/*') as $c}
          
          и далее разбираем то, что взяли и формируем вывод, попутно оформляя как надо, url_витрины совсем опциональная штука, можно и без него


          Задача может несколько усложниться, если потребуется на странице подключать шаблоны, зависимые от темы дизайна, и тут уже без хелпера типа {$theme_settings = shopCustom::getThemeSettings()} не обойтись, ну или можно обеспечить эмуляцию чувствительных значений настроек темы какими-нибудь доп. параметрами страницы, подменяя при условии нахождения на этой странице, которое может быть таким $action == page && $page.id == нужный_id

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

          {$lc = $wa->shop->productSet('update')}
          
              <div class="products {if waRequest::isMobile(false)}products_slider-fix{else}products_slider owl-carousel owl-theme-nav-dots owl-theme-nav{/if} products_col-4">
                  {include file="`$wa->shop->themePath('theme_id')`list-thumbs.html" products=$lc countLists=$lc|@count inline}
              </div>

          • +1
            Syrbek.RU Syrbek.RU 10 марта 2023 13:04 #

            Добрый день. По умолчанию страница открывается в шаблоне страницы где две колонки. Пробовал по вашей рекомендации добавить код в режиме редактирования HTML:

            {include "{$wa->shop->themePath('megashop2')}page.html"}

            Но не помогло. В контенте запечаталась код. Видимо не срабатывает. Хотелось бы чтоб для этой страницы был собственный шаблон без колонки на всю ширину контента. Не подскажете как подключить? 

            • +1
              replicant replicant 10 марта 2023 14:10 #

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

              Задача первично состоит в создании (нового) шаблона, допустим с именем test.html, в теме дизайна магазина. В самом шаблоне можете просто написать одну строку <p>hello world</p> и этого пока будет достаточно. И далее сам шаблон надо подключить к странице по адресу /category/

              Но тут что-то мешает.

              1. Либо у вас SMARTY по каким-то причинам запрещено использовать на страницах и надо это исправить.
              2. Либо ошибка в строке подключения шаблона темы дизайна к странице, потому что надо делать так как в примере

              {include file="`$wa->shop->themePath('theme_id')`ваш_шаблон_из_магазина.html"}

              а вы приводите в качестве примера другой код, что вроде как не есть правильно

              {include "{$wa->shop->themePath('megashop2')}page.html"}


              • +1
                Syrbek.RU Syrbek.RU 10 марта 2023 14:28 #

                Извиняюсь за свои эксперименты. Заработало подключение:

                {include file="`$wa->shop->themePath(waRequest::getTheme())`test.html"}

                Скриншот во вложении. То что зачеркнул это левая колонка. Хочется чтобы её не было. Можете подсказать в какую сторону смотреть?

                • +1
                  replicant replicant 10 марта 2023 14:52 #

                  Понятно теперь. Левая колонка - это вообще другая задача, которую можно решить всякими разными способами. Всё зависит от более глобальной верстки шаблона вашего сайта и в основном от структуры main.html, а там от деления на левую и правую колонки. Поскольку сама левая колонка, скорее всего, находится чуть выше (что бы это ни значило), чем контент страницы Test, то и "выключатель" надо монтировать тоже выше.

                  Приведу простой пример решения через main.html (классы left и right как бы намекают что и где)

                  {if $action != 'page'}
                  
                      {$content}
                  
                  {else}
                  
                      <div class="wrap">
                          {if $page.id == ХХХ} (XXX - ID вашей страницы /category/)
                          
                              {$content}
                          
                          {else}
                              {if !waRequest::isMobile(false)} (на мобилках сразу не формируем левую колонку)
                                      <div class="left">
                                          какое-то содержимое левой колонки
                                      </div>
                              {/if}
                          
                              <div class="right">
                                  {if !empty($breadcrumbs)}
                                      {include file="./breadcrumbs.html"}
                                  {/if}
                                  
                                  {$content}
                                  
                              </div>
                          {/if}
                      </div>
                  
                  {/if}

                  За что отвечает main.html думаю по коду понятно. И тут многое или вообще всё зависит от вашей фантазии. Поскольку такая страница /category/ на сайте всего одна, то смонтировать подобное исключение для неё прямо в важном шаблоне темы в принципе не криминал.

                  P.S. Управление выключателем и условиями его срабатывания можно вынести даже в настройки темы. Можно использовать доп. параметры страницы и много чего ещё придумать наверное. Я просто показал одно из возможных решений.

                  • +1
                    Syrbek.RU Syrbek.RU 10 марта 2023 15:45 #

                    Спасибо за подсказку. Помогло. В моем шаблоне файл назывался o-index.main.html
                    Привожу для примера кусок кода в шаблоне:

                    {if $is_show_sidebar && (!"{call is_mobile}" || (!!"{call is_mobile}" && $wa->globals('is_show_sidebar_mobile')) || (!!"{call is_mobile}" && ($wa->param(plugin) === 'searchpro' || $wa->param(plugin) === 'catalogreviews')) )}
                    			{$wa->globals('sidebar_side', $sidebar_side)}
                    			{$sidebar = "{call include_override file='index.sidebar'}"}
                    		{else}
                    			{$sidebar = null}
                    		{/if}
                    
                            {*18 - ID страницы /category/*}
                            {if $page.id == 18}
                                {$sidebar = null}
                            {/if}
                    
                    		<div class="l-container l-container_content">
                    			<div class="l-content-container {if !empty($sidebar)}l-content-container_sidebar{/if}">
                    				{if !empty($sidebar)}
                    					<div class="l-content-columns l-content-columns_sidebar-{$sidebar_side}">
                    						<section class="l-content-columns__content">
                    							{$index_content}
                    						</section>
                    						<aside class="l-content-columns__sidebar">
                    							{$sidebar}
                    						</aside>
                    					</div>
                    				{else}
                    					{$index_content}
                    				{/if}
                    			</div>
                    		</div>

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

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