Получить модификации опции в pdoResources
        Добрый день. 
Модно ли каким-то образом получить модификации продукта определённой опции в вызове pdoResources?
Пытался через LeftJoin, но никак не получилось…
    
    
                                                                                
            Модно ли каким-то образом получить модификации продукта определённой опции в вызове pdoResources?
Пытался через LeftJoin, но никак не получилось…
{'!pdoResources' | snippet : [
    'class' => 'msProduct',
    'where' => [
    	"parent" => 3015,
    	"class_key" => "msProduct",
	],
    'limit' => 1,
    'leftJoin' => [
    	"Mods" => [
                "class" => "msopModification",
                "on" => "Mods.rid = msProduct.id"
            ]
    ],
    'select' => '{
    	"Mods": "*",
        "msProduct": "id,parent,pagetitle",
    }',
    'showLog' => 1,
    'tpl' => '',
]}Помогите пожалуйста.    Комментарии: 23
                А зачем? Вы уверены, что ответ на ваш вопрос является единственно верным решением вашей задачи?            
                    
                Не уверен))
Суть такова: внутри товара я получаю некий ресурс — в галерее которых цвета.
В тоже время у этого товара есть опция, в модификациях которой указана наценка.
Проще говоря, есть группы лдсп и на каждую группу по названию (категория 1, категория 2 и т.д.) есть наценка. Вот ее и нужно подтянуть.
                    Суть такова: внутри товара я получаю некий ресурс — в галерее которых цвета.
В тоже время у этого товара есть опция, в модификациях которой указана наценка.
Проще говоря, есть группы лдсп и на каждую группу по названию (категория 1, категория 2 и т.д.) есть наценка. Вот ее и нужно подтянуть.
                Ничего не понял, но очень интересно. Почему просто не сделать нужную модификацию?            
                    
                ))
Обычные модификации не подходят, ввиду крайне не удобного администрирования.
Попытаюсь объяснить подробнее:
Мебель, выбор ткани или выбор цвета.
Цвета и ткани делятся на ценовые категории, внутри каждой много делений по названиям тканей, а каждая ткань в свою очередь представляет из себя множество фото в разных цветовых решениях.
Категории тканей — это у нас категории товаров. Сама ткань — ресурс (товар), фото тканей — галерея изображений.
Суть в том, что в зависимости от товара наценка на категории тканей разная. Поэтому вводим такую опцию — Категории тканей, которая содержит просто перечисление категорий (категория 1, категория2, категория 3 и т.д.), а в модификациях мы указываем наценку, допустим: кат1 — 0, кат 2 — +500, кат 3 + 1000 и.т.д
При нажатии на сайте ссылки выбор ткани всплывает модальное окно в которое подгружаются только те ресурсы, названия родителя которых совпадают с значениями опций (где-то может быть 5 категорий ткани, где-то 8) и они раскидываются по вкладкам (табам), каждый таб — отдельная категория ткани. и вот сюда мне нужно погрузить наценку категории, а для этого — получить модификации продукта по опции Категория тканей и соответственно наценку на каждое из значений опции
                    Обычные модификации не подходят, ввиду крайне не удобного администрирования.
Попытаюсь объяснить подробнее:
Мебель, выбор ткани или выбор цвета.
Цвета и ткани делятся на ценовые категории, внутри каждой много делений по названиям тканей, а каждая ткань в свою очередь представляет из себя множество фото в разных цветовых решениях.
Категории тканей — это у нас категории товаров. Сама ткань — ресурс (товар), фото тканей — галерея изображений.
Суть в том, что в зависимости от товара наценка на категории тканей разная. Поэтому вводим такую опцию — Категории тканей, которая содержит просто перечисление категорий (категория 1, категория2, категория 3 и т.д.), а в модификациях мы указываем наценку, допустим: кат1 — 0, кат 2 — +500, кат 3 + 1000 и.т.д
При нажатии на сайте ссылки выбор ткани всплывает модальное окно в которое подгружаются только те ресурсы, названия родителя которых совпадают с значениями опций (где-то может быть 5 категорий ткани, где-то 8) и они раскидываются по вкладкам (табам), каждый таб — отдельная категория ткани. и вот сюда мне нужно погрузить наценку категории, а для этого — получить модификации продукта по опции Категория тканей и соответственно наценку на каждое из значений опции
                Структура каталога такая
— Категория-1
----Ткань-1
----Ткань-2
----Ткань-3
— Категория-2
----Ткань-4
----Ткань-5
----Ткань-6
?
                    — Категория-1
----Ткань-1
----Ткань-2
----Ткань-3
— Категория-2
----Ткань-4
----Ткань-5
----Ткань-6
?
                Да, все верно            
                    
                И одна ткань может быть в нескольких категориях?            
                    
                нет, ткани могут быть только в одной категории.            
                    
                А в опции Категории тканей какие категории перечислены, не те же, что в дереве?            
                    
                Те же, и называются также. Но в дере допустим 13 категорий, а у товаров может быть только 8, значит в опции у него будет до 8 категории значения.
Хотя это редко. В основном везде у всех полный перечень. да и опции ввелись только из-за того, что наценка разная от товара к товару.
                    Хотя это редко. В основном везде у всех полный перечень. да и опции ввелись только из-за того, что наценка разная от товара к товару.
                А почему категории в опции называются так же как и категории в дереве и при этом вы говорите. что товар одновременно может быть только в одной категории, хотя в опции их может быть до 8?            
                    
                Если Категории в дереве и Категории в опциях это разные сущности, то они должны называться по-разному, если одинаковые, то зачем их дублировать?            
                    
                Принцип такой:
Свой модификатор обходит значения опции и по названию находит ID ресурсов.
Далее из них формируются табы
Вот кусок кода, в котором немного иная логика — ценник единый на все товары и поэтому задается в TV поле категории. А мне нужно сейчас перевести ее на модификации
                    Свой модификатор обходит значения опции и по названию находит ID ресурсов.
Далее из них формируются табы
{var $tabs = $_modx->getResources(
                        [
                            'published' => 1,
                            'deleted' => 0,
                            'id:IN' => $_modx->resource.color|getPageIDsByPagetitle,
                        ],
                        [
                        'class_key' => 'msCategory',
                        'sortby' => 'menuindex',
                        'sortdir' => 'ASC',
                        'limit' => 0,
                        'select' => 'id,pagetitle'
                        ]
                    )}
                    <ul class="fabric-tabs">
                        {foreach $tabs as $tab}
                            <li class="tab-link {$tab@index == 0 ? 'current' : ''}" data-tab="tab-{$tab.id}">{$tab.pagetitle}</li>
                        {/foreach}
                    </ul>А уже внутри таба выдергиваются ресурсы (ткани) и их галереиВот кусок кода, в котором немного иная логика — ценник единый на все товары и поэтому задается в TV поле категории. А мне нужно сейчас перевести ее на модификации
{if $.post.id != ''}
    {'!pdoResources'|snippet:[
        'parents' => $.post.id,
        'class' => 'msProduct'
        'where' => ['class_key' => 'msProduct'],
        'limit' => 0,
        'leftJoin' => [
            'TVCategory' => [
                'class' => 'modTemplateVarResource',
                'on' => 'msProduct.parent = TVCategory.contentid AND TVCategory.tmplvarid = 6',
            ],
            "fabricType" => [
                "class" => "msProductOption",
                "on" => "fabricType.key = 'tkan_type' and fabricType.product_id = msProduct.id"
            ]
        ],
        'select' => 'msProduct.id,parent,pagetitle,TVCategory.value as category_price, fabricType.value as fabric_type',
        'tpl' => '@INLINE
            <div class="select-color-gallery" data-type="{$fabric_type}">
                {$category_price|setPlaceholder:"category_price"}
                {"!msGallery"|snippet:[
                    "product" => $id,
                    "tpl" => "tpl.selectFabric",
                ]}
            </div>
        ',
    ]}
{/if}            
                Вы не ответили на мой вопрос, а это важно для понимания, Категории в дереве и Категории в опциях это разные сущности?            
                    
                В дереве категории — это ресурсы типа Категория товаров.
В опции — это опция типа «Список с автодополнением»
                    В опции — это опция типа «Список с автодополнением»
                Это я понял, что показывает опция? отношение к категории в дереве?            
                    
                Значение опции = Наименованию категории в дереве            
                    
                И у одной ткани — товара — может быть до 8 значений в опции Категория ткани, так?            
                    
                1. Товар Диван Амстердам. У него есть опция Категории тканей, со значениями: Категория 1, Категория 2, Категория 3 (для примера)
2. Есть в дереве ресурсов такая структура, как вы писали выше:
3. При клике в карточке товара Дивана по кнопке выбора ткани открывается модальное окно в которой в виде табов подгружаются категории в каждом из табов идут галереи из ресурсов, дочерних к данной категории.
Пример в скринах
prnt.sc/ye2m65
prnt.sc/ye2o7m
prnt.sc/ye2q5p
                    2. Есть в дереве ресурсов такая структура, как вы писали выше:
— Категория-1Товар-ткань в данном случае лишь для удобства структурирования — он может быть и простым ресурсом. Главное — внутри него есть галерея с фото тканей.
----Ткань-1
----Ткань-2
----Ткань-3
— Категория-2
----Ткань-4
----Ткань-5
----Ткань-6
— Категория-3
----Ткань-7
----Ткань-8
----Ткань-9
3. При клике в карточке товара Дивана по кнопке выбора ткани открывается модальное окно в которой в виде табов подгружаются категории в каждом из табов идут галереи из ресурсов, дочерних к данной категории.
Пример в скринах
prnt.sc/ye2m65
prnt.sc/ye2o7m
prnt.sc/ye2q5p
                Понятно, если структуру оставлять такую, то тогда не получится использовать модификации, а если использовать модификации, то надо менять структуру. Другими словами если использовать модификации, то Диван это товар, ткань это опция, причём тканей должно быть столько сколько есть комбинаций ткань+категория ткани, что скорее всего будет неудобно администрировать. Поэтому надо писать свою логику. Я бы связал диван и ткани через Связи дальше написал бы js который формировал как бы комплект товаров и при добавлении в корзину в плагине менял стоимость.            
                    
                не, связи, модификации это все не то. Администрировать с ума сойдете. Представьте что тканей порядка 10к… И они довольно часто переходят из категории в категорию… И это все надо сделать по всем товарам.
Поэтому весь вопрос в том, как получить модификации, все остальное работает правильно. Может не через pdoResources делать можно а иначе, если есть мысли буду признателен.
                    Поэтому весь вопрос в том, как получить модификации, все остальное работает правильно. Может не через pdoResources делать можно а иначе, если есть мысли буду признателен.
                Напишите свой сниппет.            
                    
                Хорошо            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.