Jump to content
Sign in to follow this  
Gann

Условия вывода атрибутов в карточке товара

Recommended Posts

Приветствую!

 

Необходимо вывести определённую картинку, если есть значение атрибута "Значение1" и нет значение атрибута "Значение2".

 

Пробую вывести так:

 

<?php if ($attribute['text'] == 'Значение 1'){ ?>
<?php if($attribute['text'] == 'Значение 2') { ?>
<?php } else { ?>
<img src="/картинка">
<?php } ?>
<?php } ?>

 

Пробовал через in_array - не работает

Пробовал через key_exist - не работает

Операторы && (and), да много как уже попробовал - не работает.

 

Все эти условия пишу в product.tpl. 

 

Вывод стандартный:

<?php if ($attribute_groups) { ?>
    <?php foreach ($attribute_groups as $attribute_group) { ?>
        <?php foreach ($attribute_group['attribute'] as $attribute) { ?>

...

...

...

Share this post


Link to post
Share on other sites

Вот такое условие работает:

 

<?php if ($attribute['text'] == 'Значение1') { ?>
<img src="/картинка">
<?php } ?>

 

и такое (или то, или это)

 

<?php if ($attribute['text'] == 'Значение1' OR $attribute['text'] == 'Значение2') { ?>
<img src="/картинка">
<?php } ?>

 

Как же прописать условие, чтобы для "Значение1" - картинка выводилась, а если есть "Значение1" и "Значение2" - не выводилась?

 

 

 

Share this post


Link to post
Share on other sites
29 минут назад, Gann сказал:

Вот такое условие работает:

 

<?php if ($attribute['text'] == 'Значение1') { ?>
<img src="/картинка">
<?php } ?>

 

и такое (или то, или это)

 

<?php if ($attribute['text'] == 'Значение1' OR $attribute['text'] == 'Значение2') { ?>
<img src="/картинка">
<?php } ?>

 

Как же прописать условие, чтобы для "Значение1" - картинка выводилась, а если есть "Значение1" и "Значение2" - не выводилась?

 

 

 

атрибуты циклом выводятся. проверять нужно каждый элмент цикла.. если без оптимизации на понятном - то примерно так:

 

Костылем...

 

<?php $atribDa="" // значение если да?>

<?php $atribNet="" // значение если нет?>
 

 

<?php if ($attribute_groups) { ?>
    <?php foreach ($attribute_groups as $attribute_group) { ?>
        <?php foreach ($attribute_group['attribute'] as $attribute) { ?>

<?php if ($attribute['text'] == 'Значение1') { ?>
<?php $atribDa=1; ?>
<?php } ?>

<?php if ($attribute['text'] == 'Значение2') { ?>
<?php $atribNet=1; ?>
<?php } ?>

<?php } ?>

<?php } ?>

<?php } ?>

 

<?php if($atribDa == 1 && $atribNet != 1){ ?>

<img src="/картинка">

<?php } ?>

****

НО правильно это еще в контроллере конкретными функциями перебора массива прописать.. И выводить картинку из него..

например, можно использовать  array_search();

и в две строчки в контроллере вывести
 

  • +1 1

Share this post


Link to post
Share on other sites
2 минуты назад, whiteblue сказал:

 

 

<?php if($atribDa == 1 && $atribNet != 1){ ?>

<img src="/картинка">

<?php } ?>

****

НО правильно это еще в контроллере конкретными функциями перебора массива прописать.. И выводить картинку из него..

например, можно использовать  array_search();

и в две строчки в контроллере вывести
 

Спасибо!

 

Хм.. я так же костылил - не работало. Может где-то ошибся... проверю ещё раз.

Share this post


Link to post
Share on other sites

вам надо пройтись по массиву всех $attribute, собрать значения, а затем просто вызвать in_array

  • +1 1

Share this post


Link to post
Share on other sites
43 минуты назад, Gann сказал:

Как же прописать условие, чтобы для "Значение1" - картинка выводилась, а если есть "Значение1" и "Значение2" - не выводилась?

дело в том, что в $attribute['text'] всегда будет одно значение.

здесь Вам надо проверять на количество, примерно так:

<?php if((count($attribute_group['attribute']) == 1) && ($attribute['text'] == 'Значение1')) { ?>
	<img src="/картинка">
<?php } ?> 

 

  • +1 1

Share this post


Link to post
Share on other sites

В общем, получилась такая конструкция (суть):

 

<?php if(($as==1 OR $ad==1 OR $af==1 OR $ag==1) && $ah != 1){ ?>
<img src="/картинка">
<?php } ?>

Работает! Всем спасибо!

Share this post


Link to post
Share on other sites
7 минут назад, Gann сказал:

В общем, получилась такая конструкция (суть):

 

<?php if(($as==1 OR $ad==1 OR $af==1 OR $ag==1) && $ah != 1){ ?>
<img src="/картинка">
<?php } ?>

Работает! Всем спасибо!

 

получилось. - это хорошо..., но огород большой вышел.

в будущем, если кому-то придется работать с данным кодом, - будут Вас вспоминать )

Share this post


Link to post
Share on other sites

и еще, как рекомендация - старайтесь интуитивно-понятными создавать переменные (Вам в будущем и самому проще потом будет разобраться), только без фанатизма - не надо слишком длинные.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.