Уважаемые форумчане нужна помощь!
Что имеем: Каталог с заведениями (нодами). У заведений есть характеристики, например такие как наличие Wi-Fi. Наличие определяется через логическое поле Есть/Нет.
Задача: Вывести вместо значения "да" изображение (значок Wi-Fi).
Решение:
Вот рабочий код, который заменит Ваше значение "Да" на картинку.
{print '';}
else {print '';}
?>
field_wi_fi - поле, значение которого вы хотите изменить на картинку. В моем случае это логическое поле.
1 - значение логического поля (истина)
/sites/all/themes/basic/images/wi-fi_logo.png - Фиксированный путь до картинки, которую нужно выводить
Комментарии
Вы, наверное, имели ввиду в случае создания двух полей?
а rules не подойдет?
Честно мало пользовался, даже не представляю, возможно )
А если if elseif и else - то даже и для трёх!!!
В шаблоне просто смотри значение логического поля и по нему уже выводи картинку.
Если картинку менять будешь редко-можешь не создавать для неё отдельное поле,а просто залить по FTP и в шаблоне захардкордить её урл.
Спасибо, буду копать!)) Если получиться в шапке оставлю решение)
Спасибо! Все работает! В теме пишу РЕШЕНО!
Помоему достаточно переделать вывод поля(убрать значение) с назначением элементу соответствующего класса(wifi-0, wifi-1)..
Если данные выводятся вьюсом - переписать значение поля с токеном..
Если это стандартный вывод ноды... тут надо подумать.. какой вариант оптимальнее..
А как назначить класс значению, если это вывод через --node.tpl
Тему снова открываю, так как по указанному коду изображение вообще везде выводиться )) Где да и где нет и где вовсе ничего не указано
else{print '';}
Что тут указать, чтобы ничего не выводилось, если значение 2 (Ложь)
Плохо понимаю PHP, не получается собрать весь код ) Может кто покажет полный код.
Не понимаю что показать то нужно
{print '';}
else {print '';}
?>
Что не так? Наверное все не так!))
На всех страницах выходит и картинка и значение 1
Кучу всего
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 ) )
Что бы я без тебя делал? )) Огромное спасибо. Надо PHP учить.
Только разок выскакивала ошибка:
Notice: Undefined index: field_wi_fi в функции include() (строка 35 в файле /sites/all/themes/basic/templates/node--place.tpl.php).
Как раз строка 35 это начинается этот код. Но вроде исчезла.
На странице с анонсами также ошибка
Notice: Undefined index: field_wi_fi в функции include() (строка 136 в файле /sites/all/themes/basic/templates/node--place.tpl.php).
Вообщем ошибка вылезла из-за того, что поле было скрыто в настройках. Все спасибо. Надеюсь больше ошибок не будет)) Тема РЕШЕНА.
Когда значение не выбрано вот и выдает ошибку.
{print '';}
else {print '';}
?>
Но все равно
Notice: Undefined index: field_wi_fi в функции include() (строка 138 в файле /sites/all/themes/basic/templates/node--place.tpl.php).
{print '';}
else {print '';}
?>
Как-то так?
Спасибо за подсказки
Да но для логического поля это невозможно
Когда значение не выбрано вот и выдает ошибку. По умолчанию для логического поля, если не ставить галочку на значении 1, то автоматом это будет означать значение 2. Ошибка потому, что поле было создано уже после создания нод. Вообщем все работает.
Получается через print_r нужно будет смотреть для каждого поля значения? И какие значения будут меняться?
<?php if ($content['field_wi_fi'][0]['#markup']=='1') Будет меняться ['#markup']=='?
Кстати заметил косяк не для каждого поля print_r работает, видимо надо ставить devel.
Для каждого поля значения разные? Есть какой-нибудь материал конкретно об этом где почитать?
<?php if ($content['field_name']['#items']['0']['value']=='1') {
print '<div class="special_div">special div</div>';
} ?>