Как реализовать одну фотографию на сервере для многих товаров Minishop2 ?

Добрый день.
Подскажите есть два вопроса по Minishop2.
Может зря конечно пишу и ответ очевиден, и как всегда напишут читай матчасть. Но если честно тыкните якорь-ссылочку, где почитать, не могу найти ответа в интернете.
1. В карточке товара, в галерее, фото можно подгрузить только с внешнего источника(комп и т.д.), но вопрос в том, что мне желательно присвоить одну фотографию большому количеству товаров. Поясню, если нет фото товара я подгружаю схему деталировки, и так как на схеме порядка 30 товаров, выходит, что я гружу одну и ту же фото, т.е. 30 одинаковых фото. Подскажите, как в галерее в карточке товара можно присвоить фото что лежит уже на сервере, перетаскивание в поле загрузочной панели из файловой системы заблокировано.
2. Делаю выборку на странице товаров с помощью msProducts, сейчас через связи слайдер листает все товары грубо говоря одного комплекта. Но дело в том, что в msProducts надо прописывать Id связи товаров. А так как шаблон карточки один, не могу понять как сделать чтобы msProducts подцеплял связь автоматически
&link=`.........`
, чтобы не писать Id связи и использовать один шаблон для всех товаров и всех комплектов созданных связей. Грубо говоря, хочется чтобы msProducts видел Id товара и автоматом выводил в слайдер все товары только этой связи а не других.
P/s Извиняюсь, если объяснил не совсем доходчиво свои мысли.
Виталий
12 ноября 2022, 06:41
modx.pro
492
0

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

Алексей Смирнов
12 ноября 2022, 21:32
+1
1. класически вы просто загружаете одно фото для всех этих товаров.
Как вариант можно где-то оставить фото по умолчанию (в категории в TV или еще где) и сделать условие в чанке — если фоток галереи нет, показывать эту фотку заглушку.
2. Шаблон вообще один для товаров как правило и есть. Но суть вопроса все же не понял. Т.е вы указываете один какой-то товар и нужно чтобы показывались связанные только с этим товаром товарчики, а сам товар главный не показывался? Если не угадал то что вы хотите, то приведите пример своей ситуации или логики более четкой.
    Виталий
    12 ноября 2022, 21:58
    0
    Спасибо, с фото буду пробывать по вашему совету через TV.
    По второму вопросу постараюсь пояснить:
    Есть родитель у которого допустим 150 товаров, конкретно это какое-то оборудование(родитель) и товары(запчасти). Но запчасти имеют градацию чисто технически, допустим: топливная система, двигатель, шасси и т.д. Товары одной градации при создании я связываю связью «многие к многим», т.е. в одной категории товары идут связанные не со всеми в этой категории а по градации. Т.е. создаю связь с id 1 и связываю одну группу, потом создаю связь с id 2 и связываю другую и т.д.
    В карточке товара есть блок-слайдер назовем его допустим «С этими товарами смотрят» где листаются товары которые связаны связью.
    Вызов этого блока делаю:
    [[msProducts?
    	&parents=`102`
    	&ilink=`1`	
    ]]
    Вот в ID связи то все и дело, мне нужно чтобы слайдер листал в одной категории товары только связанные с тем что сейчас смотрит покупатель, и так как в
    &ilink=`___`
    стоит выставленная id связь, то в товарах этого же родителя, но в другой градации будут листаться опять товары Id связи №1. Вот я и спрашивал как можно сделать, чтобы в слайдере msProducts выводил только связи товара который сейчас смотрит покупатель.
      Алексей Смирнов
      13 ноября 2022, 00:29
      0
      не вижу у вас в вызове параметров master.
      вот дока docs.modx.pro/komponentyi/minishop2/snippetyi/msproducts
      и скрин конкретный, где описывается как получить связи к конкретному товару:
      joxi.ru/brR5VP7H7jR5QA
        Виталий
        13 ноября 2022, 00:50
        0
        Да я не стал писать полный вызов msProducts, там у меня и лимит есть и master прописан, дело то в другом,
        Если я напишу
        [[msProducts?
        	&parents=`0`
        	&ilink=`1`
               	&master=`15`
        ]]
        То это не решит вопрос, снипет в шаблоне один, как другие связи вывести чтоб автоматом подгружались к id нужного товара, или мне надо выбрать связь «один ко многим» и вызывать так:
        [[msProducts?
        	&parents=`0`
        	&ilink=`1,2,3`
               	&master=`15,23,46`
        тогда снипет будет понимать из какой связи смотрит товар покупатель и будет подгружать в слайдер нужное.
        Блин читаю мануал и не могу понять алгоритм, извиняюсь.
          Алексей Смирнов
          13 ноября 2022, 12:22
          0
          Те у вас зависимость товар + связь?
          Ну id товара известна же...? Это [[*id]]
          А вид связи если в товаре один, то не вижу проблем выводить. Просто указать ид связи…
          Я поэтому и пытаюсь от вас добиться точной логики как оно должно работать, потому что пока вы сами четко не определите условия показа — посоветовать вам сложно.
          И опять задам вопрос: допустим мы открыли какой то конкретный товар. Какие товары, связи конкретно для этого товара должны работать?
            Виталий
            13 ноября 2022, 16:39
            0
            Алексей, попытаюсь пояснить схематически.
            Категория товаров одна в ней:

            Товары | ID Связи | Карточка товара | Слайдер товаров

            с 1 по 20 | 1 | допустим товар 11 | с 1 по 20
            с 21 по 40 | 2 | допустим товар 25 | с 21 по 40
            с 41 по 60 | 3 | допустим товар 49 | 41 по 60
            с 61 по 80 | 4 | допустим товар 75 | с 61 по 80
            Теперь поясню, группы товаров связаны связью(многие к многим) столбцы 1 и 2, в 3 столбце гипотетически просматриваемый товар покупателем, в последнем столбце то что транслирует слайдер. Если было бы возможно для каждой группы(был бы отдельный шаблон) писать снипет, проблем нет — выбираю по
            parents
            , но так как снипет один для всех групп, надо как-то оттолкнуться от Id просматриваемого товара, я так думаю. Я не знаю так можно например записать:
            [[msProducts?
            	&parents=`0`
            	&ilink=`1,2,3,4`
                   	&master=`[[*id]]`
            ]]
            Будет снипет понимать, что покупатель сейчас смотрит например товар 49 и выводить в слайдер все товары с 41 по 60 связанные связью 3.
              Алексей Смирнов
              13 ноября 2022, 17:30
              +1
              Вам просто нужно написать сниппет, который получит id связи у товара.
              Пример как сделать запрос есть тут в доке на php: docs.modx.pro/komponentyi/minishop2/interfejs/nastrojki
              Но вам параметр Link не нужно будет указывать, но придется немного написать код, чтобы выявить нужный id link из БД.
              потом у вас будет ИД link который вы можете подставить в сниппет msProduct и он уже произведет выборку нужную.
                Виталий
                13 ноября 2022, 18:09
                0
                Алексей понял, спасибо, значит простого решения нет через параметры снипета, я это и хотел понять, оставлю этот вопрос тогда до лучших времен, так как это просто моя хотелка, принципиальной надобности в этом нет. А не подскажешь как вывести вместо заглушки фото товара, фото из TV поля, или там все тоже непросто и обычной заменой пути к адресу заглушки не обойтись и надо опять писать код.
                  Алексей Смирнов
                  13 ноября 2022, 18:17
                  +1
                  Нужно написать условие — если фотки нет, то выводить другое…
                  Если на странице товара — одно условие с msGallery, а если в чанке товара для msProduct то там image плейсхолдер есть его и проверять на пустоту.
                    Виталий
                    13 ноября 2022, 18:22
                    0
                    Направление для решения понял, спасибо, если объем файлового хранилища на хостинге будет поджимать пойду по этому пути. Спасибо, вопрос закрыт.
                      Роман
                      15 ноября 2022, 09:41
                      0
                      Можно подключить Объектное хранилище S3, и не париться по этому поводу.
Александр Мельник
13 ноября 2022, 08:36
0
Врядли существует «способ из коробки» как грузить один и тот же файл, в качестве изображения для разных товаров. Но конкретно в вашем случае
если нет фото товара я подгружаю схему деталировки, и так как на схеме порядка 30 товаров, выходит, что я гружу одну и ту же фото, т.е. 30 одинаковых фото.
разве не решением будет просто проверять в коде, мол если фотография не загружена в галерею, то вывести ваши 30 фотографий? Складываете один раз ваши файлы со схемами в определенную директорию и нет необходимости загружать их к каждому товару.
    Виталий
    13 ноября 2022, 16:59
    0
    Так не получится, так как одна общая деталировка подгружается только к одной группе товаров, если прописать, что при отсутствии фото подгружать фото из папки А, то эта деталировка будет подгружаться ко всем товарам где нет фото. Мне как Алексей посоветовал наверное будет проще подгружать через TV фото деталировки, а при появление фото товара я его просто через карточку загружу, так не запутаюсь и все фото будут соответствовать товарам.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    13