Вопрос по pdoResources

решил все getproducts переписать на pdoresources, и так возник маленький вопрос,

[[!pdoResources?
&parents=`2,21`
&depth=`3`
&includeTVs=`currency,id,main_page_show,image,square,class,area,price,square_from,square_to`
&where=`{«main_page_show»:1}`
&tpl=`catalogItem`
&limit=`12`
&showLog=`0`
]]

есть доп поля у которых вывод списком(одиночный) он их отображает как число скажем в доп поле руб==1|| он вместо руб. выводит 1. Ну итдю Что надо прописать чтобы она адекватно выводилась? а то методом тыка не получилось)
AFANASIY
31 марта 2015, 08:43
modx.pro
1 278
0

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

Василий Наумкин
31 марта 2015, 11:52
0
Нужно указать, какие ТВ дополнительно обрабатывать, согласно их настроек:
&processTVs=`square_from,square_to`

или можно обрабатывать все подключенные ТВ.
&processTVs=`1`

Документация
    AFANASIY
    31 марта 2015, 12:00
    0
    пробовал уже так, безрезультатно
      Василий Наумкин
      31 марта 2015, 12:37
      0
      Эм… ну ТВ типа List нужно для того, чтобы ты вводил какие-то данные удобно. Если там указано
      Описание значения1==1||Описание значения2==2||Описание значения3==3
      То на экране у юзера при выборе будет «Описание значения1» и т.п., а вот в базе будут уже цифры. В этом и смысл — ввести цифры не ручками, а выбрать из готового списка.

      Если же тебе нужно хранить в базе именно текст, то ТВ должен быть настроен так:
      Значение1||Значение2||Значение3

      Я даже установил getResources и проверил — он точно так же выводит циферки, а не подписи к ним.
        AFANASIY
        31 марта 2015, 12:59
        0
        [[!pdoResources?
                                        &parents=`2,21`
                                        &depth=`3`
                                        &includeTVs=`currency,id,metro,main_page_show,image,square,class,area,price,square_from,square_to` 
                                        &processTVs=`currency,metro,area`
                                        &where=`{"main_page_show":1}`
                                        &tpl=`catalogItem`
                                        &limit=`12`
                                        &showLog=`0`
                                        ]]
        код чанка
        [[if? 
                        &subject=`[[+tv.price]]`
                        &operator=`!=`
                        &operand=`0`
                        &then=`<tr><td>Цена от </td><td>[[+tv.price]] [[+tv.currency]]</td></tr>`
                        &else=``
                    ]]
        выводится так «Цена от 30000 1» должно «Цена от 30000 руб»
          Василий Наумкин
          31 марта 2015, 13:06
          0
          Если у ТВ currency настроен как
          Руб==1||Eur==2||USD==3
          то ты и будешь получать цифры, потому что именно они попадают в базу данных при сохранении товара.

          Должно быть
          Руб||EUR||USD
          Тогда при сохранении в БД попадёт текст. А потом он же выведется сниппетом.

          Причем, если ты изменишь настройки ТВ, то потом нужно пройти по всем товарам и пересохранить значения, чтобы в БД прописалось новое текстовое значение.

          Ссылка на документацию:
          Often it's nice to have a more readable label. You can display something nice and still store a different value using the double-equals and double-pipes format used by checkboxes:
            AFANASIY
            31 марта 2015, 13:36
            0
            да, всего лишь надо было пересохранить цены, как это сделать автоматом? просто у меня их 2-3т. товаров)
              Василий Наумкин
              31 марта 2015, 13:56
              0
              Я бы просто SQL запрос написал и прогнал по таблице ТВшек.
                AFANASIY
                31 марта 2015, 17:51
                0
                modx_site_tmplvars? через update?
    Дмитрий Кондаков
    31 марта 2015, 12:33
    1
    +1
    Создай сниппет tvValue:
    <?php
    $tv = $modx->getObject('modTemplateVar', array('name' => $name));
    $elements = $tv->get('elements');
    $element = explode('||', $elements);
    $els = array();
    foreach($element as $e) {
      list($elName,$elId) = explode("==", $e);
      $els[$elId] = $elName;
    }
    echo $els[$input];
    И в чанке выводи tv так:
    [[+square_from:tvValue]]
      AFANASIY
      31 марта 2015, 13:01
      0
      почему то он железно ставит на всех последний выбор ито если в возможных значениях
      руб||$||€

      если так
      Выберите округ==0||
      ЦАО==1||
      ВАО==2||

      то вообще не работает
        Дмитрий Кондаков
        31 марта 2015, 13:04
        0
        Выберите округ==0||
        ЦАО==1||
        ВАО==2||
        попробуй в одну строку сделать
          AFANASIY
          31 марта 2015, 13:37
          0
          вы не поняли, когда в одну строку руб||$||€ он везде ставит значение €
            Дмитрий Кондаков
            31 марта 2015, 13:40
            0
            руб||$||€ так не будет работать, сниппет только для варианта «Описание значения1==1||Описание значения2»
              AFANASIY
              31 марта 2015, 17:23
              0
              так кстати тоже не работает)
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      14