Как получить в админке имя альбома в MIGX?

Хочу создать такой tv параметр с помощью MIGX, чтобы можно было прикреплять несколько альбомов из компонента Gallery к странице.

Создаю так:

Вкладки
[{«caption»: «Альбом», «fields»: [
{«field»:«album», «caption»: «Альбом», «inputTVtype»:«galleryalbumlist»}
]}]

Колонки
[
{«header»: «Альбом», «sortable»: «false», «dataIndex»: «album»}
]

Все вроде бы ничего, но в админке при добавлении я вижу ID альбома, что логично.
Вопрос в том, можно ли как-то «рендерить» ID альбома в его название?
Des
Des
03 июля 2016, 00:48
modx.pro
1
3 684
0

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

Павел Романов
03 июля 2016, 11:18
0
Можно сделать сниппет по мотивам этого:

<?php
if(empty($id)) return '';
$table = 'modx_gallery_albums';
$sql = "SELECT `name` FROM `$table` WHERE `id` = $id";
$query = new xPDOCriteria($modx, $sql);
if ($query->prepare() && $query->stmt->execute()){
    $res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
    foreach ($res as $row){
        $out = $row['name'];
    }
} else {
    $out = "Ошибка";
}
return $out;

И вызывать его так:
[[Snippet? &id=`[[+album]]`]]

А можно поставить Rowboat и вызывать так:
[[Rowboat?
   &table=`modx_gallery_albums`
   &tpl=`album-name`
   &where=`{"id":"[[+album]]"}`
]]

Чанк «album-name»:
[[+name]]
    Des
    Des
    03 июля 2016, 13:03
    0
    Ответил Вам, ниже комментарий.
    Des
    Des
    03 июля 2016, 13:02
    0
    Вы написали это для фронтэнда? Я наверное не уточнил вопрос.
    Я хочу чтобы именно в админке выводился не ID альбома, а его имя.
    Вот тут modx.pro/assets/images/tickets/9158/b24aebf564007b263232a4ad9072490bd3b71e32.png

    То есть, я думаю, что нужно писать свой рендер по типу «this.renderImage», который делает превьюшки изображений.
    Вот только я не знаю как его написать. Нашел где описаны имеющиеся уже в MIGX рендереры, тот же «this.renderImage»:
    /core/components/migx/configs/grid/grid.renderer.inc.php

    И получиться примерно должно вот так:
    [
    {«header»: «Альбом», «sortable»: «true», «dataIndex»: «album», «renderer»: "this.AlbumName"}
    ]
    только «this.AlbumName» надо написать, а там мешанина из js/php, я вообще без понятия как туда запрос к базе вкорячить…
      Павел Романов
      03 июля 2016, 15:53
      0
      Да, сорри, это я не понял, что речь про админку.

      Прежде чем писать свой, попробуйте сделать это MIGX-поле через конфигурацию.
      Только для вывода в таблице назовите поле не album, а как-нибудь иначе, например, albumname.
      У него в качестве ререндера выберите thisRenderChunk и в поле renderChunk template пропишите:
      [[Snippet? &id=`[[+album]]`]]
        Des
        Des
        03 июля 2016, 16:11
        0
        Не получается, мб я что-то делаю не так?
        Я указываю «renderer»: «this.RenderChunk»
        Следом написал «renderChunk template»: "[[Snippet? &id=`[[+album]]`]]"

        [
        {"header": "Альбом", "sortable": "false", "dataIndex": "albumname", "renderer": "this.RenderChunk", "renderChunk template": "[[Snippet? &id=`[[+album]]`]]"}
        ]

        Я тоже читал эту тему community.modx-cms.ru/blog/questions/199271.html, только опять же я наверное не понимаю, как именно правильно должен выглядеть код колонок моего rv параметра.
          Павел Романов
          03 июля 2016, 16:38
          0
          Я сейчас проверил — работает. Сделайте конфигурацию — таким образом Вы избегнете ошибок.
          Например, эта строка, как минимум, должна быть такой:
          {"header":"Альбом", "sortable":"false", "dataIndex":"albumname", "renderer": "this.renderChunk", "renderchunktpl":"[[Snippet? &id=`[[+album]]`]]"}
            Des
            Des
            03 июля 2016, 17:05
            0
            Сделал все точно как Вы пишете. Пустоту выдает :(

            Сниппет


            TV параметр


            Результат добавленного альбома
              Павел Романов
              03 июля 2016, 17:15
              0
              1. Если вывести на какой-нибудь странице:
              [[Snippet? &id=`1`]]
              Что-то выводит?

              2. И сделайте, все же, через конфигурацию.
                Des
                Des
                03 июля 2016, 17:55
                0
                Сделал через конфигурацию, раньше никогда так не делал, помогла эта тема modx.pro/help/8883/#comment-61366

                Спасибо Вам за помощь! Все работает!
                  Павел Романов
                  03 июля 2016, 18:04
                  0
                  Ну и славненько ).
                  Вообще, IMHO, если вывод чуть хитрее стандартного (несколько вкладок у формы, зависимые TV, запросы, подобные Вашему), лучше всегда конфигурации использовать — там, кстати, и возможностей больше.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      10