TV Список (одиночный выбор) ищу решение проблемы

Итак пилю свой фильтр основаный на вводе TV
Делаю вывод списка ресурсов у которого то или иное метро. Задача впринцыпе ясна в выпадающем списке выбираешь метро и выводится нужный список ресурсов. У меня все нормально выводится, в выпадающем списке на сайте и в админке правильные названия метро, но когда делаю вызов в карточке товара (в этом же каталоге), вместо названий метро выводятся цифры.

ниже приведу пример

Настройка TV поля
Тип ввода
Список (одиночный выбор)
Возможные значения
Автово==1||Василеостровская==2

Вывод в чанке фильтра
<label for="metro">Метро:
    <select name="metro" >
        <option value="0">Любое</option>
		<option value="1">Автово</option>
		<option value="2">Василеостровская</option>
	</select>
</label>

Вывод TV в карточке товара
[[+tv.metro]]

По идее можно было бы сделать
Настройка TV поля
Тип ввода
Список (одиночный выбор)
Возможные значения
Автово==Автово||Василеостровская==Василеостровская

Вывод в чанке фильтра
<label for="metro">Метро:
    <select name="metro" >
        <option value="0">Любое</option>
		<option value="Автово">Автово</option>
		<option value="Василеостровская">Василеостровская</option>
	</select>
</label>

И тогда бы все было хорошо (не судите строго я знаю что так нельзя). Но поле metro в базе имеет тип INT (число). Поэтому 0, 1 или 2.

Как мне сделать что бы в карточке товара писалось метро а не число?
Сергей
02 января 2017, 21:55
modx.pro
1
6 085
0

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

Іван Клімчук
03 января 2017, 10:47
+1
Статья на английском, дополнение тоже пока без перевода, но решает вашу проблему на 100%. modx.today/posts/2015/05/better-way-storing-tv-values
    Сергей
    04 января 2017, 21:02
    0
    компонент который ты предложил служит для работы с большим массивом данных в TV этим он удобен, согласен. Но никак не решает мою проблему! все так же появляются цифры (значения — value) вместо названий(((( может я что то не так делаю?
      Іван Клімчук
      04 января 2017, 21:22
      0
      Там в самом низу есть пример с Rowboat (но можно использвать и pdoResources, только указать правильный класс в параметрах, в документации есть). Через этот плагин ваши названия метро записываются через этот пагин, в tv вызываются (select) как в примерах. Следовательно затем их легко можно выбрать из таблицы этих значений, условия where правильно только написать. Если не хотите разбираться с этим компонентом, то можно написать свой сниппет, который из таблицы с TV возьмет поле, где указан ваш запрос с Метро1==1||Метро2==2 и распарсить его и выдать название по совпадению с цифрой, которая хранится в ресурсе.
        Сергей
        04 января 2017, 21:51
        0
        да я уже думал скриптом сделать замену, но это костыль. А хочется как правильно
    Кирилл
    31 августа 2017, 06:49
    0
    Если бы не база можно было бы просто не ставить индекс Автово||Василеостровская и так далее и не надо ничего дублировать а в твоем случае можно просто поставить модификатор [[+tv.metro:select=`1=Автово&2=Василеостровская`]]
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5