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

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

Вывести определённую характеристику отдельно от списка характеристик товара

 (Прочитано 3361 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Silent_Breeze
Осваиваюсь на форуме
***

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

Сообщений: 168



« : 11.06.2013, 14:12:12 »

Как можно реализовать вывод определённой, нужной характеристики отдельно от всех характеристик определённого товара?
Пример:
Есть характеристики:
Вес (г) (id характеристики - 10)
Шариковые подшипники (id характеристики - 11)
Роликовые подшипники (id характеристики - 12)
Емкость шпули (мм/м) (id характеристики - 13)
Передаточное число (id характеристики - 14)
Длина лески за оборот ручки (см) (id характеристики - 15)
Шпуль в комплекте (id характеристики - 16)

Вот нужно, что бы (например в категории (список товаров)) можно было сделать вывод характеристик с id 10-15, потом идёт какой-то текст, картинка, и после них имя характеристики с id 16 и значение характеристики с id 16

Надеюсь не сильно путанно расписал?
Записан
dmitry_stas
Профи
********

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

Сообщений: 7743



« Ответ #1 : 12.06.2013, 18:06:37 »

в файле \components\com_jshopping\templates\default\product\product_default.php характеристики выводятся в цикле

Код:
        <?php $extra_field_group = "";
        foreach($this->product->extra_field as $extra_field){
            if ($extra_field_group!=$extra_field['groupname']){
                $extra_field_group = $extra_field['groupname'];
            ?>
            <div class='extra_fields_group'><?php print $extra_field_group?></div>
            <?php }?>
            <div><span class="extra_fields_name"><?php print $extra_field['name'];?></span><?php if ($extra_field['description']) {?> <span class="extra_fields_description"><?php print $extra_field['description'];?></span><?php } ?>: <span class="extra_fields_value"><?php print $extra_field['value'];?></span></div>
        <?php }?>

проверяйте нужные вам, отсеивайте. можете разместить этот код в двух местах, в первый раз вывести одни, потом другие
Записан
Silent_Breeze
Осваиваюсь на форуме
***

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

Сообщений: 168



« Ответ #2 : 13.06.2013, 03:16:45 »

Так где они выводятся я знаю..., мне бы кусок кода, что б вывести именно характеристику с id 16 в нужном месте строки товара (в листинге товаров).... На данный момент у меня для каждой характеристики задано:
display: table-cell; mih-width: 65px; max-width: 150 px; vertica-align: middle; text-align: center; и т.д..., и они выводятся в ряд, почти таблица получается, но не очень красиво..., вот если б для каждой характеристики можно было свой стиль задать...
« Последнее редактирование: 13.06.2013, 04:16:14 от Silent_Breeze » Записан
dmitry_stas
Профи
********

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

Сообщений: 7743



« Ответ #3 : 13.06.2013, 19:03:41 »

в общем.  в списке товаров отсутсвует id для характеристик. чтобы он появился - надо поправить файл \components\com_jshopping\lib\functions.php функцию getProductExtraFieldForProduct($product)
в частности, в строке
Код:
$rows[] = array("name"=>$fields[$field_id]->name, "description"=>$fields[$field_id]->description, "value"=>$extra_field_value);
добавить "id"=>$field_id

или  так можно
Код:
$rows[$field_id] = array("name"=>$fields[$field_id]->name, "description"=>$fields[$field_id]->description, "value"=>$extra_field_value);

, но тогда при переборе надо будет foreach($product->extra_field as $id=>$extra_field) и выводить $id
« Последнее редактирование: 13.06.2013, 20:17:28 от nevigen » Записан
Silent_Breeze
Осваиваюсь на форуме
***

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

Сообщений: 168



« Ответ #4 : 13.06.2013, 19:20:50 »

Ну наконец-то... Спасибо огромное...
Вот что вставил в components/com_jshopping/lib/functions.php строка 760
Код:
$rows[] = array("id"=>$fields[$field_id]->id, "name"=>$fields[$field_id]->name, "description"=>$fields[$field_id]->description, "value"=>$extra_field_value);
            }
        }else{
            if ($product->$field_name!=""){
                $rows[] = array("id"=>$fields[$field_id]->id, "name"=>$fields[$field_id]->name, "description"=>$fields[$field_id]->description, "value"=>$product->$field_name);

В components/com_jshopping/templates/default/list_products/product.php вставил со строки 12:
Код:
<?php if (is_array($product->extra_field)){?>
            <div style="display: inline-block; vertical-align: top;">
            <?php foreach($product->extra_field as $extra_field){?>
<div style="display: inline-block;" class="charact<?php print $extra_field['id']; ?>"><?php print $extra_field['value']; ?></div>
            <?php }?>
            </div>
        <?php }?>

Ещё раз спасибо за помощь.
Записан
Jsc
Захожу иногда
**

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

Сообщений: 14


« Ответ #5 : 23.06.2013, 19:31:32 »

Здравствуйте. Не подскажете как именно в карточке товара вывести характеристики не все сразу, а частями в разных местах?
Записан
Silent_Breeze
Осваиваюсь на форуме
***

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

Сообщений: 168



« Ответ #6 : 24.06.2013, 02:47:16 »

В карточке товара, если воспользоваться вышеприведённым примером, можно организовать вывод характеристик описывая каждую(или только необходимую) характеристику в файле стилей шаблона.
Например:
Открываем файл по пути: корень сайта/components/com_jshopping/templates/default/product/product_default.php
Строка примерно 194:
Код:
<div class="extra_fields">
        <?php $extra_field_group = "";
        foreach($this->product->extra_field as $extra_field){
            if ($extra_field_group!=$extra_field['groupname']){
                $extra_field_group = $extra_field['groupname'];
            ?>
            <div class='extra_fields_group'><?php print $extra_field_group?></div>
            <?php }?>
            <div><span class="extra_fields_name"><?php print $extra_field['name'];?></span><?php if ($extra_field['description']) {?> <span class="extra_fields_description"><?php print $extra_field['description'];?></span><?php } ?>: <span class="extra_fields_value"><?php print $extra_field['value'];?></span></div>
        <?php }?>
        </div>
меняем на:
Код:
<div class="extra_fields">
        <?php $extra_field_group = "";
        foreach($this->product->extra_field as $extra_field){
            if ($extra_field_group!=$extra_field['groupname']){
                $extra_field_group = $extra_field['groupname'];
            ?>
            <div class='extra_fields_group'><?php print $extra_field_group?></div>
            <?php }?>
            <div class="character<?php print $extra_field['id'];?>"><span class="extra_fields_name"><?php print $extra_field['name'];?></span><?php if ($extra_field['description']) {?> <span class="extra_fields_description"><?php print $extra_field['description'];?></span><?php } ?>: <span class="extra_fields_value"><?php print $extra_field['value'];?></span></div>
        <?php }?>
        </div>
Соответственно после этих манипуляций мы получим для каждой характеристики свой div с классом character(id характеристики).
Т.е. если у нас есть характеристика с id=16 (например кол-во запасных болтов),  то мы получим в коде страницы div class="character16". Соответственно характеристика "кол-во запасных болтов" будет выводиться у нас в диве с классом "character16".
Пишем оформление для этой характеристики в CSS файле шаблона. Например:
Код:
div.character16 {
dispaly: block или как нужно;
position: relative или absolute, или вообще не пишем, в зависимости от наших нужд;
width: сколько нужно;
height: сколько нужно;
left: ставим где нужно;
top: ставим где нужно;
и т.д.
и т.п.
}

Надеюсь не сильно путанно объяснил?
« Последнее редактирование: 24.06.2013, 03:19:15 от Silent_Breeze » Записан
jorevo
Завсегдатай
*****

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

Сообщений: 606


« Ответ #7 : 17.10.2013, 13:01:13 »

в общем.  в списке товаров отсутсвует id для характеристик. чтобы он появился - надо поправить файл \components\com_jshopping\lib\functions.php функцию getProductExtraFieldForProduct($product)
в частности, в строке
Код:
$rows[] = array("name"=>$fields[$field_id]->name, "description"=>$fields[$field_id]->description, "value"=>$extra_field_value);
добавить "id"=>$field_id

А чтобы в карточке товара к характеристике по id обратиться эта правка нужна?
Записан
dmitry_stas
Профи
********

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

Сообщений: 7743



« Ответ #8 : 17.10.2013, 13:08:37 »

нет
Записан
jorevo
Завсегдатай
*****

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

Сообщений: 606


« Ответ #9 : 17.10.2013, 13:31:51 »

Немного не верно сформулировал вопрос. Почему в карточке товара можно обратиться по id, а из списка товара нельзя? Вопрос не в идеологии, а в технической реализации. Для списка товаров массив параметров передаётся из функции \components\com_jshopping\lib\functions.php функцию getProductExtraFieldForProduct($product). А в карточку товара откуда?
Записан
dmitry_stas
Профи
********

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

Сообщений: 7743



« Ответ #10 : 17.10.2013, 13:48:17 »

\components\com_jshopping\tables\product.php function getExtraFields
Записан
jorevo
Завсегдатай
*****

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

Сообщений: 606


« Ответ #11 : 17.10.2013, 14:13:14 »

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

ЗЫ. А вот ещё вижу, что и группы характеристик в список товаров тоже не передаются... значит ещё одни костыли вставлять придётся.
Записан
devul
Давно я тут
****

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

Сообщений: 288


если помог можете поставить +


« Ответ #12 : 18.10.2013, 16:47:14 »

сделано это для оптимизации. Вы посмотрите print_r что вообще получается и поймете что если для одного товара это еще терпимо, то  когда у вас список из 50 товаров на странице то "лишних" данных получается уже много.
Записан
denjer
Осваиваюсь на форуме
***

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

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


« Ответ #13 : 29.01.2014, 19:59:22 »

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

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

Сообщений: 7743



« Ответ #14 : 29.01.2014, 20:26:57 »

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

прочел тему так и не понял, знаний php уже наверно не хватает
скорее правильно будет "знаний php еще наверно не хватает". Azn чтобы это недоразумение исправить, заваривайте кофе/чай, усаживайтесь поудобнее и читайте тему еще столько раз, сколько потребуется чтобы понять. потому что добавить к сказанному как бы особо нечего, все и так вроде, что надо сделать, написано. дальше - только взять и сделать
Записан
Silent_Breeze
Осваиваюсь на форуме
***

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

Сообщений: 168



« Ответ #15 : 10.04.2014, 23:50:51 »

В JoomShopping 4.x.x вышеописанный вариант тоже работает..., но номера строк немного другие...
« Последнее редактирование: 11.04.2014, 02:27:19 от Silent_Breeze » Записан
nevigen
Moderator
*****

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

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


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


« Ответ #16 : 11.04.2014, 08:48:10 »

Код:
<div class="extra_fields">
        <?php $extra_field_group = "";
        foreach($this->product->extra_field as $extra_field){
вставить ---> if ($extra_field["id"] != ID нужной хар-ки ) continue;
            if ($extra_field_group!=$extra_field['groupname']){
                $extra_field_group = $extra_field['groupname'];
            ?>
            <div class='extra_fields_group'><?php print $extra_field_group?></div>
            <?php }?>
            <div><span class="extra_fields_name"><?php print $extra_field['name'];?></span><?php if ($extra_field['description']) {?> <span class="extra_fields_description"><?php print $extra_field['description'];?></span><?php } ?>: <span class="extra_fields_value"><?php print $extra_field['value'];?></span></div>
        <?php }?>
</div>
Записан
Grikhno
Осваиваюсь на форуме
***

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

Сообщений: 38



« Ответ #17 : 19.06.2014, 13:01:11 »

Подскажите пожалуйста как можно решить следующую задачу - мне нужно вставить значение определенной характеристики в ссылку. Чтобы в открывающемся по нажатию этой ссылки калькуляторе, сразу было задано нужное значение.  !
Записан
3gger
Новичок
*

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

Сообщений: 1


« Ответ #18 : 01.07.2014, 22:01:29 »

Как реализовать в JoomShoping такое: при выборе определенного чекбокса выводится дополнительные атрибуты. Как здесь, т.е. включен по умолчанию "на подрамнике", а при выборе "выбрать багет" появляется виды багета и добавляется стоимость
http://neoportret.ru/images/1.jpg
http://neoportret.ru/images/2.jpg
« Последнее редактирование: 04.07.2014, 12:43:09 от 3gger » Записан
nevigen
Moderator
*****

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

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


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


« Ответ #19 : 01.07.2014, 23:02:44 »

поправьте пжлст свой пост в соответствии с правилами форума.
прочитайте внимательно требования к картинкам.
иначе просто удалю пост.
Записан
damm88
Захожу иногда
**

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

Сообщений: 20


« Ответ #20 : 21.08.2014, 13:16:11 »

Подскажите, пожалуйста, почему у меня в списке товаров выводятся только первые 3 характеристики ? Нигде не вижу числа 3.. в карточке товара выводятся все характеристики.
Записан
dmitry_stas
Профи
********

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

Сообщений: 7743



« Ответ #21 : 21.08.2014, 13:21:23 »

/administrator/index.php?option=com_jshopping&controller=config&task=catprod - какие отмечены в блоке списка товаров, такие и выводятся
Записан
damm88
Захожу иногда
**

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

Сообщений: 20


« Ответ #22 : 21.08.2014, 13:23:38 »

Спасибо огромное ! Извиняюсь за флуд. Но работают ли сообщения на форуме ? я хотел написать по доработкам, пишу письмо, а в исходящих оно не отображается.
« Последнее редактирование: 21.08.2014, 13:31:23 от damm88 » Записан
Linfuby
Живу я здесь
******

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

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


Всё просто...


« Ответ #23 : 21.08.2014, 14:29:49 »

Когда пишете письмо там есть галочка "Сохранять в исходящих" Если не поставили, то в исходящих оно не сохраняется. Я сам не понимаю почему так сделано.
Записан
dron
Живу я здесь
******

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

Сообщений: 1080


« Ответ #24 : 25.03.2015, 11:51:52 »

Доброго дня!

У меня на главной выводится список товаров, и хотелось бы там под картинками выводить 2-3 основные характеристики. Как я понимаю, то что здесь описано мне как раз поможет?
Записан
nevigen
Moderator
*****

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

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


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


« Ответ #25 : 25.03.2015, 19:35:58 »


У меня на главной выводится список товаров, и хотелось бы там под картинками выводить 2-3 основные характеристики. Как я понимаю, то что здесь описано мне как раз поможет?
в настройках задать хар-ки которые выводятся в категории.
Записан
baskak
Новичок
*

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

Сообщений: 7


« Ответ #26 : 08.10.2016, 23:36:09 »

Доброго времени суток. Форумчане, подскажите как мне сделать вывод характеристик в таблицу. Т.е есть таблица где 4 столбца основные, а 6 столбцов характеристики. Дело в том что, если для товара нет характеристики, то он не выводит ячейку таблицы и таблица становится не пойми на что похожа. Что делать?
Записан
dmitry_stas
Профи
********

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

Сообщений: 7743



« Ответ #27 : 09.10.2016, 19:03:02 »

покажите код, как выводите характеристики
Записан
baskak
Новичок
*

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

Сообщений: 7


« Ответ #28 : 09.10.2016, 19:23:50 »


   
   
 
            <?php foreach($product->extra_field as $extra_field){?>
                <td><?php print_r( $extra_field['value'])?></td>
            <?php }?>
Записан
baskak
Новичок
*

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

Сообщений: 7


« Ответ #29 : 09.10.2016, 19:30:42 »

изменения провожу в файле public_html\components\com_jshopping\templates\default3\list_products\product.php
Записан
Страниц: [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