Помогите с php условием

12
Romaldo
На сайте с 10.02.2008
Offline
185
963

Если такая конструкция, которая выводит дополнительные поля компонента k2

 <div class="itemExtraFields">

<h3><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></h3>
<ul>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value): ?>

<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 endforeach; ?>
</ul>
<div class="clr"></div>
</div>

Среди этих полей есть поле именем "Цена" - мне его не нужно выводить.

В виду отсутствия знаний в синтаксисе, не могу правильно подставить условие...

Я так вставляю

<?php if($extraField->name == "Цена"): ?>

<strong> есть контакт </strong>
<?php endif; ?>

Но это не работает...

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

Кодировка сайта и кодировка кода какой?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Romaldo
На сайте с 10.02.2008
Offline
185
#2

Все пардон... Все нормально работает.

То есть работает условие, и текст "Есть контакт" появляется....

А как теперь не выводить цену - вот пока не понял...

Все, сделал от обратного

Если поле не Цена - печатаем )))

B
На сайте с 09.02.2009
Offline
70
#3

Может как-то так попробовать:

<?php if($extraField->name == "Цена"){

echo "<strong> есть контакт </strong>";}

Romaldo
На сайте с 10.02.2008
Offline
185
#4

С ценой разобрался.

Теперь вопрос по чистому коду, так сказать...

Мне еще надо таким же оразом исключить поле "Валюта"

Сдела я это так

 <?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 != "Валюта"): ?>

Не сработало...

Или первый вариант допустим?

M
На сайте с 08.10.2010
Offline
71
#5

<?php if($extraField->name != "Цена" AND $extraField->name != "Валюта"): ?>

т.е Если поле не цена И поле не валюта выводим..

А у вас или.. т.е Если поле не цена ИЛИ поле не валюта. Одно условие всегда сработает.. Если обрабатываем цену, то сработает условие Не валюта и наоборот

Romaldo
На сайте с 10.02.2008
Offline
185
#6

Точно, спасибо большое.

Romaldo
На сайте с 10.02.2008
Offline
185
#7

Теперь в другом запутался.

Ненужные поля я выдрал из списка.

Теперь мне нужно, чтобы эти поля отображались в другом месте.

Для этого я использую такую конструкцию:

 <?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; ?>

Все чудесно, кроме одного - если цена не вбита, отображается просто знак валюты...

Не могу понять, как его запретить....

R
На сайте с 13.06.2012
Offline
1
#8

Если я все правильно понял:


<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value): ?>



<?php if($extraField->name == "Цена" && !empty($extraField->value)): ?>


<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; ?>
fedimen
На сайте с 16.05.2012
Offline
3
#9

Волюта должна отображаться только вслед за ценой? Тогда так:

<?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 endif; ?>
<?php endif; ?>
<?php endforeach; ?>

Кстати, это: if($extraField->name == "Цена") очень не хорошо. Ведь, как я понимаю, имеется возможность переименования полей. Стоит переименовать поле и код уже не будет работать. Должно быть какое-то еще поле, по которому можно идентифицировать его. Вот, к примеру, $key чему тут будет равен?

Занимаюсь написанием программ и скриптов на заказ (/ru/forum/717537):
ICQ: 600382789, Skype: fedimen, Е-Маil: fedimen (пудель) gmail (точка) com
R
На сайте с 13.06.2012
Offline
1
#10

fedimen, а зачем ты плодишь переменные?

Условие простое же:

если имя поля = цена и значение не пустое {

выводим следующий код

}

Кстати, это: if($extraField->name == "Цена") очень не хорошо.

Вот с этим полностью согласен. Но это уже автора прихоть.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий