Получить модификации опции в 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 делать можно а иначе, если есть мысли буду признателен.
Напишите свой сниппет.
Хорошо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.