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

BSOD

Новачок
  
  • Публікації

    11
  • З нами

  • Відвідування

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

  1. Есть такой код заполнения таблицы сравнения атрибутов (столбцы Группы атрибутов -> значения атрибутов). Промежуточные звенья Атрибуты созданы только для фильтрации и скрыты из таблицы:

    <?php foreach ($attribute_groups as $attribute_group) { ?>
    	<tbody>
    	 <?php foreach ($attribute_group['attribute'] as $key => $attribute) { ?>
    	  <tr>
    		<td><?php echo $attribute_group['name']; ?></td>
    		<?php foreach ($products as $product) { ?>
    		<?php if (isset($products[$product['product_id']]['attribute'][$key])) { ?>
    		<td><?php echo $products[$product['product_id']]['attribute'][$key]; ?></td>
    		<?php } else { ?>
    		<td></td>
    		<?php } ?>
    		<?php } ?>
    	  </tr>
    	<?php } ?>
    	</tbody>
    	<?php } ?>
    

    Как задать условие - если уже существует совпадающая ячейка $attribute_group['name']; то пропустить ее создание?

    Чтобы исключить вот такое дублирование:

    post-20794-0-43016700-1343044294_thumb.jpg

    Спасибо

  2. долго вчитывался , но я не понял

    :-) Я старался внятно объяснить.

    Сейчас еще раз по-простому:

    Есть Группа атрибутов Высота, в ней допустим 10 атрибутов (1-2, 3-5, 6-10,... ).

    Далее под атрибут 6-10 попадают товары с высотой 6,7,8,9,10. Соответственно все они будут отображаться в фильтре.

    Как сделать, чтобы чекбоксы 6,7,8,9,10 не отображались, а отобразился только чекбокс атрибута "6-10" со счетчиком (как на картинке).

    Т.е. фильтровать по id атрибута, а не по его конечному значению.

    (Объяснил в личке)

  3. Можно конечно прикрутить костыль в виде дублирования атрибутов. Одни для реального отображения характеристик, другие для Filter Pro. В фильтре не отображать реальные можно. Но как тогда быть в хар-ках товара и в сравнении, там атрибуты в виде класса, т.е. отображаться будут все поля (и реальные и от FP).

    И опять же не будет счетчика при такой выборке.

    Выручайте.

  4. Можно ли сделать фильтрацию по самим атрибутам, а не по их значениям? Опционально, само собой. Объясню зачем:

    Допустим у меня сотня товаров разной длины. Ставлю категорию атрибутов "Длина", в нее входят атрибуты "до 100", "100-200", "200-300" и тд.

    В виде Галочек будет выводится громадный список всех возможных значений, а в виде Списка не будет возможности отобрать одну конкретную или несколько подкатегорий.

    А требуется например отфильтровать два атрибута "до 100" и "100-200". Т.е. по аналогии с фильтром производителей со счетчиком и логикой ИЛИ.

    И добавить поле замены отображаемого имени в фильтре. Т.е. структура атрибутов сейчас в сокращенной форме, например (холод.) выс. 91-100, (пос.м) шир. 56-60. И всё это отображается в фильтре. В темплейтах продукта и сравнения это скрыл, заменив $attribute['name'] на $attribute_group['name']. А в фильтре конечно так не прокатит.

    На картинке сейчас всего два товара, а когда их будет сотня с разными значениями - просто засада станет.

    post-20794-0-98583900-1342786637_thumb.jpg

    Вот такой feature request ))

    Спасибо.

    ---

    Кстати, если имя группы атриб. слишком длинное, оно не переносится и наплывает на переключашку.

  5. Вот решение

    Оно на vqmod.

    ---

    Кстати, победил таки первым способом. Надо было еще в перевод хедера Сравнение добавить.

    Объединю всё:

    Контроллер/хедер:
    $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
    $this->data['compare'] = $this->url->link('product/compare');
    
    тема/хедер:
    <a href="<?php echo $compare; ?>" id="compare_total"><?php echo $text_compare; ?></a>
    
    языки/хедер:
    $_['text_compare']	   = 'Сравнение товаров (%s)';
    
    
    • +1 4
  6. <a href="<?php echo $compare; ?>" id="compare_total"><?php echo $text_compare; ?></a>
    Да, в хедере шкурки именно так и ставил. А в хедер контроллера те две строки выше. Но.

    Сегодня обнаружил, что $this->data['text_compare']... нужно ставить выше $this->language->load('common/header');

    Тогда появляется Сравнение (0). Если ниже ставить, то будет то самое Сравнение без счетчика после переходов.

    Правда в первом случае счетчик сохраняется, когда ты уходишь из текущей категории в другую, можно браузить по другим товарам в пределах product/category. Но стоит перейти например на главную, как Сравнение вообще слетает, вместе с переводом ))) Хотя может это у меня так, пока в стадии экспериментов.

    ---

    Еще один способ вычитал на соседнем ресурсе:

    Дескать надо присвоить в хедере шаблона другой айди, типа id="compare_total_another" и в common.js дописать его после $('#compare-total').html(json['total']);

    т.е. будет:

    в хедере
    <a href="<?php echo $compare; ?>" id="compare_total_another"><?php echo $text_compare; ?></a>
    ---
    в скрипте
    $('#compare-total').html(json['total']);
    $('#compare-total-another').html(json['total']);
    Но у меня лично это не дало никакого видимого эффекта, всё как было.
  7. Возле кнопки "Сравнения" появляется (1). Уходишь на другую страницу - все пропадает, остается только слово "Сравнения".

    Нужно скопировать всё по compare из controllerproductcategory.php в controllercommonheader.php , тогда кол-во сравниваемого товара в шапке будет актуальным в любом разделе.

    $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
    ---
    $this->data['compare'] = $this->url->link('product/compare');
    
×
×
  • Створити...

Important Information

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