Пересобрать select для атрибутов в карточке товара

  • 18 Ответов
  • 337 Просмотров

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

*

Оффлайн Taatshi

Имеем вывод размеров атрибутом в карточке товара. При выборе размера с количеством 0 появляется уведомление о недоступности товара. Цель - выделить размеры с количеством 0 другим цветомю чтоб сразу, еще до выбора размера было понятно - есть такой товар в наличии или нет.

Спойлер
[свернуть]

На данный момент не понятно откуда вообще этот select берется, и можно ли обойтись бе дополнительного запроса в базу данных. Надо пнуть в нужном направлении.
« Последнее редактирование: 17.12.2016, 21:50:48 от Taatshi »
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Онлайн dmitry_stas

select формируется в \components\com_jshopping\tables\product.php function getBuildSelectAttributes. надо посмотреть, что туда приходит. может как то обыграть по принципу когда в настройках установлено Скрывать товар не в наличии, и атрибут вообще не показывается.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн Taatshi

Ядро трогать не хочу. Только своим запросом?
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Онлайн dmitry_stas

ну там есть событие onBuildSelectAttribute для плагина... но надо сначала определить, что туда приходит, в метод getBuildSelectAttributes, какие данные. можно ли по ним сделать вывод, есть атрибут в наличии или нет. я не помню, а посмотреть негде сейчас.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн Taatshi

Не  знаю как посмотреть там переменные, но на затравку там вот так

Код: (php) [Выделить]
$jshopConfig = JSFactory::getConfig();
        if (!$jshopConfig->admin_show_attributes) return array();
        $dispatcher = JDispatcher::getInstance();
        $attrib = JSFactory::getAllAttributes();
$userShop = JSFactory::getUserShop();
        $selects = array();
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Оффлайн Taatshi

В общем, надо выводить селект самой.

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

в товаре по умолчанию можно раздобыть следующее

Array
(
    [0] => stdClass Object
        (
            [val_id] => 490
            [value_name] => 33.5EUR=2.5US=32.5RU
            [image] =>
            [addprice] => 0
        )

    [1] => stdClass Object
        (
            [val_id] => 491
            [value_name] => 34.0EUR=3.0US=33.0RU
            [image] =>
            [addprice] => 0
        )

    [2] => stdClass Object
        (
            [val_id] => 489
            [value_name] => 35.0EUR=3.5US=34.0RU
            [image] =>
            [addprice] => 0
        )

    [3] => stdClass Object
        (
            [val_id] => 488
            [value_name] => 36.5EUR=4.5US=35.5RU
            [image] =>
            [addprice] => 0
        )

)

Это атрибуты для данного товара. Из них в принципе можно сорганизовать селект, но нужно еще к каждому атрибуту получить его количество в админке.

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

В админке у нас один атрибут, в который собраны все опции для всех товаров. (Не спрашивайте, почему, и я не буду ругаться матом)

Спойлер
[свернуть]

Таблицы в phpMyAdmin

Спойлер
[свернуть]

Как? В каком порядке запросы слать?  >:(
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Оффлайн nevigen

  • *****
  • 8831
  • [+]771 / [-]17
  • http://n*****n.com
    • Просмотр профиля
    • Nevigen.com -разработки для Joomla
сделай атрибут радио.
и визуализируй его в виде CSS как селект.

хотя я не пойму а как ты сделаешь это для зависимых?
ведь у первого может быть да, а у второго нет.

П.С. кстати я не наю может поможет.. но есть опция скрывать недоступные, может там подсмотреть ?
« Последнее редактирование: 20.12.2016, 16:34:08 от nevigen »
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

Оффлайн Taatshi

Какая разница какой атрибут - радио или селект? Я могу сформировать что угодно, но мне инфы не хватает.

У меня один атрибут уже есть, и добавлять новые никак нельзя((
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Онлайн dmitry_stas

вообще, задача решается как раз только если 1 атрибут. если 2 и более - то уже не получится. запрос на самом деле там тоже очень простой.
SELECT attr_1, count FROM #__jshopping_products_attr WHERE product_id =  . $this->product->product_idв attr_1 единичка - это ID атрибута. судя по скринам - 1. значение в attr_1 - это то, что val_id в массиве. count - соответственно количество.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн Taatshi

Да, я себе уже почти так же составила. Вот только

Код: (php) [Выделить]
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('attr_1', 'count')));
$query->from($db->quoteName('#__jshopping_products_attr'));
$query->where($db->quoteName('product_id')." = ".$product->product_id);
$query->order('attr_1 ASC');

$db->setQuery($query);
$result = $db->loadResult();

выдает какую-то фигню(
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Онлайн dmitry_stas

Цитировать
$result = $db->loadObjectList();
спасет мать русской демократии? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн Taatshi

Вот я затууупок..... надо же было так облажаться  ;D

Копирнула чтоб не набирать вручную, и даже не посмотрела, что... :dry:
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Онлайн dmitry_stas

бывает :) получилось то итого что нужно было?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн Taatshi

А то) С таким вниманием к моей скромной персоне))))  :-*

Спойлер
[свернуть]

Кстати, я не понимаю, почему ты решил, что это возможно только для одного атрибута. Для нескольких просто добавляется сортировка по Id атрибута. Не?
« Последнее редактирование: 21.12.2016, 18:45:56 от Taatshi »
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Онлайн dmitry_stas

несколько атрибутов = несколько селектов зависимых друг от друга. например, Цвет и Размер. Зеленой футболки 38 размера может не быть, а красная 38 - есть. как показать наличие в селекте Размер 38 ? это можно сделать, но это надо добавлять тогда отбработку аяксом при изменении любого селекта
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн Taatshi

Эмм, нашла проблемку. С текстом о недоступности товара. Если у нас по умолчанию первая опция отсутствует - он и пишет "Недоступно". А надо, чтоб по умолчанию всегда было "Доступно". Ибо у меня selected всегда на первом доступном атрибуте.

Внимание, вопрос: как переопределить $this->available ?  ;D

ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Онлайн dmitry_stas

это в шаблоне все? и всегда первая опция будет доступна? так тогда просто всегда делай
$this->available  = '';:) или не выводи блок этот с недоступностью, что в принципе тоже самое.

P.S. только не весь div не выводи, а именно сам $this->available. просто убрать <?php echo $this->available ?> и все. div нужен для смены текста доступности после изменения атрибута.
« Последнее редактирование: 21.12.2016, 19:32:07 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Оффлайн Taatshi

Пашет, пасибки   *DRINK*
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Оффлайн Taatshi

UPD

Там еще трабла с выводом начальных цен получается, так что в запрос добавляем old_price и buy_price и подставляем в нужные места свои значения из активного элемента.

Спойлер
[свернуть]
« Последнее редактирование: 21.12.2016, 22:20:49 от Taatshi »
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.