Новости Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

👩‍💻 Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla.v.6.1.0 Что нового?Модуль корзины. Отображение корзины в виде offcanvas-элемента.Кнопка выхода в панели управления пользователя. Что тут сказать, просто добавили. Отправка писем только для заказов, оплаченных определёнными способами. Это удобно для рассылки сообщений, привязанных к региону или провайдеру (например, инструкции по банковскому переводу только для заказов, оплаченных банковским переводом).Листинг выплат по партнерской системе. В разделе управления партнёрскими программами появилось новое подменю «Выплаты», в котором перечислены выплаты партнёрам (упрощённое отслеживание и сверка). Добавлены настройки, благодаря которым можно определить категории товаров, на которые начисляется партнёрская комиссия с продаж.Список комплектов товаров. Система комплектов позволяет отслеживать остатки товаров, продаваемых в комплекте.Подробнее в блоге Hikashop.Поскольку мы не сообщали ранее о Hikashop 6.0, то вкратце скажем, что он вышел в июне 2025г. В новой версии было:- 13 исправлений ошибок- 17 улучшений. В частности:- - Hikashop теперь проверяет UserAgent пользователя перед добавлением товара в корзину, чтобы отсечь ботов. Ведь компонент хранит корзины в базе данных.- - улучшен роутинг компонента, позволяющий использовать в названии товара даже слеши.- - улучшения фильтра товаров - ускорение загрузки категорий/брендов/характеристик.- 4 новых функции:- - добавлена поддержка Joomla 6.0.- - Улучшена возможность адаптации форм HikaShop на фронтенде к шаблонам, не использующим стандартные классы Joomla.- - Плагин внутреннего баланса: возможность исключить уцененные товары из начисленных баллов.- - Теперь можно выбирать склады для вариантов товаров.Подробнее в Changelog Hikashop.Также при работе с Hikashop стоит учитывать, что один и тот же код поддерживает версии Joomla от 3.х до 5.х, а в таблице сравнения версий заявлена и Joomla 2.5. Беглый просмотр кода показал, что компонент как был, так и остался старым и для совместимости с Joomla 4+ просто добавлен плагин.@joomlafeed#joomla #расширения #hikashop

0 Пользователей и 1 Гость просматривают эту тему.
  • 84 Ответов
  • 22947 Просмотров
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Моя версия Joomshoping 3.3.2. У меня нет папки List_products, но почти все работает.

Такой вот вопрос - была проблема с показом Id и названий в категории товаров. Сделал так -
В файле \administrator\components\com_jshopping\controllers\products.php
Код
                else if ($v->type==2){
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'id', 'name', $product->$name);
                }
Заменить на
Код
                else if ($v->type==2){
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'name', 'name', $product->$name);
                }
Но тогда если выбран первый вариант " - - - ", то он так и будет отображаться.


Все вроде бы как получилось. В БД записано текстом "Размеры" - "Двухспальные" и "Семейные", на сайте также, на 2-ом и 3-ем товаре видно. Но фильтр ищет по Id "22" - двухспальные и "23" - семейные, что в БД я ни как не смог совместить. Как сделать что-бы фильтр искал не по ID а по так сказать надписи вместо этой ID Или что бы он искал или по Id или по Надписи

______________________________________________________________________________________________
« Последнее редактирование: 02.04.2012, 17:52:16 от leopoldus »
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Такой вот вопрос - была проблема с показом Id и названий в категории товаров. Сделал так -  
Все вроде бы как получилось. В БД записано текстом "Размеры" - "Двухспальные" и "Семейные", на сайте также, на 2-ом и 3-ем товаре видно. Но фильтр ищет по Id "22" - двухспальные и "23" - семейные, что в БД я ни как не смог совместить. Как сделать что-бы фильтр искал не по ID а по так сказать надписи вместо этой ID Или что бы он искал или по Id или по Надписи
Я просто так понимаю, Вы изначально использовали вариант, без модификаций, и у Вас в базе сохранились ID. Попробуйте для первой позиции (по скриншоту базы) пересохранить характеристики. Тогда у Вас в базе будут записи не "22,23", а "Двухспальное,Семейное"
P.S. Заметил, что у Вас в списке товаров, в характеристиках нет пробела после запятой, значит за их вывод отвечает другой файл (не list_products/product.php). Думаю завтра посмотреть для версии 3.3.2 какой файл модифицировать.
« Последнее редактирование: 02.04.2012, 20:59:11 от Linfuby »
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Я их поменял для наглядности... Получается так , когда в фильтре выбираешь "Двухспальное" и "Семейное", то находит только товары , в кратком описании которых написано 22, 23, тоесть фильтр ищет не по надписи как хотелось бы а по ID (по цифрам). Подскажите как переделать
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Я их поменял для наглядности... Получается так , когда в фильтре выбираешь "Двухспальное" и "Семейное", то находит только товары , в кратком описании которых написано 22, 23, тоесть фильтр ищет не по надписи как хотелось бы а по ID (по цифрам). Подскажите как переделать
Ну если Вы заметили, я пока модифицировал вывод свойств. За фильтр не брался, так как его не использую.
Попробуйте заменить следующий код (после замены описанном в первом посте)
ФИЛЬТР ПО МУЛЬТИПОЛЯМ
1. \components\com_jshopping\lib\jtableauto.php
Код
        if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `id`, `type` FROM `#__jshopping_products_extra_fields`';
на
Код
        if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `name`, `type` FROM `#__jshopping_products_extra_fields`';
Если не сработает, смогу только завтра дать более детальный ответ.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Я заметил  ^-^. Попробовал изменить jtableauto.php - не работает. Но я заметил:

Если характеристика не MultySelect то фильтр находит.
Если характеристика MultySelect то фильтр не находит.

Оставляю свою ссылку на магазин  http://linens.16mb.com/index.php/posteiloebelio  для более детального примера
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Если характеристика не MultySelect то фильтр находит.
Если характеристика MultySelect то фильтр не находит.
Добавляем еще один SQL-запрос и получаем нужный результат. Тестировал на фильтре от разработчика.
jtableauto.php
Меняем
Код
        if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `id`, `type` FROM `#__jshopping_products_extra_fields`';
            $db->setQuery($q);
            $extrafields = $db->loadObjectList('id');
 
            foreach($filters['extra_fields'] as $f_id=>$vals){
                if($extrafields[$f_id]->type == 2){
                    if (is_array($vals) && count($vals)){
                        foreach($vals as $val){
                            $adv_query .= " AND FIND_IN_SET($val, prod.`extra_field_".$f_id."`) > 0";
                        }
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND FIND_IN_SET($vals, prod.`extra_field_".$f_id."`) > 0";
                    }
                }
                else{
                    if (is_array($vals) && count($vals)){
                        $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                    }
                }
            }
        }
на
Код
        if (is_array($filters['extra_fields'])){

            $q = 'SELECT `id`, `'.$lang->get('name').'` as name, `type` FROM `#__jshopping_products_extra_fields`';
            $db->setQuery($q);
            $extrafields = $db->loadObjectList('id');

            foreach($filters['extra_fields'] as $f_id=>$vals){
                if($extrafields[$f_id]->type == 2){
            $q = 'SELECT `id`, `'.$lang->get('name').'` as name FROM `#__jshopping_products_extra_field_values` WHERE field_id='.$extrafields[$f_id]->id;
            $db->setQuery($q);
            $extrafieldsname = $db->loadObjectList('id');
                    if (is_array($vals) && count($vals)){
                        foreach($vals as $val){
                        $valname = $extrafieldsname[$val]->name;
                            $adv_query .= " AND FIND_IN_SET('$valname', prod.`extra_field_".$f_id."`) > 0";
                        }
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND FIND_IN_SET($vals, prod.`extra_field_".$f_id."`) > 0";
                    }
                }
                else{
                    if (is_array($vals) && count($vals)){
                        $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                    }
                }
            }
        }
P.S. Странно, что Аркадий не участвует.
P.P.S. Код немного модифицирован (11:40 03.04.2012)
« Последнее редактирование: 03.04.2012, 11:41:05 от Linfuby »
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А чего странного, у меня работает в исходном варианте, а магазин я уже обновлять не буду, разве что на другом проекте.
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
 :D Вау, вау, вау, все работает. Ночью тоже пробовал сделать, но как то потерялся в коде...

Linfuby - люблю тебя! ^-^

Arkadiy у вас все работает на версии 3.3.0 ?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

pyh

  • Захожу иногда
  • 117
  • 11 / 0
Только сейчас заметил.

Фильтр работает странно.

При выборе 2х характеристик диапазон поиска не расширяется, а наоборот сужается, то есть если из
списка выбрать товары с характеристиками "зеленый" и "красный", то фильтр не выдаст ничего ибо будет искать товары в которых есть обе характеристики.

А было бы логично получить выборку "зеленых" и "красных" товаров

Нужны идеи как исправить :)
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
1.
Фильтр работает странно.
...
Нужны идеи как исправить :)
Это относится к другой теме - Работа фильтра. Тут надо править модуль фильтра.
2. Найдено решение, для отображения в админке существующих характеристик товара.
Файл \administrator\components\com_jshopping\controllers\products.php
Меняем
Код
                else if ($v->type==2){
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'name', 'name', $product->$name);
                }
На
Код
                else if ($v->type==2){
                    $names = Explode(",", $product->$name);
                    $obj->values = JHTML::_('select.genericlist', array_merge($f_option, $tmp), $name.'[]', 'multiple="multiple" size="10"', 'name', 'name', $names);
                }
3.
А чего странного, у меня работает в исходном варианте, а магазин я уже обновлять не буду, разве что на другом проекте.
Я понял почему у Вас работает и нашел у себя изначальную ошибку, из-за которой мне пришлось внести множество изменений.
Однако в Вашем случае в базе хранятся id характеристики, а у меня Имя, благодаря этому, мне проще импортировать множество товаров с характеристиками вписывая их название, а не id.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

pyh

  • Захожу иногда
  • 117
  • 11 / 0
1.Это относится к другой теме - Работа фильтра. Тут надо править модуль фильтра.


ЭТО ОТНОСИТСЯ К ЭТОЙ ТЕМЕ.

Потому-что данный эффект возникает только при выборе мультихарактеристик.

При выборе обычных характеристик (селектов) фильтр работает нормально.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
3.Я понял почему у Вас работает и нашел у себя изначальную ошибку, из-за которой мне пришлось внести множество изменений.
Однако в Вашем случае в базе хранятся id характеристики, а у меня Имя, благодаря этому, мне проще импортировать множество товаров с характеристиками вписывая их название, а не id.
Это же вопрос к импортеру, все можно сделать и так и эдак, но если хранить иды - это будет правильнее и экономнее.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Это же вопрос к импортеру, все можно сделать и так и эдак, но если хранить иды - это будет правильнее и экономнее.
Я и являюсь импортером. Надо пересмотреть способ сохранения данных (вместо строк записывать id).
Однако последнее мое исправление Вам в любом случае пригодится...
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Не, ты не импортер, ты вводишь данные, а интерпретирует скрипт, который и надо подкрутить.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Не, ты не импортер, ты вводишь данные, а интерпретирует скрипт, который и надо подкрутить.
Ну скрипт то мною написан.
Хотелось бы услышать мнение на счет последнего исправления.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Я не проверял, и не скоро буду.
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Здравствуйте еще раз.

Вопрос по фильтру Джумшопинга. Я сделал мультивыбор характеристик, все норм кроме одного:

Как уже было замечено
Только сейчас заметил.

Фильтр работает странно.

При выборе 2х характеристик диапазон поиска не расширяется, а наоборот сужается, то есть если из
списка выбрать товары с характеристиками "зеленый" и "красный", то фильтр не выдаст ничего ибо будет искать товары в которых есть обе характеристики.

А было бы логично получить выборку "зеленых" и "красных" товаров

Нужны идеи как исправить :)

Вот как это выглядит:
1. Захожу в какую нибудь категорию товара

2. Клацаю "полуторное". пока что все нормально работает.

3. Клацаю второй размер "Двухспальное". И получается что, фильтр выбирает только те товары в которых есть и "двухспальное" и "полуторное". Остальные, просто "поуторные" фильтр выбрасывает


Прилагаю ссылку на эту категорию для понятливости   http://linens.16mb.com/index.php/pike
*

fliginskih

  • Захожу иногда
  • 197
  • 15 / 1
попробуйте обычным фильтром (без хака, которой описывается в этой теме)
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
попробуйте обычным фильтром (без хака, которой описывается в этой теме)

Я попробовал установить заново JoomShopping_filter-3.4.0 и JoomShopping_filter-2.7.0 проблема НЕ В НЁМ.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Мультихарактеристики на то и мульти, что в них может быть выбрано несколько значений, и логика фильтра, как фильтра, с каждым нажатием уменьшать кол-во отобранных товаров, а не наоборот.
*

fliginskih

  • Захожу иногда
  • 197
  • 15 / 1
Мультихарактеристики на то и мульти, что в них может быть выбрано несколько значений, и логика фильтра, как фильтра, с каждым нажатием уменьшать кол-во отобранных товаров, а не наоборот.

Тогда по вашему фильтр "противоречит" самому себе.

Зачем делать мультивыбор, если нельзя получить "мультирезультат".
пример
--
Характеристика: цвет
опция: красный
опция: синий
--

Учитывая, что будет действовать мультивыбор, я захочу посмотреть товары красного И синего цвета (в одном списке). На то он и "мульти"
Мой фильтр так и работает. (хак этой темы не применял)
*

fliginskih

  • Захожу иногда
  • 197
  • 15 / 1
Я попробовал установить заново JoomShopping_filter-3.4.0 и JoomShopping_filter-2.7.0 проблема НЕ В НЁМ.

Толку, что вы перестанавливали модуль. Вы же ядро компонента магазина "хакали" по инструкции в этой теме.
*

Backer

  • Новичок
  • 1
  • 0 / 0
Извините за оффтоп.

Linfuby,
Очень понравилось Ваше решение, что в БД записывается имя характеристики, а не ID.
Но из-за проблемы с фильтром описанным выше, нет смысла в этом хаке.
Можно ли изменить стандартный jtableauto.php, чтобы он искал по имени, а не ID, мультихарактеристики мне не нужны.
Кстати без хака jtableauto.php фильтр находит в мультихарактеристиках только первое значение. Например у товара цвет красный и синий, то выводит только красный. Версия JoomShopping-3.5.1 и фильтра 3.0.1.

Или оформить решение в другой теме, для хранения в таблице #_jshopping_products имён характеристик и фильтрации товара по имени. Для удобства импорта. В основном товар шины и диски, и в БД всё равно будут храниться числа.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Или оформить решение в другой теме, для хранения в таблице #_jshopping_products имён характеристик и фильтрации товара по имени. Для удобства импорта.
Решения не будет, только потому что это действительно неправильно хранить в таблице имена характеристик. Я столкнулся с большими проблемами, когда один товар имеет много характеристик (Например список тканей из которых может быть сшита вещь). Они у меня просто не умещались в 255 символов, после чего я начал использовать Мультихарактеристики в оригинале.
А для удобства импорта советую использовать платные решения, где характеристики можно указывать словами (Цвет:Красный,Синий), а не цифрами (1,2).
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

pyh

  • Захожу иногда
  • 117
  • 11 / 0
Фильтр заработал правильно.
Теперь при выборе нескольких мультихарактеристик показывает все товары с этими х-ми.

Последний пункт из первого сообщения

ФИЛЬТР ПО МУЛЬТИПОЛЯМ

1. \components\com_jshopping\lib\jtableauto.php

Код: php
        if (is_array($filters['extra_fields'])){
            foreach($filters['extra_fields'] as $f_id=>$vals){
                if (is_array($vals) && count($vals)){
                    $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                }elseif(is_string($vals) && $vals!=""){
                    $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                }
            }
        }
      
меняем на

Код: php
       if (is_array($filters['extra_fields'])){
 
            $q = 'SELECT `id`, `type` FROM `#__jshopping_products_extra_fields`';
            $db->setQuery($q);
            $extrafields = $db->loadObjectList('id');
 
            foreach($filters['extra_fields'] as $f_id=>$vals){
                if($extrafields[$f_id]->type == 2){
                    if (is_array($vals) && count($vals)){
$adv_query.=" and ( 1=0 ";
                        foreach($vals as $val){
                            $adv_query .= " OR FIND_IN_SET($val, prod.`extra_field_".$f_id."`) > 0";
                        }
$adv_query.=" ) ";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " OR FIND_IN_SET($vals, prod.`extra_field_".$f_id."`) > 0";
                    }
                }
                else{
                    if (is_array($vals) && count($vals)){
                        $adv_query .= " AND prod.`extra_field_".$f_id."` in (".implode(",",$vals).")";
                    }elseif(is_string($vals) && $vals!=""){
                        $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                    }
                }
            }
        }


проверялось и работает на Joomla 2.5.1  + JoomShopping 3.5.0
*

stparts

  • Захожу иногда
  • 109
  • 1 / 0
Извиняюсь, за глупый вопрос. Первое сообщение обновляется? Оно дополненно последними наработками, к примеру из сообщения pyh ?
Я пытаюсь разобраться, далёк от этого. Нужно сделать мультивыбор, для магазина автомобильных дисков.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Нет, первое сообщение не обновляется.
*

leopoldus

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Фильтр заработал правильно.
Теперь при выборе нескольких мультихарактеристик показывает все товары с этими х-ми.

Пожалуйста дай свои файлики \components\com_jshopping\. Я уже 4 неделю не могу исправить фильтр, поставил такие же версии как у тебя и внес твои правки, но безрезультатно. Вышли файлики, ПОЖАЛУЙСТА. leopolds2010@gmail.com
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Для тех, кто не хочет менять код ядра компонента, может пригодится готовое решение.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться