По вашему коду оно в другой ветке цикла, выводится по признаку самого названия поля "Валюта", о том есть цена или нет ее, ему уже неизвестно. Поэтому создается доп. переменная, которая будет хранить это значение (да или нет).
Насчет if($extraField->name == "Цена" понятно что нехорошо, но другого выхода нет - это раз. Поле никто менять не будет - это два.
Спасибо, r3al, но валюта выводится все равно...
И вроде как без переменных действительно не обойтись.
Потому как 2-е условие не может попасть под первый цикл. Наверное...
Да, код fedimen работает.
Остался вопрос, как добавить в него вывод "срок аренды" по такому же типу, чтобы Если цена есть выводилось Цена 130 $ в месяц, если цены нет, то ничего не выводилось.
Так ошибку выдает
<?php $valuta = false;foreach ($this->item->extra_fields as $key=>$extraField): ?> <?php if($extraField->value): ?> <?php if($extraField->name == "Цена"):$valuta = true; ?> <span class="itemExtraprice"><?php echo $extraField->name; ?>:</span> <span class="itemExtrapricevalue"><?php echo $extraField->value; ?></span> <?php elseif($extraField->name == "Валюта" && $valuta): ?> <span class="itemExtrapricevalue"><?php echo $extraField->value; ?></span><?php elseif($extraField->name == "Срок аренды" && $valuta): ?> <span class="itemExtrapricevalue"><?php echo $extraField->value; ?></span> <?php endif; ?> <?php endif; ?> <?php endif; ?> <?php endforeach; ?>
Parse error: syntax error, unexpected T_ENDIF in
Теперь в другом запутался.
Ненужные поля я выдрал из списка.
Теперь мне нужно, чтобы эти поля отображались в другом месте.
Для этого я использую такую конструкцию:
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?> <?php if($extraField->value): ?> <?php if($extraField->name == "Цена"): ?> <span class="itemExtraprice"><?php echo $extraField->name; ?>:</span> <span class="itemExtrapricevalue"><?php echo $extraField->value; ?></span> <?php elseif($extraField->name == "Валюта"): ?> <span class="itemExtrapricevalue"><?php echo $extraField->value; ?></span> <?php endif; ?> <?php endif; ?> <?php endforeach; ?>
Все чудесно, кроме одного - если цена не вбита, отображается просто знак валюты...
Не могу понять, как его запретить....
Точно, спасибо большое.
С ценой разобрался.
Теперь вопрос по чистому коду, так сказать...
Мне еще надо таким же оразом исключить поле "Валюта"
Сдела я это так
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?> <?php if($extraField->value): ?> <?php if($extraField->name != "Цена"): ?> <?php if($extraField->name != "Валюта"): ?> <li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>"> <span class="itemExtraFieldsLabel"><?php echo $extraField->name; ?>:</span> <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span> </li> <?php endif; ?> <?php endif; ?> <?php endif; ?> <?php endforeach; ?> </ul>
Но мне кажется это как-то некрасиво...
Пробовал так
<?php if($extraField->name != "Цена" or $extraField->name != "Валюта"): ?>
Не сработало...
Или первый вариант допустим?
Все пардон... Все нормально работает.
То есть работает условие, и текст "Есть контакт" появляется....
А как теперь не выводить цену - вот пока не понял...
Все, сделал от обратного
Если поле не Цена - печатаем )))
Спасибо, но не работает )))
Да как по мне, то этот посещенный див сильно портит внешний вид страницы...
Но заказчик хочет, хоть ты тресни и все....
Спасибо за содействие, но мне честно говоря никак не доходит, как это реализовать на моем примере.
Сам алгоритм понятен, а что куда пихать не очень.
Вот есть файл шаблона
http://cl.ly/3B1A0n1t2V0T1S3l0T1r
Есть еще css, указанный выше.
Все.
Что куда прописывать?
Без явы не обойтись?
Я с ней как бы вообще мало знаком...
И если это не так уж страшно, не могли бы накидать пример использования?