(РЕШЕНО) Вывод картинки, если логическое поле равно "истина"

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

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 8:49

Уважаемые форумчане нужна помощь!

Что имеем: Каталог с заведениями (нодами). У заведений есть характеристики, например такие как наличие Wi-Fi. Наличие определяется через логическое поле Есть/Нет.

Задача: Вывести вместо значения "да" изображение (значок Wi-Fi).

Решение:

Вот рабочий код, который заменит Ваше значение "Да" на картинку.

{print '';}
else {print '';}
?>

field_wi_fi - поле, значение которого вы хотите изменить на картинку. В моем случае это логическое поле.

1 - значение логического поля (истина)

/sites/all/themes/basic/images/wi-fi_logo.png - Фиксированный путь до картинки, которую нужно выводить

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 12 сентября 2012 в 9:45

А если if elseif и else - то даже и для трёх!!!

В шаблоне просто смотри значение логического поля и по нему уже выводи картинку.
Если картинку менять будешь редко-можешь не создавать для неё отдельное поле,а просто залить по FTP и в шаблоне захардкордить её урл.

Аватар пользователя Orion76 Orion76 12 сентября 2012 в 11:31

Помоему достаточно переделать вывод поля(убрать значение) с назначением элементу соответствующего класса(wifi-0, wifi-1)..
Если данные выводятся вьюсом - переписать значение поля с токеном..
Если это стандартный вывод ноды... тут надо подумать.. какой вариант оптимальнее..

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 11:37

"orion76" wrote:
с назначением элементу соответствующего класса(wifi-0, wifi-1)..

А как назначить класс значению, если это вывод через --node.tpl

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 11:41

Тему снова открываю, так как по указанному коду изображение вообще везде выводиться )) Где да и где нет и где вовсе ничего не указано

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 12:43

Кучу всего

Array ( [#theme] => field [#weight] => 7 [#title] => Wi-Fi [#access] => 1 [#label_display] => inline [#view_mode] => full [#language] => und [#field_name] => field_wi_fi [#field_type] => list_boolean [#field_translatable] => 0 [#entity_type] => node [#bundle] => place [#object] => stdClass Object ( [vid] => 2724 [uid] => 1 [title] => Екатеринбурга [log] => Created by FeedsNodeProcessor [status] => 1 [comment] => 0 [promote] => 0 [sticky] => 0 [nid] => 100210 [type] => place [language] => und [created] => 1347377840 [changed] => 1347433584 [tnid] => 0 [translate] => 0 [revision_timestamp] => 1347433584 [revision_uid] => 1 [body] => Array ( ) [field_catalog] => Array ( [und] => Array ( [0] => Array ( [tid] => 23 [taxonomy_term] => stdClass Object ( [tid] => 23 [vid] => 2 [name] => Планетарий [description] => [format] => filtered_html [weight] => 2 [vocabulary_machine_name] => catalog [rdf_mapping] => Array ( [rdftype] => Array ( [0] => skos:Concept ) [name] => Array ( [predicates] => Array ( [0] => rdfs:label [1] => skos:prefLabel ) ) [description] => Array ( [predicates] => Array ( [0] => skos:definition ) ) [vid] => Array ( [predicates] => Array ( [0] => skos:inScheme ) [type] => rel ) [parent] => Array ( [predicates] => Array ( [0] => skos:broader ) [type] => rel ) ) ) ) ) ) [field_photo] => Array ( [und] => Array ( [0] => Array ( [fid] => 27 [uid] => 1 [filename] => empty.gif [uri] => public://default_images/empty_0.gif [filemime] => image/gif [filesize] => 4676 [status] => 1 [timestamp] => 1346237417 [rdf_mapping] => Array ( ) [is_default] => 1 [alt] => [title] => ) ) ) [field_phone] => Array ( [und] => Array ( [0] => Array ( [value] => (343) 371-50-60 [format] => [safe_value] => (343) 371-50-60 ) ) ) [field_mode] => Array ( [und] => Array ( [0] => Array ( [value] => Вт - Сб с 11:00 до 17:00 (без обеда), Сб, Вс - выходной [format] => [safe_value] => Вт - Сб с 11:00 до 17:00 (без обеда), Сб, Вс - выходной ) ) ) [field_photo_gallery] => Array ( ) [field_map] => Array ( [und] => Array ( [0] => Array ( [coords] => {"center":[56.839038924932524,60.61339033874507],"zoom":13} [type] => yandex#map [placemarks] => [{"coords":[56.837982,60.59734],"params":{"color":"white","iconContent":"Екатеринбург","balloonContentBody":"Россия, Свердловская область","balloonContentHeader":"Екатеринбург"}}] [lines] => [polygons] => [routes] => ) ) ) [field_site] => Array ( ) [field_rating] => Array ( [und] => Array ( [0] => Array ( [user] => 0 [average] => 0 [count] => 0 ) ) ) [field_address] => Array ( [und] => Array ( [0] => Array ( [value] => г. Екатеринбург, ул. Розы Люксембург, 9 [format] => [safe_value] => г. Екатеринбург, ул. Розы Люксембург, 9 ) ) ) [field_district] => Array ( [und] => Array ( [0] => Array ( [tid] => 129 [taxonomy_term] => stdClass Object ( [tid] => 129 [vid] => 5 [name] => Центр [description] => [format] => filtered_html [weight] => 0 [vocabulary_machine_name] => district [rdf_mapping] => Array ( [rdftype] => Array ( [0] => skos:Concept ) [name] => Array ( [predicates] => Array ( [0] => rdfs:label [1] => skos:prefLabel ) ) [description] => Array ( [predicates] => Array ( [0] => skos:definition ) ) [vid] => Array ( [predicates] => Array ( [0] => skos:inScheme ) [type] => rel ) [parent] => Array ( [predicates] => Array ( [0] => skos:broader ) [type] => rel ) ) ) ) ) ) [field_id] => Array ( [und] => Array ( [0] => Array ( [value] => 100210 ) ) ) [field_wi_fi] => Array ( [und] => Array ( [0] => Array ( [value] => 1 ) ) ) [feed_nid] => 0 [rdf_mapping] => Array ( [rdftype] => Array ( [0] => sioc:Item [1] => foaf:Document ) [title] => Array ( [predicates] => Array ( [0] => dc:title ) ) [created] => Array ( [predicates] => Array ( [0] => dc:date [1] => dc:created ) [datatype] => xsd:dateTime [callback] => date_iso8601 ) [changed] => Array ( [predicates] => Array ( [0] => dc:modified ) [datatype] => xsd:dateTime [callback] => date_iso8601 ) [body] => Array ( [predicates] => Array ( [0] => content:encoded ) ) [uid] => Array ( [predicates] => Array ( [0] => sioc:has_creator ) [type] => rel ) [name] => Array ( [predicates] => Array ( [0] => foaf:name ) ) [comment_count] => Array ( [predicates] => Array ( [0] => sioc:num_replies ) [datatype] => xsd:integer ) [last_activity] => Array ( [predicates] => Array ( [0] => sioc:last_activity_date ) [datatype] => xsd:dateTime [callback] => date_iso8601 ) ) [name] => admin [picture] => 0 [data] => b:0; [entity_view_prepared] => 1 ) [#items] => Array ( [0] => Array ( [value] => 1 ) ) [#formatter] => list_key [0] => Array ( [#markup] => 1 ) )

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 13:00

Только разок выскакивала ошибка:

Notice: Undefined index: field_wi_fi в функции include() (строка 35 в файле /sites/all/themes/basic/templates/node--place.tpl.php).

Как раз строка 35 это начинается этот код. Но вроде исчезла.

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 13:00

На странице с анонсами также ошибка

Notice: Undefined index: field_wi_fi в функции include() (строка 136 в файле /sites/all/themes/basic/templates/node--place.tpl.php).

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 13:10

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

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 13:17

{print '';}
else {print '';}
?>

Но все равно

Notice: Undefined index: field_wi_fi в функции include() (строка 138 в файле /sites/all/themes/basic/templates/node--place.tpl.php).

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 14:35

"ХулиGUN" wrote:
Добавьте в настройках поля значение для пустого поля

Да но для логического поля это невозможно

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 14:40

Когда значение не выбрано вот и выдает ошибку. По умолчанию для логического поля, если не ставить галочку на значении 1, то автоматом это будет означать значение 2. Ошибка потому, что поле было создано уже после создания нод. Вообщем все работает.

Аватар пользователя WebFamily WebFamily 12 сентября 2012 в 15:26

Получается через print_r нужно будет смотреть для каждого поля значения? И какие значения будут меняться?

<?php if ($content['field_wi_fi'][0]['#markup']=='1') Будет меняться ['#markup']=='?