Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как скрыть несколько атрибутов на странице товара.


Recommended Posts

Помогите пожалуйста как скрыть определенные атрибуты с карточки товара. С форума все перепробовал ничего не получается, ошибка только выводиться или вообще ничего не происходит. Версия opencart 2.1.0.2 

кусок кода. Если правильно конечно я нашел код атрибута.. путь /view/theme/yourtheme/template/product/product.tpl

<div id="tabs" class="htabs">
	<?php if(mb_strlen($description,'utf-8') > 200) { ?> 
		<a href="#tab-description"><?php echo $tab_description; ?></a>
	<?php } ?>
	<?php if ($attribute_groups) { ?>
		<a href="#tab-attribute"><?php echo $tab_attribute; ?></a>
	<?php } ?>
	<?php if ($review_status) { ?>
		<a href="#tab-review"><?php echo $tab_review; ?></a>
	<?php } ?>
	</div>

 

Надіслати
Поділитися на інших сайтах


1 минуту назад, greendragon сказал:

Вы нашли названия вкладок; описание, атрибуты и отзывы

<?php if ($attribute_groups) { ?>
  <div id="tab-attribute" class="tab-content">
    <table class="attribute">
      <?php foreach ($attribute_groups as $attribute_group) { ?>
      <thead>
        <tr>
          <td colspan="2"><?php echo $attribute_group['name']; ?></td>
        </tr>
      </thead>
      <tbody>
        <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
        <tr>
          <td><?php echo $attribute['name']; ?></td>
          <td><?php echo $attribute['text']; ?></td>
        </tr>
        <?php } ?>
      </tbody>
      <?php } ?>
    </table>
  </div>

этот код?

Надіслати
Поділитися на інших сайтах


2 минуты назад, greendragon сказал:

Да 

 

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

 

Надіслати
Поділитися на інших сайтах


То что вы показываете скрыть - это название группы атрибутов, а не название атрибутов

      <thead>
        <tr>
          <td colspan="2"><?php echo $attribute_group['name']; ?></td>
        </tr>
      </thead>

 

Надіслати
Поділитися на інших сайтах

9 минут назад, greendragon сказал:

То что вы показываете скрыть - это название группы атрибутов, а не название атрибутов


      <thead>
        <tr>
          <td colspan="2"><?php echo $attribute_group['name']; ?></td>
        </tr>
      </thead>

 

подскажете каким образом его можно скрыть зная ид атрибута?

Надіслати
Поділитися на інших сайтах


Я сделал по колхозному, но это работает 

 

?php if($attribute['attribute_id'] <> 707) { ?> - я присвоил ID, который скрываю 

 

<hr <?php if ($options) { ?>style="margin-top:0"<?php } ?> />
                        <?php if ($show_product_attr && $attribute_groups) { ?>
                            <h5 class="heading"><span><?php echo $lang['text_short_attributes']; ?></span></h5>
                            <div class="attributes">
                                <?php foreach ($attribute_groups as $key => $attribute_group) { ?>
                                    <?php if ($key < $show_product_attr_group) { ?>
                                        <?php foreach ($attribute_group['attribute'] as $key => $attribute) { ?>
                                            <?php if ($key < $show_product_attr_item) { ?>
                                            <?php if($attribute['attribute_id'] <> 707) { ?>
                                                <div class="attribute">
                                                    <span><span><?php echo $attribute['name']; ?></span></span>
                                                    <span><span><?php echo $attribute['text']; ?></span></span>
                                                </div>
                                            <?php } ?>
                                            <?php } ?>
                                        <?php } ?>    
                                    <?php } ?>
                                <?php } ?>
                            </div>
                            <a href="" class="show_attr" onclick="$('a[href=\'#tab-specification\']').trigger('click'); scroll_to('#tab-specification'); return false;"><?php echo $lang['text_all_attributes']; ?></a>
                            <hr />
                        <?php } ?>

 

Змінено користувачем rassigor
  • +1 1
Надіслати
Поділитися на інших сайтах


  • 3 years later...
<?php $match = false; ?>
<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
<?php if $attribute['id'] == 777 { $match = true; } ?>
<?php if ($attribute['id'] == 666 && $match) { ?>
    // если есть атрибут с id==777 и текущий id==666, то не выводим 666
<?php } else { ?>
    <tr>
        <td><?php echo $attribute['name']; ?></td>
        <td><?php echo $attribute['text']; ?></td>
    </tr>
<?php } ?>
<?php } ?>

 

Но это костыль, так как "скрывающий атрибут" должен появиться в выборке раньше "скрываемого". Сортировкой можно. Или ковырять метод getProductAttributes

Надіслати
Поділитися на інших сайтах

6 часов назад, SGrWr_34 сказал:

Но это костыль, так как "скрывающий атрибут" должен появиться в выборке раньше "скрываемого". Сортировкой можно. Или ковырять метод getProductAttributes

$product_attribute_query = $this->db->query("SELECT a.attribute_id, ad.name, pa.text FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE pa.product_id = '" . (int)$product_id . "' AND a.attribute_group_id = '" . (int)$product_attribute_group['attribute_group_id'] . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' AND a.attribute_id != '26' ORDER BY a.sort_order, ad.name");

Да, я понимаю что мне нужно подправить тут и это убирает нужный мне параметр, но как мне реализовать проверку другого атрибута, я не пойму :( 

Змінено користувачем Gapnob
Надіслати
Поділитися на інших сайтах


Так вот эта строчка

<?php if $attribute['id'] == 777 { $match = true; } ?>

и есть проверка атрибута. Если у товара есть атрибут с id==777, то выставляем флаг $match = true;

Дальше

<?php if ($attribute['id'] == 666 && $match) { ?>

если текущий атрибут 666 (тот, который скрываем) и флаг установлен (предыдущее условие - есть "скрывающий атрибут"), то ничего не выводим (скрываем атрибут 666 при условии, что у товара есть атрибут 777). При остальных кейсах обычный вывод атрибутов

Змінено користувачем SGrWr_34
Надіслати
Поділитися на інших сайтах

4 часа назад, SGrWr_34 сказал:

 


<?php if $attribute['id'] == 777 { $match = true; } ?>

 


<?php if ($attribute['id'] == 666 && $match) { ?>

если текущий атрибут 666 (тот, который скрываем) и флаг установлен (предыдущее условие - есть "скрывающий атрибут"), то ничего не выводим (скрываем атрибут 666 при условии, что у товара есть атрибут 777). При остальных кейсах обычный вывод атрибутов

Так это реально костыльно + вы сами сказали что лучше изменить метод getProductAttributes. У меня атрибуты выводятся в 2 местах (каталог и карточка) и мне лучше затронуть именно данный метод. Могу ли я как то использовать CASE в запросе указанном выше? Хотелось бы сделать сразу корректно и без костылей...

Змінено користувачем Gapnob
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.