Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


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

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

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

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


  • 3 месяца спустя...
всем привет! а если мне надо исключить 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 месяца спустя...
  • 2 недели спустя...

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

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 месяца спустя...

Сталкнулся с такой задачей, нужно вывести атрибуты из определённой группы (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 и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.