Jump to content
Sign in to follow this  
sholazar

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

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

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

  • +1 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

\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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

ИМХО способ более удобный для большого кол-ва разных атрибутов. Делается просто, в файле шаблона 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

Share this post


Link to post
Share on other sites

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

ИМХО способ более удобный для большого кол-ва разных атрибутов. Делается просто, в файле шаблона 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 } ?>

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

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

Share this post


Link to post
Share on other sites
всем привет! а если мне надо исключить 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 } ?>

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
всем привет! а если мне надо исключить 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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.