[РЕШЕНО] Views: преобразовать галочку в текст в выдаче

Главные вкладки

Аватар пользователя Technician Technician 23 мая 2012 в 17:23

Надо сделать, чтобы если в материале поставлена галочка "Распродажа", то текст "Распродажа!" добавлялся бы к цене товара. Хотел сделать это через перезапись результатов вывода, но непонятно, как преобразовать галочку в текст. Т.е. если значение галочки = TRUE, то текст выводим, иначе текст не выводим.

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 23 мая 2012 в 17:36

Попробовать использовать вьюсовскую лабуду типа "Заменять выводимое поле значением"
Или через темизацию шаблона views. В данном случае достаточно темизировать всего одно поле.

Аватар пользователя Technician Technician 23 мая 2012 в 17:44

"Chyvakoff" wrote:
Попробовать использовать вьюсовскую лабуду типа "Заменять выводимое поле значением"

Вот про это я и пишу. Как в этой лабуде использовать условия?

А темизация будет заключаться в том, что слово "распродажа" будем выводить во все строки, но показывать только на тех материалах, где стоит галочка?

Аватар пользователя Technician Technician 23 мая 2012 в 18:06

Chyvakoff, я почитал статью и понял, что про темизацию написал неправильно. Вот это:

"Technician" wrote:
А темизация будет заключаться в том, что слово "распродажа" будем выводить во все строки, но показывать только на тех материалах, где стоит галочка?

речь об управлении отображением на основе стилей. Совсем неправильный способ в данном случае. В статье же по вашей ссылке - правильная темизация Вьюса. Там можно что угодно с полями сделать (т.к. чистый PHP). Но это все-таки не очень удобно, т.к.:
1. Темизация будет храниться в отдельном файле
2. Темизировать надо все представление целиком. Т.е. потом, чтобы столбец в выдачу добавить, придется опять в этот файл залезать.

Я тут нашел модуль http://drupal.org/project/views_php]Views PHP">Views">http://drupal.org/project/views_php]Views PHP. По идее, он позволит использовать PHP как раз в поле "Заменять выводимое поле значением". Сейчас буду пробовать.

Аватар пользователя alex_shut alex_shut 23 мая 2012 в 19:04

а разве не будет возврат "фалсе" если галка не стоит? Тогда по идее просто не выводит ничего.
а когда галка стоит - выведет то что напишешь.

Аватар пользователя Technician Technician 23 мая 2012 в 19:13

alex_shut, если я вывожу значение поля, выдает "Да" или "Нет". Если заполнить "Заменять выводимое поле значением", то будет всегда выводить введенный текст (или результат шаблона). Но так как в шаблоне я не могу использовать условия, то ничего из этого не выходит.

Аватар пользователя Айдар Айдар 23 мая 2012 в 22:06

Я тоже пытался встроенными средствами вывести при условии одного из значений поля с булевым значением.

В итоге (не помню как - давно было) обошелся псевдо-классами :before/:after - там классы разные вроде должны быть в зависимости от значения.

Аватар пользователя Technician Technician 23 мая 2012 в 23:27

Я в итоге решил проблему через http://drupal.org/project/http://drupal.org/project/views_php]Views PHP">Views">http://drupal.org/project/http://drupal.org/project/views_php]Views PHP. Только потратил много лишнего времени, пытаясь понять принцип работы. Я ожидал, что код на PHP можно будет писать прямо туда, куда пишется замещающий основное значение текст на HTML. Но оказалось, что необходимо добавлять отдельное поле с названием "Глобальный: PHP" и уже в его свойствах можно использовать код. Теперь зато удобно, можно любое поле подправить, изменив выдачу как угодно на основании любого из остальных полей и все это через веб-интерфейс.

Аватар пользователя Chyvakoff Chyvakoff 24 мая 2012 в 9:07

"Technician" wrote:
1. Темизация будет храниться в отдельном файле
2. Темизировать надо все представление целиком. Т.е. потом, чтобы столбец в выдачу добавить, придется опять в этот файл залезать.

1 Это удобно.
2 Можно отдельные поля.Там же много шаблонов..есть для всего вьюса и для каждого поля в отдельности.
"Technician" wrote:
Views PHP

Установите ещё 10 расширений вьюса и думайте откуда такая нагрузка на сайт..
"Technician" wrote:
Но оказалось, что необходимо добавлять отдельное поле с названием "Глобальный: PHP"

Аватар пользователя Technician Technician 24 мая 2012 в 14:53

Chyvakoff, спасибо за инфу, почерпнул для себя полезные вещи.

"Chyvakoff" wrote:
Установите ещё 10 расширений вьюса и думайте откуда такая нагрузка на сайт..

Но что касается нагрузки, то еще неизвестно, где она будет выше - при использовании шаблона из файла или из БД.

Аватар пользователя Chyvakoff Chyvakoff 24 мая 2012 в 16:38

шаблон-это 1 файл и несколько строчек кода.
А модуль-это несколько файлов,множество функция,апишек,проверок,хуков и тд и тп.

когда сайт будет долго грузиться-тогда и будешь думать о нагрузке))а так особо не заморачивайся..

Аватар пользователя Technician Technician 24 мая 2012 в 16:59

"Chyvakoff" wrote:
шаблон-это 1 файл и несколько строчек кода.
А модуль-это несколько файлов,множество функция,апишек,проверок,хуков и тд и тп.

Так для обработки шаблона из файла точно так же подтянутся множество функций, апишек, проверок и тд и тп. Единственное отличие - они будут задействованы не из дополнительного модуля, а из самого Вьюс. Но по сути - это будут те же самые несколько дополнительных файлов. А когда часто используемые файлы кэшируются в памяти (а это практически всегда) - разница будет минимальной (если вообще будет).

Аватар пользователя Chyvakoff Chyvakoff 25 мая 2012 в 9:35

просто сделай вьюху как ты сделал и замерь время её выполнения.
А потом сделай такую же,только без доп модулей,а одним шаблоном,в котором будет 1 строка(не множество функций, апишек, проверок и тд и тп)

if($output=='true')echo 'Распродажа';

И узнаешь прирост скорости.