TV Список (одиночный выбор) ищу решение проблемы
Итак пилю свой фильтр основаный на вводе TV
Делаю вывод списка ресурсов у которого то или иное метро. Задача впринцыпе ясна в выпадающем списке выбираешь метро и выводится нужный список ресурсов. У меня все нормально выводится, в выпадающем списке на сайте и в админке правильные названия метро, но когда делаю вызов в карточке товара (в этом же каталоге), вместо названий метро выводятся цифры.
ниже приведу пример
Настройка TV поля
Тип ввода
Список (одиночный выбор)
Возможные значения
Автово==1||Василеостровская==2
Вывод в чанке фильтра
Вывод TV в карточке товара
[[+tv.metro]]
По идее можно было бы сделать
Настройка TV поля
Тип ввода
Список (одиночный выбор)
Возможные значения
Автово==Автово||Василеостровская==Василеостровская
Вывод в чанке фильтра
И тогда бы все было хорошо (не судите строго я знаю что так нельзя). Но поле metro в базе имеет тип INT (число). Поэтому 0, 1 или 2.
Как мне сделать что бы в карточке товара писалось метро а не число?
Делаю вывод списка ресурсов у которого то или иное метро. Задача впринцыпе ясна в выпадающем списке выбираешь метро и выводится нужный список ресурсов. У меня все нормально выводится, в выпадающем списке на сайте и в админке правильные названия метро, но когда делаю вызов в карточке товара (в этом же каталоге), вместо названий метро выводятся цифры.
ниже приведу пример
Настройка 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]]
По идее можно было бы сделать
Тип ввода
Список (одиночный выбор)
Возможные значения
Автово==Автово||Василеостровская==Василеостровская
Вывод в чанке фильтра
<label for="metro">Метро:
<select name="metro" >
<option value="0">Любое</option>
<option value="Автово">Автово</option>
<option value="Василеостровская">Василеостровская</option>
</select>
</label>
И тогда бы все было хорошо (не судите строго я знаю что так нельзя). Но поле metro в базе имеет тип INT (число). Поэтому 0, 1 или 2.
Как мне сделать что бы в карточке товара писалось метро а не число?
Комментарии: 5
Статья на английском, дополнение тоже пока без перевода, но решает вашу проблему на 100%. modx.today/posts/2015/05/better-way-storing-tv-values
компонент который ты предложил служит для работы с большим массивом данных в TV этим он удобен, согласен. Но никак не решает мою проблему! все так же появляются цифры (значения — value) вместо названий(((( может я что то не так делаю?
Там в самом низу есть пример с Rowboat (но можно использвать и pdoResources, только указать правильный класс в параметрах, в документации есть). Через этот плагин ваши названия метро записываются через этот пагин, в tv вызываются (select) как в примерах. Следовательно затем их легко можно выбрать из таблицы этих значений, условия where правильно только написать. Если не хотите разбираться с этим компонентом, то можно написать свой сниппет, который из таблицы с TV возьмет поле, где указан ваш запрос с Метро1==1||Метро2==2 и распарсить его и выдать название по совпадению с цифрой, которая хранится в ресурсе.
да я уже думал скриптом сделать замену, но это костыль. А хочется как правильно
Если бы не база можно было бы просто не ставить индекс Автово||Василеостровская и так далее и не надо ничего дублировать а в твоем случае можно просто поставить модификатор [[+tv.metro:select=`1=Автово&2=Василеостровская`]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.