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

[Решено] Вывод некоторых атрибутов из добавленных.


sholazar

Recommended Posts

Здравствуйте, люди добрые! Возник вопрос: как, при добавлении к товару, допустим, трёх атрибутов, отображать в закладке "характеристики" только два из трёх. Т.е. подключены должны быть все три (чтобы фильтр сортировал по всем трём), а отображались в товаре не все три.

Смотрел код, но мало что понял. Думаю нужно как-то исключить id атрибутов, которые должны быть скрыты.

Есть идеи? Буду очень благодарен за помощь! :-)

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


Здравствуйте, вариант 1 в шаблоне по id, вариант 2 в методе public function getProductAttributes($product_id) модели catalog\model\catalog\product.php так же путём исключения по id, но тут зависит от функционала фильтра. Фильтр может получать атрибуты продуктов с помощью своего функционала или с помощью стандартных методов.

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

Здравствуйте, вариант 1 в шаблоне по id, вариант 2 в методе public function getProductAttributes($product_id) модели catalog\model\catalog\product.php так же путём исключения по id, но тут зависит от функционала фильтра. Фильтр может получать атрибуты продуктов с помощью своего функционала или с помощью стандартных методов.

Спасибо за ответ. Думаю лучше 1 вариант, но что именно нужно дописать в код, чтобы исключить допустим id3 и id7? Я в этом плохо разбираюсь..

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


\catalog\view\theme\default\template\product\product.tpl

<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
 <?php if($attribute['attribute_id'] != 20) { ?>
<tr>
  <td><?php echo $attribute['name']; ?></td>
  <td><?php echo $attribute['text']; ?></td>
</tr>
 <?php } ?>
<?php } ?>

  • +1 2
Надіслати
Поділитися на інших сайтах

\catalog\view\theme\default\template\product\product.tpl

<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
 <?php if($attribute['attribute_id'] != 20) { ?>
<tr>
  <td><?php echo $attribute['name']; ?></td>
  <td><?php echo $attribute['text']; ?></td>
</tr>
 <?php } ?>
<?php } ?>

Огромное огромное спасибо!

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


Я наверное делаю по дурацки, но чтобы не следить за массой ид атрибутов, я не вывожу все атрибуты, у которых в их значении есть длинное тире:

ИМХО способ более удобный для большого кол-ва разных атрибутов. Делается просто, в файле шаблона product.tpl:

Вместо

	  <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
	  <tr>
		<td><?php echo $attribute['name']; ?></td>
		<td><?php echo $attribute['text']; ?></td>
	  </tr>
	  <?php } ?>

пишем

	  <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
	  <?php if(!strpos($attribute['name'], "—")) {?>
	  <tr>
		<td><?php echo $attribute['name']; ?></td>
		<td><?php echo $attribute['text']; ?></td>
	  </tr>
	  <?php } ?>
	  <?php } ?>

Ну и конечно аналогичным способом в боковом блоке фильтрации обрезается вывод всего, что не нужно

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

Я наверное делаю по дурацки, но чтобы не следить за массой ид атрибутов, я не вывожу все атрибуты, у которых в их значении есть длинное тире:

ИМХО способ более удобный для большого кол-ва разных атрибутов. Делается просто, в файле шаблона product.tpl:

Вместо

	  <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
	  <tr>
		<td><?php echo $attribute['name']; ?></td>
		<td><?php echo $attribute['text']; ?></td>
	  </tr>
	  <?php } ?>

пишем

	  <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
	  <?php if(!strpos($attribute['name'], "—")) {?>
	  <tr>
		<td><?php echo $attribute['name']; ?></td>
		<td><?php echo $attribute['text']; ?></td>
	  </tr>
	  <?php } ?>
	  <?php } ?>

Ну и конечно аналогичным способом в боковом блоке фильтрации обрезается вывод всего, что не нужно

Необычно, но работает ведь!)

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


  • 3 months later...
всем привет! а если мне надо исключить 10-15 атрибутов, то как это можно написать короче чем у меня?

 

 

<?php if($product['attribute_groups']) { ?>

         <ul>

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

              <tbody>

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

<?php if($attribute['attribute_id'] != 28) { ?>

<?php if($attribute['attribute_id'] != 30) { ?>

<?php if($attribute['attribute_id'] != 27) { ?>

<?php if($attribute['attribute_id'] != 35) { ?>

<?php if($attribute['attribute_id'] != 33) { ?>

<?php if($attribute['attribute_id'] != 31) { ?>

<?php echo $attribute['text']; ?> 

<font color="#5b5b5b"> - </font>

 

                   <?php } ?>

                   <?php } ?>

  <?php } ?>

  <?php } ?>

  <?php } ?>

  <?php } ?>

  <?php } ?>

                  </tbody>

                 <?php } ?>

                  </ul>

                <?php } ?>
Надіслати
Поділитися на інших сайтах


http://php.net/manual/ru/language.operators.logical.php

Вы мне кое-кого напомнили  :-) 

bool IsBukva(char symbol)
{
switch(symbol)
{
case'a':return 1;break;
case'b':return 1;break;
case'c':return 1;break;
case'd':return 1;break;
case'e':return 1;break;
case'f':return 1;break;
case'g':return 1;break;
case'h':return 1;break;
case'i':return 1;break;
case'j':return 1;break;
case'k':return 1;break;
case'l':return 1;break;
case'm':return 1;break;
case'n':return 1;break;
case'o':return 1;break;
case'p':return 1;break;
case'q':return 1;break;
case'r':return 1;break;
case's':return 1;break;
case't':return 1;break;
case'u':return 1;break;
case'v':return 1;break;
case'w':return 1;break;
case'x':return 1;break;
case'y':return 1;break;
case'z':return 1;break;
case'A':return 1;break;
case'B':return 1;break;
case'C':return 1;break;
case'D':return 1;break;
case'E':return 1;break;
case'F':return 1;break;
case'G':return 1;break;
case'H':return 1;break;
case'I':return 1;break;
case'J':return 1;break;
case'K':return 1;break;
case'L':return 1;break;
case'M':return 1;break;
case'N':return 1;break;
case'O':return 1;break;
case'P':return 1;break;
case'Q':return 1;break;
case'R':return 1;break;
case'S':return 1;break;
case'T':return 1;break;
case'U':return 1;break;
case'V':return 1;break;
case'W':return 1;break;
case'X':return 1;break;
case'Y':return 1;break;
case'Z':return 1;break;
default:return 0;
}
}
Надіслати
Поділитися на інших сайтах

всем привет! а если мне надо исключить 10-15 атрибутов, то как это можно написать короче чем у меня?
 
 
<?php if($product['attribute_groups']) { ?>
         <ul>
             <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
              <tbody>
                <?php foreach($attribute_group['attribute'] as $attribute) { ?>
<?php if($attribute['attribute_id'] != 28) { ?>
<?php if($attribute['attribute_id'] != 30) { ?>
<?php if($attribute['attribute_id'] != 27) { ?>
<?php if($attribute['attribute_id'] != 35) { ?>
<?php if($attribute['attribute_id'] != 33) { ?>
<?php if($attribute['attribute_id'] != 31) { ?>
<?php echo $attribute['text']; ?> 
<font color="#5b5b5b"> - </font>
 
                   <?php } ?>
                   <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } ?>
                  </tbody>
                 <?php } ?>
                  </ul>
                <?php } ?>

Привет, используй функцию in_array.

<?php $array = array(28, 30, 27, 35, 33, 31); ?>
<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
	<?php if(!in_array($attribute['attribute_id'], $array)) { ?>
	<tr>
	  <td><?php echo $attribute['name']; ?></td>
	  <td><?php echo $attribute['text']; ?></td>
	</tr>
	<?php } ?>
<?php } ?>
  • +1 1
Надіслати
Поділитися на інших сайтах

  • 3 months later...
  • 2 weeks later...

добрый день! очень нужна помощь! не могу справится с ошибкой

Notice: Undefined variable: attribute_group inZ:\home\test\www\catalog\view\theme\default\template\product\product.tplon line 57Warning: Invalid argument supplied for foreach() inZ:\home\test\www\catalog\view\theme\default\template\product\product.tplon line 57

пожалуйста, помогите!

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


  • 3 months later...

Сталкнулся с такой задачей, нужно вывести атрибуты из определённой группы (attribute_group_id=17) вместо описания в категориях. 

 

Не подскажете как можно это решить? 

 

Пока что у меня выглядет всё вот так: (Решение от RGB)

 

\catalog\controller\product\category.php

				$this->data['products'][] = array(					'product_id'  => $result['product_id'],					'thumb'       => $image,					'name'        => $result['name'],					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',					'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),					'price'	   => $price,					'price'       => $price,					'special'     => $special,					'tax'         => $tax,					'rating'      => $result['rating'],					'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)				);

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

<div class="description"><?php if($product['attribute_groups']) { ?><ul><?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php if(!strpos($attribute_group['name'], "—")) {?><tbody><b><font color="#f16325"><?php echo $attribute_group['name']; ?></font></b><br><?php foreach($attribute_group['attribute'] as $attribute) { ?><b><?php echo $attribute['name']; ?></b> <?php echo $attribute['text']; ?><br>	<?php } ?><?php } ?></tbody><?php } ?></ul><?php } ?></div>
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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