Не получается создать каталог с картинками

Здравствуйте, я новичок в Modx. Пытаюсь в MODX Revolution 2.8.4 создать стену каталога с помощью pdoMenu, где к каждой категории привязана картинка. Но картинки никак не хотят отображаться…
Для изображений создаю tv параметр «imagecat», в настройках которого были попытки использовать следующие комбинации в разных сочетаниях: Параметры ввода — тип ввода «изображение» и «image+», Параметры вывода — «изображение», «image+», «по умолчанию», «текст», Источники файлов — «Filesystem» и специально созданный источник — папка, в которой непосредственно лежат нужные изображения. Любая комбинация этих настроек приводит к одному результату — изображения не отображаются.(В место шаблона, где должен отображаться каталог вставляю чанк:
[[!pdoMenu?
&parents = `20`
&level=`0`
&includeTVs = `imagecat`
&tpl = `block_categories`
]]
Код в чанке «block_categories» такой (пока без стилей, для начала мне бы картинки вывести):
<div class="">
        <a href="[[~[[+id]]]]"><img src="[[+imagecat]]" alt="[[+pagetitle]]"></a>
        <div class=""><h4><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h4></div>
    </div>

Замена "+imagecat" на "+tv.imagecat" ничего не даёт.
Вместо списка категорий с картинками на сайте выдаётся просто текстовый список.
В браузере вместо ссылки на картинку — пустота (scr=" ").
Если в код добавить phpthumbon (хотелось бы в итоге обрезать изображения до нужных размеров), т.е.
<div class="">
        <a href="[[~[[+id]]]]"><img src="[[+imagecat:phpthumbon=`w=120&h=120`]]" alt="[[+pagetitle]]"></a>
        <div class=""><h4><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h4></div>
    </div>
То, phpthumbon начинает цеплять какую-то пустую картинку в папке "/assets/cache_image/", то есть нужную картинку тоже в упор не видит.
Подскажите, пожалуйста, кто знает, куда копать? Решения подобных ситуаций, найденные в поиске, результата не дают.(
Марина
07 февраля 2023, 22:18
modx.pro
704
0

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

Артур Шевченко
07 февраля 2023, 22:29
0
Определенно нужно либо писать [[+tv.imagecat]], либо добавить параметр tvPrefix с пустым значением. Если не заработает оставь параметр tpl пустым — посмотри какие плейсхолдеры доступны. Ещё можно showLog добавить и посмотреть, что в запросе.
    Марина
    07 февраля 2023, 22:43
    0
    [[+tv.imagecat]] либо использование tvPrefix = ' ' результата не дают. ShowLog выдаёт следующее:
    0.0003369: pdoTools loaded
    0.0000091: xPDO query object created
    0.0001841: Included list of tvs: imagecat
    0.0000589: leftJoined modTemplateVarResource as TVimagecat
    0.0000558: Added selection of modResource: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `alias_visible`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
    0.0000038: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `imagecat`
    0.0002809: Processed additional conditions
    0.0003719: Added where condition: modResource.parent:IN(20,15,16,17,18,48,19,46,60,47,40,54,49,30,25,33,27,57,51,34,58,50,24,59,56,29,36,28,26,45,39,44,38,53,43,35,32,31,23,41,52,21,61), OR:modResource.id:IN(21), modResource.published=1, modResource.hidemenu=0, modResource.deleted=0, modResource.context_key=web
    0.0000269: Replaced TV conditions
    0.0000501: Sorted by modResource.menuindex, ASC
    0.0001061: SQL prepared "SELECT `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`alias_visible`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVimagecat`.`value`, '') AS `imagecat` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVimagecat` ON `TVimagecat`.`contentid` = `modResource`.`id` AND `TVimagecat`.`tmplvarid` = 2 WHERE  (  ( `modResource`.`parent` IN (20,15,16,17,18,48,19,46,60,47,40,54,49,30,25,33,27,57,51,34,58,50,24,59,56,29,36,28,26,45,39,44,38,53,43,35,32,31,23,41,52,21,61) OR `modResource`.`id` IN (21) )  AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 AND `modResource`.`context_key` = 'web' )  ORDER BY modResource.menuindex ASC "
    0.0009260: SQL executed
    0.0000689: Rows fetched
    0.0001390: Returning raw data
    0.0000088: Tree was built
    0.0000041: Start template tree
    0.0003331: Loaded "modChunk" with name "block_categories"
    0.0486379: End template tree
    0.0000601: Created inline "modChunk" with name "dc6d3757597108f87f958f868cf1591a"
    0.0514851: Total time
    4 194 304: Memory usage
      Артур Шевченко
      07 февраля 2023, 22:49
      0
      Вроде всё нормально. Может быть опечатка в имени TV? Или TV не заполнено?
        Марина
        07 февраля 2023, 23:09
        0
        Нет, опечатки нет…
        А что значит не заполнено?
Марина
08 февраля 2023, 10:53
0
Поясните, пожалуйста, где именно должно быть значение?
    Константин Ильин
    08 февраля 2023, 11:06
    0
    Имеется ввиду Вы картинку точно загрузили к ресурсу? Потому что, [[+imagecat]] или [[+tv.imagecat]] должны что-то выдавать, если нет опечаток и изображение загружено.
    И у тв лучше сделать так:
    Параметр ввода изображение или что-то удобное вам
    А параметр вывода вообще не трогать, оставить по умолчанию
      Марина
      08 февраля 2023, 11:29
      0
      Картинки у меня лежат в папке /assets/images/catalogies. В настройках tv imagecat пробую подключать источник файлов по умолчанию — filesystem — картинки не подгружаются. Пробую подключать созданный источник файлов, в котором прописан путь к файлам assets/images/catalogies/ — результат тот же.
      Параметр ввода — изображение либо image+, вывод — по умолчанию (другие варианты вывода результат не меняют).
      Или картинки нужно загружать в какую-то другую папку?
      К ресурсам картинки присоединены. Редактор обрезки изображений работает.
      Переустановка связанных дополнений ничего не даёт…
        Константин Ильин
        08 февраля 2023, 11:42
        0
        То что они лежат где-то это одно. Вам же нужно выбрать у каждого ресурса иpображение,
        Например открываете ресурс «Лампочки», там вкладка Доп поля и там ваше поле должно отображаться, если вы указали для TV шаблон в котором отображать это поле. В итоге В вашем поле выбираете нужное вам изображение и сохраняете ресурс.
        Должно быть заполнено: disk.yandex.ru/i/1E2QED82nhDY8w

        Все довольно просто, никаких источников файлов для быстрого старта не надо создавать.

        TV
        — Ввод Изображение
        — Выбрать для какого(их) шаблонов отображать

        — Зайти в ресурс(ы) и выбрать/загрузить картинку к нему
          Марина
          08 февраля 2023, 12:22
          0
          Ещё раз повторю, картинки к ресурсам у меня подгружены.
          Вот скриншот:
          disk.yandex.ru/i/egoA_EV5vQG6UQ
          Шаблон нужный выбран, иначе бы у ресурса не отображалось доп. поле tv
            Константин Ильин
            08 февраля 2023, 12:32
            0
            Мои извинения.
            Как писал Артур выше
            Если не заработает оставь параметр tpl пустым — посмотри какие плейсхолдеры доступны
            Там поискать ваше поле и какое значение там. Возможно там json или что-то типа того
              Марина
              08 февраля 2023, 16:32
              0
              Если оставляю tpl пустым в браузере выводится следующий текст (копирую то, что отображается для одного ресурса):
              Array ( [id] => 15 [type] => document [contentType] => text/html [pagetitle] => Acura [longtitle] => [description] => [alias] => acura [alias_visible] => 1 [link_attributes] => [published] => 1 [pub_date] => 0 [unpub_date] => 0 [parent] => 20 [isfolder] => 1 [introtext] => [content] => [richtext] => 1 [template] => 3 [menuindex] => 1 [searchable] => 1 [cacheable] => 1 [createdby] => 1 [createdon] => 1672357199 [editedby] => 1 [editedon] => 1675709742 [deleted] => 0 [deletedon] => 0 [deletedby] => 0 [publishedon] => 1672357140 [publishedby] => 1 [menutitle] => Acura [donthit] => 0 [privateweb] => 0 [privatemgr] => 0 [content_dispo] => 0 [hidemenu] => 0 [class_key] => msCategory [context_key] => web [content_type] => 1 [uri] => catalog/acura/ [uri_override] => 0 [hide_children_in_tree] => 0 [show_in_tree] => 1 [properties] => [imagecat] => Array ( [sourceImg] => Array ( [src] => acura-80x80.png [source] => 3 [width] => 80 [height] => 80 ) [crop] => Array ( [height] => 80 [width] => 80 [x] => 0 [y] => 0 ) [targetWidth] => [targetHeight] => [altTag] => ) [idx] => 1 [last] => [level] => 1 [children] => 0 [wrapper] => [classnames] => first [classNames] => first [classes] => class="first" [link] => http://artzvgdp.bget.ru/catalog/acura/ [title] => Acura [wf.docid] => 15 [wf.type] => document [wf.contentType] => text/html [wf.pagetitle] => Acura [wf.longtitle] => [wf.description] => [wf.alias] => acura [wf.alias_visible] => 1 [wf.attributes] => [attributes] => [wf.published] => 1 [wf.pub_date] => 0 [wf.unpub_date] => 0 [wf.parent] => 20 [wf.isfolder] => 1 [wf.introtext] => [wf.content] => [wf.richtext] => 1 [wf.template] => 3 [wf.menuindex] => 1 [wf.searchable] => 1 [wf.cacheable] => 1 [wf.createdby] => 1 [wf.createdon] => 1672357199 [wf.editedby] => 1 [wf.editedon] => 1675709742 [wf.deleted] => 0 [wf.deletedon] => 0 [wf.deletedby] => 0 [wf.publishedon] => 1672357140 [wf.publishedby] => 1 [wf.linktext] => Acura [wf.menutitle] => Acura [wf.donthit] => 0 [wf.privateweb] => 0 [wf.privatemgr] => 0 [wf.content_dispo] => 0 [wf.hidemenu] => 0 [wf.class_key] => msCategory [wf.context_key] => web [wf.content_type] => 1 [wf.uri] => catalog/acura/ [wf.uri_override] => 0 [wf.hide_children_in_tree] => 0 [wf.show_in_tree] => 1 [wf.properties] => [wf.imagecat] => Array ( [sourceImg] => Array ( [src] => acura-80x80.png [source] => 3 [width] => 80 [height] => 80 ) [crop] => Array ( [height] => 80 [width] => 80 [x] => 0 [y] => 0 ) [targetWidth] => [targetHeight] => [altTag] => ) [wf.idx] => 1 [wf.last] => [wf.level] => 1 [wf.subitemcount] => 0 [wf.wrapper] => [wf.classnames] => first [wf.classNames] => first [wf.classes] => class="first" [wf.link] => http://artzvgdp.bget.ru/catalog/acura/ [wf.title] => Acura )
              Можно ли извлечь отсюда какую-либо информацию? Если да, то какую? Благодарю за подсказки.
                Артур Шевченко
                08 февраля 2023, 19:13
                0
                Ну вот и ответ, ваше ТВ это массив, путь к картинке наверное можно получить так [[+tv.imagecat.src]]
                  Марина
                  08 февраля 2023, 19:39
                  0
                  Будете смеяться, но такой код тоже не срабатывает:
                  <div class="">
                          <a href="[[~[[+id]]]]"><img src="[[+tv.imagecat.src]]" alt="[[+pagetitle]]"></a>
                          <div class=""><h4><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h4> </div>
                      </div>
                  А почему, кстати, tv стало массивом? Это где-то прописывается?
                    Артур Шевченко
                    08 февраля 2023, 19:53
                    0
                    Ничего смешного тут нет. Я просто не вижу какой у вас сейчас вызов, может tv не нужен.
                    Петропавловский Артем
                    08 февраля 2023, 20:47
                    +1
                    Небольшая корректировка, вот так [[+tv.imagecat.sourceImg.src]] там еще один массив
                      Марина
                      08 февраля 2023, 21:52
                      0
                      Такой код тоже не срабатывает:
                      <div class="">
                              <a href="[[~[[+id]]]]"><img src="[[+imagecat.sourceImg.src]]" alt="[[+pagetitle]]"></a>
                              <div class=""><h4><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h4></div>
                          </div>
                      Ни при:
                      [[!pdoMenu?
                      &parents = `20`
                      &level=`0`
                      &includeTVs = `imagecat`
                      &tpl = `block_categories`
                      &tvPrefix = ``
                      ]]
                      Ни при:
                      [[!pdoMenu?
                      &parents = `20`
                      &level=`0`
                      &includeTVs = `imagecat`
                      &tpl = `block_categories`
                      ]]
                      Или вместо sourceImg должно быть какое-то другое значение?

                      Откуда там могло появиться столько массивов? Что этому способствует?
                        Алексей Смирнов
                        08 февраля 2023, 21:55
                        0
                        ЧТо-то ушли все не туда.
                        Если вы вызываете так:
                        [[!pdoMenu?
                        &parents=`20`
                        &level=`0`
                        &includeTVs=`imagecat`
                        &tpl=`block_categories`
                        ]]
                        То у вас картинка будет в плейсхолдере в tpl block_categories
                        как [[+imagecat]] и ни как иначе.
                        Если не выводиться — проверьте что в дочерних заполненто поле imagecat
                        проверьте верность написания и что родитель 20- верный.
                        Марина
                        08 февраля 2023, 22:32
                        0
                        Повторю картинку заполнения tv поля в ресурсе:
                        disk.yandex.ru/i/egoA_EV5vQG6UQ
                        Судя по ней, id родителя — 20, я его и указываю.
                        Вот здесь видно имя tv поля:
                        disk.yandex.ru/i/AhPi4FoSE_27GQ
                        Что ещё может быть?
                        Алексей Смирнов
                        08 февраля 2023, 22:51
                        0
                        у вас установлен какой-то сторонний компонент по фоткам. откройте вкладку
                        параметры ввода и покажите
                        joxi.ru/Y2LYgPnT76QQbA
                        Марина
                        08 февраля 2023, 23:02
                        0
                        Сторонний компонент — это image+, он у меня упомянут в первом сообщении.
                        disk.yandex.ru/i/rVyWuJgOUH2fxQ
                        Но, при выборе тип ввода — изображение, ничего не меняется.
                        Алексей Смирнов
                        08 февраля 2023, 23:10
                        0
                        Выберите обычный тип Изображение.
                        Или вам принципиально чтобы image+ был у вас?
                        Марина
                        08 февраля 2023, 23:48
                        0
                        При выборе тип Изображение, повторюсь, ничего не меняется. То есть загруженные картинки всё также не отображаются. Удаление компонента image+ также ничего не даёт…
                        Алексей Смирнов
                        08 февраля 2023, 23:56
                        0
                        Нее… смотрите.
                        включаете тип поля Картинка. сохраняете. смотрите во вкладку Параметры вывода — ставите по умолчанию. (если стоит — ок).
                        Идете в ресурс вложенный где родитель id20 — проверяете что картинка отображается и на месте. сохраняете этот ресурс на всякий случай.
                        Далее идем в код где вы пишите pdoMenu:
                        [[!pdoMenu?
                        &parents=`20`
                        &level=`0`
                        &includeTVs=`imagecat`
                        &processTVs=`imagecat`
                        &prepareTVs =`imagecat`
                        &tpl=`block_categories`
                        ]]
                        Чанк block_categories при этом:
                        <div class="">
                        <b>URL: [[+imagecat]];</b>
                                <a href="[[~[[+id]]]]"><img src="[[+imagecat]]" alt="[[+pagetitle]]"></a>
                                <div class=""><h4><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h4></div>
                            </div>
                        Марина
                        09 февраля 2023, 00:30
                        0
                        Благодарю вас! Заработало! Помогли строчки
                        &processTVs=`imagecat`
                        &prepareTVs =`imagecat`

                        Хотя в какой-то момент они у меня стояли, но может не срабатывали при image+.
                        Сейчас работает если включить любую из этих строк. Т.е либо processTVs либо prepareTVs. Вместе тоже работают.
                        Алексей Смирнов
                        09 февраля 2023, 09:17
                        0
                        У image+ совершенно другой вывод данных. поэтому и не получалось.
                        Марина
                        09 февраля 2023, 14:07
                        0
                        Если вам не сложно, подскажите, пожалуйста, какой? Или дайте, пожалуйста, ссылочку, где это расписано. Интересно, для информации. Спасибо!
                        Алексей Смирнов
                        09 февраля 2023, 14:35
                        0
                        Вам выше говорили. там вывод — массив.
                        у вас там подключен id = 3 медиаисточник и в нем, видимо еще есть какая-то папка которая в путь файла [[+imagecat.sourceImg.src]] — Не попадает и ее нужно вычислять или прописать в ручную в чанке снипета. к сожалению я не работал с image+ и готового решения у меня нет.
                        Марина
                        09 февраля 2023, 15:38
                        0
                        Ладно, благодарю вас за помощь!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    29