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

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

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

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

Смотрел код, но мало что понял. Думаю нужно как-то исключить 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 } ?>

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
всем привет! а если мне надо исключить 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

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


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

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

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

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

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


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

все нормально! забыла вначале <?php foreach ($attribute_groups as $attribute_group) { ?>

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


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

Сталкнулся с такой задачей, нужно вывести атрибуты из определённой группы (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 пользователей онлайн

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

×

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

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