Minishop2. Как вывести ссылки на другие товары?

Здравствуйте!
Подскажите, пожалуйста, как бы реализовать вот такое переключение товаров на базе Minishop2:


P.S. Разный размер (объем) = разный товар
Думал сделать через связи, но тогда надо мудрить с доп. полем с размером (30/50/80/100) + в таком случае порядок отображения не пойму как зафиксировать. ++ как тогда сделать товару ссылку на самого себя…

Через опции вроде тоже не подходит — там же внутри товара опции реализуются, а надо, чтобы по нажатию происходило переключение на другой товар…

Каких-то дополнений, которые помогли бы решить задачу не нашел, хотя задача-то вроде тривиальная(

Подскажите, пожалуйста, делал ли так кто-нибудь и если да, то как.
Заранее благодарю
steve.kon
12 августа 2020, 17:51
modx.pro
761
0

Комментарии: 7

Михаил
12 августа 2020, 20:16
0
Как вариант, сделать ТВ с выборкой на пример по модели(судя по всему там разница как раз в литраже) и выводить как id и уже через снипет выводить ссылки на товар.
    steve.kon
    12 августа 2020, 22:23
    0
    Так а если в настройках товара не задать товары, в группу которых он должен входить, как их потом выводить в шаблоне? Внутри 1ой категории будут десятки товаров и только по 3-4 нужно привязать друг к другу.
    Можно, конечно, внутри *content чанком через pdoresources. Через migx еще в принципе можно, но это всё «костыли» какие-то…
      Александр Мельник
      12 августа 2020, 22:57
      0
      не совсем понятно. 30,50,80 и так далее это разные товары? в админке это 3 разных товара?
      Создайте у товара ТВ поле. В него через запятую айдишники товаров, которые нужно показать дополнительно на странице товара. На странице получайте этот список айдишников и уже делайте с ними что хотите.
        steve.kon
        12 августа 2020, 23:19
        0
        Да, конечно, разные — иначе бы просто через опции можно было реализовать.

        Суть простая — как во многих интернет-магазинах, у товара перечислены его варианты цвета, например. Но не опцией, которую выбрал и всё, а переключением на URL этого товара. Выбрал красный — перекинуло на страницу красного, красный цвет активный, предыдущий и остальные цвета не активны.

        Если я задам TV товару — как потом выделять текущий ресурс? Как на скрине. Через js и проверку URL? Да и не совсем понимаю какой тип TV-поля под это подойдет…
          Александр Мельник
          12 августа 2020, 23:32
          0
          в большинстве cms ок это делается как раз не разными товарами, а одним. В одном товаре делается зависимость стоимости от каких-то опций. В битриксе это например — торговые предложения. В diafan — торговые зависимости. Для modx тоже есть такой компонент, вроде вот этот — modstore.pro/packages/ecommerce/msoptionsprice2
          Но можно и просто — стандартном текстовом ТВ перечислить через запятую айдишники.
          Так у вас основная проблема — это всего лишь как выделить активный элемент? Ну это меньшая из проблем. Хотя бы как вы написали — через url. Можно вывести ссылки через сниппет pdoMenu и он сам добавит активному элементу класс active. Или написать свой сниппет, который будет сравнивать айдишник ресурса с айдишником из ТВ и если совпало добавлять ему класс active
            Вадим Раевский
            12 августа 2020, 23:51
            0
            «В битриксе это например — торговые предложения.»

            Ну просто интересно, через костыли, вида:

            <?
            $curDir = trim($APPLICATION->GetCurDir(),'/');
            $arCur = explode('/',$curDir);
            $last = end($arCur);
            $tpl = (strpos($last,'offer-')===false || strpos($curDir,'/f/')) ? "product/#ELEMENT_CODE#/" : "product/#ELEMENT_CODE#/#PID#/";
            ?>
            Вызов компонента

            <?
            $APPLICATION->IncludeComponent(
            	"bitrix:catalog", 
            	"main", 
            	array(
            		...
            		"SEF_URL_TEMPLATES" => array(
            			"sections" => "catalog/",
            			"section" => "catalog/#SECTION_CODE#/",
            			"element" => $tpl,
            			"compare" => "compare.php?action=#ACTION_CODE#",
            			"smart_filter" => "catalog/#SECTION_CODE#/filter/#SMART_FILTER_PATH#/apply/",
            		),
            		...
            	),
            	false
            );?>
            А в result_modifier еще офферы отдельно обрабатывать для SEO?
              steve.kon
              12 августа 2020, 23:57
              0
              Вот про pdoMenu я и не подумал — попробую, спасибо — интересный вариант.
              Минус данного подхода в том, что мне нужно вручную заполнить TV-поля ID-шниками этих связанных товаров для (как в примере) всех 4ех товаров, что не удобно, дольше и могут возникать ошибки.
              Если более удобного решения нет, мне кажется более правильно, в данном случае, использовать связи 1 к 1 двусторонние, а эти «30», «50», «80» и т.д., подтягивать уже при выводе из TV просто как свойство конкретного товара…
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7