Ремонт компьютера
Сборка, чистка, апгрейт ремонт любой техники.
Замена частей, установка ПО, установка Windows, антивируса.
Удаленная помощь без вызова на дом.
Создание сайта
Создание сайта с нуля, модулей, скриптов для сайта.
Движки Joomla, Wordpress, Opencart, Prestashop и тд.
SEO продвижение, ремонт, оптимизация сайта.

Модуль для opencart DTable — таблица в описании товара

Модуль для opencart DTable служит для создание красивой таблицы атрибутов вместо привычного описания товара, при условии что товар имеем выводимые атрибуты, иначе не выводит и отображает описание к товару. Модуль для opencart DTable написан полностью мной, он был создан для proclimate.byКак он выглядит смотрим на сайте proclimate.by:

Вот как он выглядел во время теста, на чистом opencart:

Установка

1)Скачиваем архив и распаковываем в корень сайта (он ничего не должен заменить,файлы все новые).

ver 0.2:

  Скачать DTable-Chizi (скачен: 173)

ver 0.3:

  Скачать DTable-Chizi (скачен: 148)

Исправлены ошибки, теперь атрибуты видит и у родителей категории товара.

Если на чистый opencart (без модулей)

2)Если у вас opencart чистый без модулей таких как filterPro:

2.1) открываем то место где хотим их (таблицы аттрибутов) отображать (category, search, и тд.)

\catalog\controller\product\category.php

\catalog\controller\product\search.php

и перед строками создания массива продуктов $this->data['products'][] = array(

1

2.2)Меняем строку с

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) .'..',

на функцию table_chizi(описание старое,продукта id):

'description' => $this->table_chizi( $result['description'] , $product['product_id']),

2.3)Вот что должно получиться:

1

Если используеться FilterPPO:

2) Если же стоит FilterPro

2.1) Открываем файлик \catalog\controller\module\filterpro.php

2.2) находим

'description' => $product['description'],

или

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',

меняем на функцию table_chizi(описание старое,продукта id, категории id):

'description' => $this->table_chizi($result['description'], $result['product_id']),

1

2.3) (в новых версих filterpro — этот пункт не нужен)Теперь исправим на корректный вывод таблицы. Находим файлик catalog\view\theme\[имя вашей темы]\template\module\filterpro.tpl и открываем его. Находим строку <div>${description}</div> меняем на <div>{{html description}}</div> Вот что должно получиться:

ДАЛЕЕ в обоих случаях

3) Добавим в файл (в пункте 2.1) что открыли ранее, нашу функцию в начало класса:

public function table_chizi($text_default = '',$productID){
 $this->load->model('catalog/product');
 $attrs = $this->model_catalog_product->getProductAttributes($productID); // все аттрибуты товара
 $text="";
 $find=false;
 
 
// у родителей теперь
$cat = $this->model_catalog_product->getCategories($productID); // все привязанные категории
$and="`category`= '0'";
foreach($cat as $val){
 if (!$find){ // ищем табличку нашу
 $and.=" or `category`='".$val['category_id']."' "; 
 }
 }
 $sql=" SELECT * FROM `ftable` WHERE $and GROUP BY `attribut` ORDER BY `sort` ASC";
$query= $this->db->query($sql); 
$mass=$query->rows; 
 
if ((isset($mass))&&(count($mass)>0)){
 $text.= '<table cellpadding="0" cellspacing="0" border="0" class="table_attr">';
 foreach($mass as $row) // перебор по нашему массиву атрибутов
 {
 foreach($attrs as $attr) // общий массив аттрибутов
 {
 foreach($attr['attribute'] as $param)
 {
 if ($param['attribute_id']==$row['attribut'])
 {
 $text.= '<tr><td width="60%" class="CLeft">'.$param['name'].'</td><td width="40%" style="text-align:right" class="CRight">'.$param['text'].'</td></tr>';
 $find=true;
 }
 }
 }
 }
 $text.= '</table>';
}
 if (!$find){
 $text=utf8_substr(strip_tags(html_entity_decode($text_default, ENT_QUOTES, 'UTF-8')), 0, 100) . '...';
 }
 return $text;
 }

Вот как это будет выглядеть, вставляем код в начало класса текущего (class) после открывающей скобки:

1

4) Добавляем таблицу стилей

<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/stylechizi.css" />

в шапку \catalog\view\theme\default\template\common\header.tpl

1

5)Теперь открываем админку -> Дополнения->Модули Находим наш модуль DTable и нажимаем установить:

Установив нажимаем изменить и заходим внутрь:

6) Важно!!! чтобы у товаров существовали атрибуты и группы атрибутов у нужного товара в модуле этом. Если вы еще их не создали, создайте их. Так же убедитесь чтобы у самого товара присутствовали какие то атрибуты (в характеристике товара). Скажем их очень много (атрибутов у товара), но мы хотим вывести определенные для этого мы их в админке выберем и добавим, далее следуйте описаниям модуля.

7) Выберете категорию к которой хотите добавить, выберете из группы атрибутов, и выберете нужный атрибут. После чего нажмите добавить атрибут, появиться таблица с атрибутами, теперь как вы их отсортируете, так они и будут отображаться на вашем сайте. Если что то не так пишите в комментариях или на мою почту указанную в контактах.

P.s.

Вижу плагин многим нравиться, последние исправления его на 14.05.2015. Спасибо всем кто помог в комментариях с его ошибками. Как думаете, стоит ли английскую версию делать? Вот последний тест был:
123

Название статьи при не правильной раскладке клавиатуры: Vjlekm lkz opencart DTable — nf,kbwf d jgbcfybb njdfhf
Если вдруг появилось желание поблагодарить автора,просто нажмите на рекламу чуть ниже, этого будет достаточно :)

Отзывов (21)

  1. aeroseo:

    Нужный модуль. Где хоть взял то? Нигде раньше не встречал. Тоже под кондеи прикручу)

  2. Добрый день, на каких версиях ocstore будет работать ланный модуль?

  3. Андрей:

    Здравствуйте не подскажите при пункте 2.2)Добавляем строку — при замене на ‘description’ => table_chizi($result[‘description’],$result[‘description’]) ; сайт виснет возвращаю старою все нормально только атрибуты в одну строчку и без пробелов. Не подскажите в чем причина. Версия 1.5.5.1.2

    • Chizi:

      Добавил 3ий пункт? если функции нету, то и выполнять нечего ему! включи ошибки PHP, и посмотри что выдает, отпишись, решим. Чуток статью исправил, такие комментарии помогают находить ошибки =), спасибо. Потестил все на чистом сново.

      • Андрей:

        Вот что выдает Warning: include(/chizi/chizitable.php): failed to open stream: No such file or directory in /var/www/ /data/www/——/catalog/controller/product/category.php on line 257Warning: include(/chizi/chizitable.php): failed to open stream: No such file or directory in /var/www/——/data/www/—-/catalog/controller/product/category.php on line 257Warning: include(): Failed opening ‘/chizi/chizitable.php’ for inclusion (include_path=’.:’) in /var/www/—-/data/www/——/catalog/controller/product/category.php on line 257 не совсем пойму что не выходит

        • Андрей:

          Это при таком варианте include («/chizi/chizitable.php»);
          $this->data[‘products’][] = array(
          ‘product_id’ => $result[‘product_id’],
          ‘thumb’ => $image,
          ‘name’ => $result[‘name’],
          ‘description’ => table_chizi($result[‘description’],$result[‘description’]),
          ‘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)

  4. Андрей:

    При этом ошибок не показывает но страница полностью пуста
    include ($_SERVER[‘DOCUMENT_ROOT’].»/chizi/chizitable.php»);
    $this->data[‘products’][] = array(
    ‘product_id’ => $result[‘product_id’],
    ‘thumb’ => $image,
    ‘name’ => $result[‘name’],
    ‘description’ => table_chizi($result[‘description’],$result[‘description’]),
    ‘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)

  5. Андрей:

    А так в одну строчку все и без пробелов я так понимаю стили не видит
    include ($_SERVER[‘DOCUMENT_ROOT’].»/chizi/chizitable.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) . ‘..’,
    ‘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)

  6. Андрей:

    Спасибо победил. В файле install заменил include («/chizi/chizitable.php»); на include ($_SERVER[‘DOCUMENT_ROOT’].»/chizi/chizitable.php»);

    • Chizi:

      Главное победа))
      Я просто это уже исправил в новой версии) но если это ты нашел в ней исправление, то нужно будет проверит сново.

  7. Андрей:

    Еще раз привет. Новая беда может совпало. Утром включаю 0 как будто ни чего ни делал файл category.php пустой ошибка в php ссылается на файл feedback.php стр 280
    ob_start();
    imagejpeg($image, «», 100);
    imagedestroy($image);
    $data = base64_encode(ob_get_clean());
    echo $data;
    на сколько я понимаю — base64_encode это не хорошо.
    Загрузил заново файл category.php все заработало не подскажите в чем может быть причина буду очень признателен. Спасибо

    • Chizi:

      Ну feetback не относиться к модулю, что касаеться того что функция устарела, не страшно, главное чтобы работала). В этом участке кода, он генерит пустую картинку в фоне и шифрует в MIME (для передачи по всем протоколам сети). А что касаеться модуля, то перекачай новый, там ненужен chizitable.

  8. Здравствуйте Chizi !
    Скачал Ваш модуль, распаковал и вручную загрузил папки с архива в нужные места на свой магазин на Opencart.
    Модуль проявился. Включил его и провел настройки вывода атрибутов.
    Атрибуты были ранее составлены.
    Изменений нет.
    Пример страницы: http://www.esterhazi.com/index.php?route=product/category&path=195
    Все как ранее было так и осталось.
    Словом не отображается Ваш модуль.
    Подскажите, пожалуйста, в чем дело, что не так я сделал?
    О себе: я не профессиональный веб дизайнер. Это моё «хобби». Я рабочий, вот пытаюсь как то создать свой бизнес.
    С уважением Николай.

    • Chizi:

      Спасибо за комментарий, сейчас буду тестировать на вашей версии. Ожидайте…

      • Chizi:

        Потестил и нашел кучу ошибок, встречайте новую версию, проверил, на чистой опенкарт, все ТОЧНО должно пахать.

  9. Иван:

    Добрый день! Очень понравился ваш модуль но не могу его поставить на -1.5.5.1.2, с какими версиями совместим?

  10. Александр:

    Добрый день! Подскажите пожалуйста, как группу атрибутов в строку, т.е. допустим длинаХширинаХвысота

    • Chizi:

      пока только в голову идет 2варианта
      1) кодом ловить нужные аттрибуты и выравнивать как надо, остальные как надо показывать
      2) создать группу аттрибутов, для которых будет такое выравнивание, все равно код писать.
      Обращайтесь в личку, все сделаю!

Добавить комментарий

Ваш e-mail не будет опубликован.


Вставьте верное число *