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

[Решено] Вывод атрибутов вместо описания в категориях opencart 2.0


krashman

Recommended Posts

Подскажите, как реализовать вывод вместо описания у товара в категории атрибуты? Не все, а определённые, по id этого самого атрибута? и вообще, как их вывести

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


Описание в категории выводится так:

<div class="description">
                <?php echo mb_substr($product['description'],0,81,'UTF-8').'...'; ?></div>

Атрибуты в карточке товара:

<?php if ($attribute_groups) { ?>
		<!-- Product specifications -->
		<div id="tab-specification" class="product-spec product-section">
			<h3 class="product-section_title"><?php echo $tab_attribute; ?></h3>
			<table class="table table-bordered">
			<?php foreach ($attribute_groups as $attribute_group) { ?>
			<tbody>
				<tr>
					<th colspan="2"><strong><?php echo $attribute_group['name']; ?></strong></th>
				</tr>
			</tbody>
			<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>
		<?php } ?>
Надіслати
Поділитися на інших сайтах


/catalog/controller/product/category.php

1.

...
				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
...
>>

...
				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),
					'thumb'       => $image,
...
2.
...
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);
			}
...
>>

...
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);
			}
			
			$data['attribute_ids'] = array(1); // тут id нужных тебе атрибутов
			//$data['attribute_ids'] = range(1,9999); // для теста
...

/catalog/view/theme/default/template/product/category.tpl

1.

...
<p><?php echo $product['description']; ?></p>
...
>>

...
                <?php /*
                <p><?php echo $product['description']; ?></p>
                */ ?>
                
				<?php if ($product['attribute_groups']) { ?>
					<table class="table table-bordered">
						<?php foreach ($product['attribute_groups'] as $attribute_group) { ?>
							<tbody>
								<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
									<?php if (in_array($attribute['attribute_id'], $attribute_ids)) { ?>
									<tr>
										<td><?php echo $attribute['name']; ?></td>
										<td><?php echo $attribute['text']; ?></td>
									</tr>
									<?php } ?>
								<?php } ?>
							</tbody>
						<?php } ?>
					</table>
				<?php } ?>
...
Надіслати
Поділитися на інших сайтах

Пытаюсь подключить условие, чтобы выводило описание, в случае отсутствия атрибутов, но у меня не получается

Подскажите, что делаю не так?

<?php else { ?>
   <?php echo ($product['description'];) {?>
   <?php } ?>
<?php } ?>
Надіслати
Поділитися на інших сайтах


А как изменить, чтобы, если отсутствуют характеристики выводить описание?

0. убрать те изменения.

/catalog/controller/product/category.php

1.

...
				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
...
>>

...


				$valid_attribute_ids = array(1,2,7,99,100500);
				//$valid_attribute_ids = range(1,9999); // для теста
				$attributeList = array();
				$attribute_groups_full = $this->model_catalog_product->getProductAttributes($result['product_id']);
				
				foreach ($attribute_groups_full as $attribute_group) {
					foreach ($attribute_group['attribute'] as $attribute) {
						if (in_array($attribute['attribute_id'], $valid_attribute_ids)) {
							$attributeList[] = $attribute;
						}
					}
				}
				
				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'attribute_list' => $attributeList,
					'thumb'       => $image,
...

/catalog/view/theme/default/template/product/category.tpl

1.

...
<p><?php echo $product['description']; ?></p>
...
>>

...
<?php if ($product['attribute_list']) { ?>
	<table class="table table-bordered">
		<tbody>
			<?php foreach ($product['attribute_list'] as $attribute) { ?>
				<tr>
					<td><?php echo $attribute['name']; ?></td>
					<td><?php echo $attribute['text']; ?></td>
				</tr>
			<?php } ?>
		</tbody>
	</table>
<?php } else { ?>
	<p><?php echo $product['description']; ?></p>
<?php } ?>
...
  • +1 1
Надіслати
Поділитися на інших сайтах

  • 2 years later...
В 14.11.2017 в 20:51, vikulya сказал:

в модуле рекомендуемые не работает данное решение, а в остальном все работает. опенкарт 2.3

 

Для этого нужно дополнительно прописать в featured.php и featured.tpl этот же код 

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

Подскажите пожалуйста. сделал все как выше сказано, как во втором варианте с условие, чтоб выводил описание, если нет атрибута.

Notice: Undefined index: attribute_list in /var/www/u0409214/data/www/test.vag-sh.ru/catalog/view/theme/coloring/template/product/category.tplon line 148

 

выдает вот такую ошибку и выводит описание товара. 148 линия это начало вставки кода в шаблон категории /catalog/view/theme/default/template/product/category.tpl

 

может я id атрибута неправильно присваиваю?

у меня есть Группа атрибутов -> Размер дверей  id=7

и атрибут допустим 600x1900   _id=13

 

 

что мне здесь нужно указать 

$valid_attribute_ids = array(1,2,7,99,100500); 

?

 

или в чем может быть проблема? благодарю. 

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


В 17.11.2017 в 06:17, pedagog сказал:

Для этого нужно дополнительно прописать в featured.php и featured.tpl этот же код 

в том то и дело, что там контроллер другой и этот код не срабатывает

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


  • 2 years later...

ребята подскажите как это условие в twig записать?

 

<?php if ($product['attribute_groups']) { ?>
					<table class="table table-bordered">
						<?php foreach ($product['attribute_groups'] as $attribute_group) { ?>
							<tbody>
								<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
									<?php if (in_array($attribute['attribute_id'], $attribute_ids)) { ?>
									<tr>
										<td><?php echo $attribute['name']; ?></td>
										<td><?php echo $attribute['text']; ?></td>
									</tr>
									<?php } ?>
								<?php } ?>
							</tbody>
						<?php } ?>
					</table>
				<?php } ?>

Вотт сконвертил но не работает(

 

 

 

 

            
    {% if (product['attribute_groups']) %}
                    <table class="table table-bordered">
                        {% for attribute_group in product['attribute_groups'] %}
                            <tbody>
                                {% for attribute in attribute_group['attribute'] %}
                                    {% if (in_array(attribute['attribute_id'], attribute_ids)) %}
                                    <tr>
                                        <td>{{ attribute['name'] }}</td>
                                        <td>{{ attribute['text'] }}</td>
                                    </tr>
                                    {% endif %}
                                {% endfor %}
                            </tbody>
                        {% endfor %}
                    </table>
                {% endif %}

 

 

 

 

 

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


  • 3 weeks later...
В 16.06.2020 в 22:50, munhgauzen сказал:

ребята подскажите как это условие в twig записать?

 


<?php if ($product['attribute_groups']) { ?>
					<table class="table table-bordered">
						<?php foreach ($product['attribute_groups'] as $attribute_group) { ?>
							<tbody>
								<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
									<?php if (in_array($attribute['attribute_id'], $attribute_ids)) { ?>
									<tr>
										<td><?php echo $attribute['name']; ?></td>
										<td><?php echo $attribute['text']; ?></td>
									</tr>
									<?php } ?>
								<?php } ?>
							</tbody>
						<?php } ?>
					</table>
				<?php } ?>

Вотт сконвертил но не работает(

 

 

 

 

            
    {% if (product['attribute_groups']) %}
                    <table class="table table-bordered">
                        {% for attribute_group in product['attribute_groups'] %}
                            <tbody>
                                {% for attribute in attribute_group['attribute'] %}
                                    {% if (in_array(attribute['attribute_id'], attribute_ids)) %}
                                    <tr>
                                        <td>{{ attribute['name'] }}</td>
                                        <td>{{ attribute['text'] }}</td>
                                    </tr>
                                    {% endif %}
                                {% endfor %}
                            </tbody>
                        {% endfor %}
                    </table>
                {% endif %}

 

 

 

 

 

 

у меня вот так получилось

 

   

Цитата

            {% set attr_id = [1397, 1729, 1398] %}
                {% if attribute_groups %}
                    <table class="table table-bordered">
                        {% for attribute_group in attribute_groups %}
                            <tbody>
                            {% for attribute in attribute_group.attribute %}                                                       
                                {% if attribute.attribute_id in attr_id %}
                                    <tr>
                                        <td>{{ attribute['name'] }}</td>
                                        <td>{{ attribute['text'] }}</td>
                                    </tr>
                                {% endif %}
                            {% endfor %}
                            </tbody>
                        {% endfor %}
                    </table>
                {% endif %}

 

а этот пример не выводит нужные атрибуты

 

Цитата

                {% set attr_id = [1397, 1729, 1398] %}
                {% if attribute_groups %}
                    <table class="table table-bordered">
                        {% for attribute_group in attribute_groups %}
                            <tbody>
                            {% for attribute in attribute_group.attribute %}                                                       
                                {% if attribute.attribute_id not in attr_id %}
                                    <tr>
                                        <td>{{ attribute['name'] }}</td>
                                        <td>{{ attribute['text'] }}</td>
                                    </tr>
                                {% endif %}
                            {% endfor %}
                            </tbody>
                        {% endfor %}
                    </table>
                {% endif %}

 

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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