Форум русской поддержки Joomla!® CMS
03.12.2016, 15:37:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Вывести в списке товаров атрибуты

 (Прочитано 2050 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« : 03.10.2013, 13:01:29 »

Доброго.

Делается: магазин детскои одежды.

Размеры созданы атрибутами - атрибут размер, соответственно - значения.

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

http://www.kinderly.ru/collection/platya-i-sarafany

Нужна подсказка - как вытащить эти самые атрибуты из базы?
Записан
frag79
Завсегдатай
*****

Репутация: +61/-0
Offline Offline

Пол: Мужской
Сообщений: 597


« Ответ #1 : 03.10.2013, 13:40:20 »

Вот тут обсуждалось Как вынести атрибуты в список товаров?
Записан
frag79
Завсегдатай
*****

Репутация: +61/-0
Offline Offline

Пол: Мужской
Сообщений: 597


« Ответ #2 : 03.10.2013, 14:46:23 »

По примеру походу не надо класть в корзину из категории, а только выводить
Тогда можно делать запрос в БД из components\com_jshopping\templates\default1\list_products\product.php
по id товара выбирать его атрибуты.

Для независимых запрос примерно такой. Пробовал через phpMyAdmin вроде работает правильно.
 
Код
SELECT `name_ru-RU` 
FROM r04oc_jshopping_attr_values AS atv
INNER JOIN r04oc_jshopping_products_attr2 AS attr
ON atv.value_id=attr.attr_value_id
WHERE attr.product_id=1
 

Ну а как его применить думаю разберетесь  Smiley
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #3 : 03.10.2013, 16:23:32 »

фишка в том, что еще нужно отсортировать по наличию на складе и вывести только те, что в наличии есть. Простои строкои. Составить запрос я могу, я не очень как раз представляю себе как его использовать в Jshopping, ибо с ним совсем не знакома(
Записан
nevigen
Moderator
*****

Репутация: +734/-16
Offline Offline

Пол: Мужской
Сообщений: 8803


http://n*****n.com


« Ответ #4 : 03.10.2013, 16:25:28 »

есть аддон AJAX корзины у Максов, позволяет выбирать атрибуты в категории.
Если ставить в настйроках скрывать товары которых нет в наличии, то атрибуты будут скрыты.

не уверен возможно это сработает и на описанном методе... надо проверять смотреть.
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #5 : 03.10.2013, 21:09:22 »

Цитировать
я не очень как раз представляю себе как его использовать в Jshopping

в чем именно сложность?
Записан
frag79
Завсегдатай
*****

Репутация: +61/-0
Offline Offline

Пол: Мужской
Сообщений: 597


« Ответ #6 : 04.10.2013, 00:14:51 »

фишка в том, что еще нужно отсортировать по наличию на складе и вывести только те, что в наличии есть. Простои строкои. Составить запрос я могу, я не очень как раз представляю себе как его использовать в Jshopping, ибо с ним совсем не знакома(

А разве в Jshopping можно выставлять количество товара для каждого атрибута?
Записан
ELLE
Support Team
*****

Репутация: +862/-0
Offline Offline

Пол: Женский
Сообщений: 4723



« Ответ #7 : 04.10.2013, 00:20:26 »

А разве в Jshopping можно выставлять количество товара для каждого атрибута?
можно, но это оффтоп уже Azn
можно задавать и кол-во, и цену, и артикул, и вес, и картинки - http://prntscr.com/1v2irc
Записан
frag79
Завсегдатай
*****

Репутация: +61/-0
Offline Offline

Пол: Мужской
Сообщений: 597


« Ответ #8 : 04.10.2013, 10:54:18 »

можно, но это оффтоп уже Azn
можно задавать и кол-во, и цену, и артикул, и вес, и картинки - http://prntscr.com/1v2irc

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

Можно наверно покурить над тем как JS выводит список, и пытаться вытянуть его в категорию. Для меня проще запросом сделать.
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #9 : 04.10.2013, 11:30:11 »

Цитировать
Составить запрос я могу, я не очень как раз представляю себе как его использовать в Jshopping

Taatshi, что именно вызывает сложность? не знаете, в каких файлах вывод? или что? что имеется в виду под "как его использовать в Jshopping" ?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #10 : 04.10.2013, 12:17:57 »

dmitry_stas, пока отложили вопрос - это была хотелка на "если несложно" - в бюджет и в техзадание не входит. Сдам саит, если будет время свободное - вернусь к вопросу.
Записан
Виталик
Группа развития
*****

Репутация: +123/-0
Offline Offline

Пол: Мужской
Сообщений: 1208



« Ответ #11 : 21.12.2013, 13:57:08 »

dmitry_stas, пока отложили вопрос - это была хотелка на "если несложно" - в бюджет и в техзадание не входит. Сдам саит, если будет время свободное - вернусь к вопросу.
сейчас делаю плагин для вывода атрибутов в списке товаров, хочу сделать его универсальным
скажите какие бы вам потребовались настройки этого плагина?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #12 : 22.12.2013, 11:01:52 »

Виталик, лично мне с моим заданием хватило бы значения атрибута и все. Если делать универсальнее - было бы неплохо так

Название: размер
Значение: 108
Количество: 5шт
Цена: 5600руб

Естественно, с настройками: показывать-не показывать

Это навскидку. Можно посидеть подумать еще..
Записан
Brooksus
Завсегдатай
*****

Репутация: +152/-0
Offline Offline

Пол: Мужской
Сообщений: 594


Ща спою...


« Ответ #13 : 22.12.2013, 12:04:22 »

http://joomlaforum.ru/index.php/topic,281541.0.html
Мне кажется, что было бы удобно, если предоставить возможность в админке выбирать для каких товаров показывать.
И еще у меня они сделаны таблицей, а лучше в дивах (у меня руки все не доходят переделать)
« Последнее редактирование: 22.12.2013, 13:11:05 от Brooksus » Записан
Виталик
Группа развития
*****

Репутация: +123/-0
Offline Offline

Пол: Мужской
Сообщений: 1208



« Ответ #14 : 22.12.2013, 12:10:43 »

Мне кажется, что было бы удобно, если предоставить возможность в админке выбирать для каких товаров показывать.
где именно в админке?
Записан
Brooksus
Завсегдатай
*****

Репутация: +152/-0
Offline Offline

Пол: Мужской
Сообщений: 594


Ща спою...


« Ответ #15 : 22.12.2013, 12:12:51 »

Ну, где-нибудь в карточке товара на вкладке атрибутов.
И, естественно, для универсальности, что бы ссылка "купить" при выборе атрибутов работала независимо от наличия и вида модуля корзины.
« Последнее редактирование: 22.12.2013, 13:28:14 от Brooksus » Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #16 : 13.04.2016, 23:59:35 »

Итак, вернемся к нашим баранам)

Код
 
  <?php print $attribut->selects?>            
 

выводит атрибуты селектом. Как бы нам это превратить в простое перечисление через запятую?
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #17 : 14.04.2016, 00:11:17 »

ого отложили на 2.5 года вопрос Azn

а что перечислить то через запятую? значения, наименования?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #18 : 14.04.2016, 00:46:27 »

Эт уже другой сайт - я свою тему в Google нашла)))

Мне, собственно, нужен только один атрибут - и я его уже по условию вывела. Но селектом. Из селекта в список нужно вывести значения.
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #19 : 14.04.2016, 00:54:18 »

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

Код:
preg_match_all('~<option value="([^"]+)">([^<>]+)</option>~', $attribut->selects, $match, PREG_SET_ORDER);
print_r($match);

в $match все, но нужное думаю уже сама отберешь Azn
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #20 : 14.04.2016, 01:08:55 »

Это просто ужас, ужас))) Пойду отбирать) Или лучше сначала напьюсь)

Сначала проверю кое-что. Иначе у меня потом будут нерешаемые проблемы с порядком вывода. Так что дальше завтра.
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #21 : 14.04.2016, 01:15:22 »

так, в чем дело? Azn там массив обычный, что то типа
Показать текстовый блок

так что не выдумывай ужасов Azn
Записан
dexterkirov
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 44


« Ответ #22 : 14.04.2016, 01:35:01 »

Из массива по ключу нужный атрибут. Попробуйте через var_dump найти нужный ключ. В массиве есть все.
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #23 : 14.04.2016, 12:36:21 »

Ну, как-то так...  Smiley
Код
<?php
   //Получаем значения атрибутов для товара
   $table_product = JTable::getInstance('product', 'jshop');
   $table_product->load($product->product_id);
   $table_attributes ;
   $attributesDatas = $table_product->getAttributesDatas($back_value['attr']);
   $table_product->setAttributeActive($attributesDatas['attributeActive']);
   $attributeValues = $attributesDatas['attributeValues'];
   $attributes = $table_product->getBuildSelectAttributes($attributeValues, $attributesDatas['attributeSelected']);
   if (count($attributes)){
       $_attributevalue = JTable::getInstance('AttributValue', 'jshop');
       $all_attr_values = $_attributevalue->getAllAttributeValues();
   }else{
       $all_attr_values = array();
   }
   ?>
   <?php
   //условие: если атрибуты для товара существуют
   if (count($attributes)){?>
       <div class="jshop_prod_attributes">
               <?php //перебираем массив атрибутов
               foreach($attributes as $attribut){?>
                     <?php //Мне нужен был только один атрибут - размер. Поэтому проводим проверку по условию.
                           //Лучше было бы, конечно, по ID атрибута, но мне нужно отсортировать два разных атрибута с одним названием, так что мне проще по названию
                           if ($attribut->attr_name == "Размер" ):?>
                               <div class='block_attr_sel attr<?php print $attribut->attr_id?>'>
                               <?php //с помощью регулярки удаляем все лишнее, что формирует атрибуты как выпадающий список - оставляем только чистый массив данных
                                preg_match_all('~<option value="([^"]+)">([^<>]+)</option>~', $attribut->selects, $match, PREG_SET_ORDER);
                                //удаляем первое значение - в нашем массиве это слово "выберите"
                                array_shift($match);
                                     //и, наконец, выводим наши многострадальные размеры. Ура и алиллуйя) И спасибо dmitry_stas за регулярку :-*
                                     foreach ($match as $k){
                                        //У меня тут в ключе двоечка - у вас может быть совершенно другое значение
                                        echo '&nbsp;'.$k[2].'&nbsp;';
                                     }?>
                                   </div>
                           <?php endif;?>
               <?php }?>
       </div>
   <?php }?>
 
« Последнее редактирование: 14.04.2016, 12:42:10 от Taatshi » Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #24 : 15.04.2016, 12:17:48 »

что то уж очень запутано итого... но блин времени нет совсем сейчас, чуть позже вникну если не забуду Azn
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #25 : 15.04.2016, 14:07:39 »

У меня есть великие сомнения насчет первой половины кода - где атрибуты получаем. Все остальное сугубо индивидуально и там мне все понятно. Вроде все норм.
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #26 : 04.05.2016, 14:32:46 »

Опять вернемся к нашим баранам

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

Код
array_shift($match);

Первое значение из списка все равно удаляется. К примеру в товаре атрибуты размера s, xs, l - выводится все, кроме s

Порылась-покопалась, но так и не разобралась  Sad
« Последнее редактирование: 04.05.2016, 14:44:13 от Taatshi » Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #27 : 04.05.2016, 14:41:04 »

а что содержит $attribut->selects до вызова preg_match_all ?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Online Online

Пол: Женский
Сообщений: 4712

Мама, я снова верстал во сне...


« Ответ #28 : 04.05.2016, 14:44:58 »

Его нет в получаемом нами после регулярки массиве. В самом начале после foreach($attributes as $attribut) значение есть.
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #29 : 04.05.2016, 14:52:39 »

покажи, может там не соответствует регулярке первая опция?
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet