Вывод полей views php

Вывод полей через Views PHP

Привет!
Есть одна специфическая задача, для которой использую модуль Views PHP. Конечно, можно было использовать темизацию через *.tpl.php, но почему-то Views PHP уже прижился.

Выдергиваю поля через него и вывожу их в поле примерно так:

Таким же образом нужно вывести и превьюшки, полученные с помощью модуля Embed Media Field.

Никак не могу выдернуть из них URL.
field_video_embed;?> модуль выводит тупо URL источника.

Может там массив какой-то? Как узнать что в массиве содержится?

Комментарии

field_video_embed);?>
тоже выводит тот же URL к видео, а не к превьюшке

Наверное, все же проблема в самом модуле Views PHP
http://d.pr/kx8w

Из переменной $row он тоже выдергивает не то, что требуется (задан вывод именно URL, а выводит ID). Напомню, Views PHP — аналог Views Custom Field, позволяет темизировать вывод полей вьюшки.
34982 [type] => post [field_video_embed] => [geshifilter-php] => )?> Но картинку я выдернул через ID, а вот как выдернуть превьюшку видео не знаю[/geshifilter-php]

Вытащил URL при помощи быдло-кодинга Метод жесть, спасайте!

field_video_embed;
print ($video_link);
$video_link= str_replace(«http://vimeo.com/», «», $video_link);
print (‘
‘.$video_link);
$hash = unserialize(file_get_contents(«http://vimeo.com/api/v2/video/$video_link.php»));echo $hash[0][‘thumbnail_medium’];
?>

Источник

[РЕШЕНО] вывод полей Views PHP

вывожу заголовок так, возвращает значение, всё нормально.

вывожу body или cck field таким же образом, возвращает id ноды.

нифига не соображу как вывести значение поля

Комментарии

На сколько помню, $row — это объект, являющийся результатом SQL запроса views, т.е. $row = db_fetch_object($result);, какие поля у него бывают смотрите в самом SQL запросе.

print $data->ima pola pormotri v tokenah

$view: The view object.
$handler: The handler object.
$static: A variable that can be used to store reusable data per row.
$row: Contains the retrieved record from the database (e.g. $data->nid).
$row->field_video_code: Content: video_code
$row->php: Global: PHP
$row->title: Content: Title
$row->body: Content: Body
$data: Contains the retrieved record from the database (e.g. $data->nid).
$value: Value of this field.

вот эти переменные выдаёт вьюха, но body и field_video_code которые мне нужны, возвращают айди ноды.

я же написал, как выводить — print $data->field_name

так вообще ничего не возвращает

Тут же написано, что $data содержит результат запроса, соответственно, как у него называются поля можно посмотреть в самом запросе, скажем если запрос SELECT node_nid, node_field_video_code. (к примеру) то Вам понадобится $data->node_field_video_code, смотрите какой запрос строит Ваша вьюха.

SELECT node . nid AS nid , node . title AS node_title , node . created AS node_created , ‘node’ AS field_data_field_video_code_node_entity_type , ‘node’ AS field_data_body_node_entity_type
FROM
< node >node
WHERE ( ( ( node . status = ‘1’ ) AND ( node . type IN ( ‘video’ ) ) AND ( node . language IN ( ‘en’ ) ) ) )
ORDER BY node_created DESC

Читайте также:  Set ключей map java

print $data->field_data_field_video_code_node_entity_type; возвращает «node»

т.е. запрос возвращает индекс, заголовок, дату, типы сущностей и все, добавьте туда необходимые поля — т.е. добавляете сами поля к вьюхе и исключаете их из вывода, в этом случае они будут включены в запрос, но не учтутся при рендеринге, что собственно и нужно.

поле дополнительное одно и выведено, и исключено из вывода. если вывожу через обычные поля (без PHP) с использованием тегов подстановки[field_video_code] всё отображается

такое возможно, если данные поля тянутся дополнительным select запросом по nid(обычно не на прямую, а чем-то вроде node_load и прочим), проверить это можно либо логами devel(можно увидеть сам запрос) или в исходниках вьювс(можно найти функцию, вызывающую этот запрос)

это поле должно быть добавлено во вьюхе и расположено выше пхп-поля, тогда будет выводить. Ставьте девел и dprint_r($data)

Пытался таким способом вывести [path]. Посмотрел через dprint_r($data) — нету его значения там. В итоге, нашел способ на друпал.орг через функцию:

В этом случае нет необходимости выводить поле [path] перед полем php.

Источник

Вывод значения поля в теме views

Темизировал вывод views по полям.
Настроил вывод полей в это представление.
Одно из полей необходимо математически посчитать.

Надо получить значение 55.55
Как получить значение переменной или поля field_cena_usd?

Лучший ответ

Итог: в настройках поля поставил галочки «Убрать HTML тэги» и «Убрать пробелы».
В коде страницы вывелось < div >55.55< / div >
Далее использовал функцию trim();

var_dump($field_cena_usd);
Показал String(5)

Далее без преобразования во Float в формуле подсчета все посчиталось.

Однако, это не феншуй.
Разве нельзя одним запросом drupal получить значение этого поля?

Комментарии

выводит: string(38) «55.55»
Надо получить значение 55.55

$field_cena_usd = (float) $field_cena_usd ; // #1
$field_cena_usd = \ floatval ( $field_cena_usd ); // $2
\ settype ( $field_cena_usd , ‘float’ ); // #3
?>

#1 #2 и #3 Выдают значение 0

Это происходит потому что в переменную попадает массив. String(38) вместо String(5). Ведь в значении 55.55 имеем 5 знаков, а не 38.
Если во views в настройках вывода поля убрать вывод тегов и пробелов и т.д., то получается String(16). Визуально views выводит само значение 55.55, но по факту там есть еще что-то. Из-за это что-то не работают (int), (float) — выводят просто 0.

Вот и вопрос, как вытащить само значение 55.55, что-бы var_dump($field_cena_usd); показал String(5)? Тогда значение можно будет перевести во Float и посчитать.

Итог: в настройках поля поставил галочки «Убрать HTML тэги» и «Убрать пробелы».
В коде страницы вывелось < div >55.55< / div >
Далее использовал функцию trim();

var_dump($field_cena_usd);
Показал String(5)

Далее без преобразования во Float в формуле подсчета все посчиталось.

Однако, это не феншуй.
Разве нельзя одним запросом drupal получить значение этого поля?

$val = ( float ) trim ( strip_tags ( $field_cena_usd ) ) ;
А вообще посмотрите все свойства объекта field, там должен быть raw из базы

Читайте также:  Java литерал что это

Источник

Как во вьюхе вывести значение одного из полей — только в одном количестве

Добрый вечер, у меня один нюанс, вьюха выводит сеткой товары, которые состоят из изображения, цены и итоговой цены за все
получается так, что цена итоговая — для всех одинакова
Как сделать, чтобы он вывел итоговую цену только в одном количестве, только первое поле так сказать.

в футер и подвал это поле нельзя, т.к. у меня во вьюхе ещё группировка по таксономии в настройках идёт, и если я это поле просто в подвал засуну, то оно покажется, но только для одного значения из группы

на скрине, я хочу убрать то что чёрным обведено

Комментарии

Вооот!вы правильлно меня поняли, я тоже думал, что по идее это поле просто нужно через PHP выводить, с проверкой, какое по счёту это поле, если первое то выводи, если не первое то тишина

Я сам честно говоря не знал как объяснить, но если вкратце, то просто одной из полей вьюхи, выводить только первое по счёту

Правда, это моё поле ИТОГО — это поле типа ДРУГАЯ ВЬЮХА, т.е. вьюха в вьюхе
не знаю, прокатит ли тут PHP

в общем буду очень признателен за код

Переопределите соответствующий файл *.tpl.php, который отвечает за циклический вывод элементов вьюхи.
Например, views-view-table.tpl.php, если у Вас views выводится в виде таблицы.

И там уже сделайте проверку.
Если выводимый row — первый, то у поля «итоговая цена» оставлять его значение, иначе его делать пустым.

Переопределите соответствующий файл *.tpl.php, который отвечает за циклический вывод элементов вьюхи.
Например, views-view-table.tpl.php, если у Вас views выводится в виде таблицы.

И там уже сделайте проверку.
Если выводимый row — первый, то у поля «итоговая цена» оставлять его значение, иначе его делать пустым.

Как я вас понимаю, то у моей вьюхи есть как бы собственная PHP которая отвечает за вывод информации
её имя зависит от машинное имени, в моём случае это views-view-field—stroka-zakazov.tpl.php
эту строку взял из вьюхи OTHER > THEME

как я понял если я возьму оригинальный файл вывода поля вьюхи views-view-field.tpl.php

/**
* @file
* This template is used to print a single field in a view.
*
* It is not actually used in default Views, as this is registered as a theme
* function which has better performance. For single overrides, the template is
* perfectly okay.
*
* Variables available:
* — $view: The view object
* — $field: The field handler object that can process the input
* — $row: The raw SQL result that can be used
* — $output: The processed output that will normally be used.
*
* When fetching output from the $row, this construct should be used:
* $data = $row->field_alias>
*
* The above will guarantee that you’ll always get the correct data,
* regardless of any changes in the aliasing that might happen if
* the view is modified.
*/
?>

Читайте также:  Html таблица всех синих цветов

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

а дальше, его уже править, и изменять логику
верно понимаю вот эту часть?

Берете нужный файл из views/theme, копируете его в подпапку templates папки своей темы, при необходимости этот файл переименовываете (например, если нужно темизировать таким образом не все вьюхи, а только определенную).
Далее этот файл правите, как Вам нужно.
Очищаете кэш.
И, по идее, всё.

вопрос только теперь такой, какой код должен быть в этой новой PHP-шке. который проверил бы что, если мол поле под именем ITOGOVAYA_CENA — первое, то выводи, если не первое то вообще пропускай вывод

нашёл что то подобное делают
https://drupal.org/node/1024158#comment-3995862
но плохо допирается, в PHP плохо соображаю, и API Drupal не ахти

Я бы это делал не на уровне темизации одного поля, а на уровне темизации цикла выводимых строк (товаров).
Либо на уровне темизации одного товара — только я вот не помню, можно ли там определить, какая по счету строка выводится .

В моём случае просто вот это поле ИТОГОВАЯ ЦЕНА это поле другой вьюхи, которая показывает итоговую цену в зависимости от того какой ей контекстный фильтр послали, т.е. на той стороне как мне кажется смысла нет править, т.к. даже пускай если она одно пошлёт значение обратно, эта, основная вьюха, это одно значение и расплодит на все футболки

получается мне нужно у этой вьюхи поле итоговая цена — заставить вывести только один раз, только первый раз

а как добраться до уровня темизации одного поля, это тоже какой то файл с ещё более длинным именем, или это в этом же файле всё творится

вы меня простите я дуб дубом в этом, пока лишь так. прикладник в друпале

ААА, разобрался как дойти до уровня темизации поля, как же теперь сделать, чтобы в нём выводить только первое значение :/

Этот файл будет выполняться при каждом выводе поля.

Просто ставится проверка на то, что в данном случае запись — первая.

Этот файл будет выполняться при каждом выводе поля.

Просто ставится проверка на то, что в данном случае запись — первая.

УГУ! Только что из себя это проверка представляет, какой код у неё
я уже чувствую что совсем рядом

Андрей, было бы полезно узнать как решили проблему. Аналогичная ситуация, только поле самое последнее надо выводить

Источник

Оцените статью