Перейти к содержанию
krashman

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

Рекомендуемые сообщения

Подскажите, как реализовать вывод вместо описания у товара в категории атрибуты? Не все, а определённые, по 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 } ?>
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Спасибо.

Завтра отправлю благодарность на WMR. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

<?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 } ?>
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

супер. всё работает

Изменено пользователем afwollis
overquote deleted

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 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 этот же код 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.