Новости Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla.Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.👩‍💻 v.4.1.0. Что нового?- Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.- Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.- Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.- Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.- Множество мелких исправлений ошибок и оптимизаций.Сайт проектаGitHub расширенияСкачать#joomla #расширения

Вышел релиз Joomla 5.3.2

Релиз исправлений ошибок Joomla 5.3.2

Проект Joomla рад сообщить о выпуске Joomla 5.3.2. Это релиз исправлений ошибок для серии Joomla 5.3.

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

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Атрибуты в functions.js
« : 02.01.2015, 20:38:19 »
Всех с новым годом ! :)
Подскажите пожалуйста  в файле functions.js   где то есть определение ID атрибута ? именно та айдишка которая выделена чёрным шрифтом:

<input type="radio" name="jshop_attr_id[3]"   id="jshop_attr_id37"   value="7" onclick="setAttrValue('3', this.value);" class="checkkkkk">

Замучался мягко говоря, надо скрипт сообразить на добавления класов для label выбраного атрибута, но немагу понять как определить текущий атрибут :((
есть масив такого рода:
for(var id in attr_value){ ....  }
Но он определяет какойто нетот айдишник: ниже показываю какой:

<input type="radio" name="jshop_attr_id[3]"   id="jshop_attr_id37"   value="7" onclick="setAttrValue('3', this.value);" class="checkkkkk">

Помогите плиииз :(  Как распознать  ID  атрибута   id="jshop_attr_id37"   ??
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #1 : 02.01.2015, 22:36:00 »
Напишу что смог сделать: файл  function.js

После функции function reloadAttrValue()

Создал свою функцию:
Спойлер
[свернуть]

и обьявил её в: function reloadAttribSelectAndPrice(id_select) {  
в самом конце добавил:   addattrClass();

Сейчас добавляется клас .checkkkkk для выбранного ИНПУТА, и потом удаляется, если выбранна другая ОПЦИЯ атрибута.
До етого я немного неправильно рассуждал :(
for(var id in attr_value){.....}   - вот ето определяет ID атрибута
а Каким образом определить ID ОПЦИИ   атрибута ? с етим вся загвоздка :(    
Ниже вставлю Код из файла function.js где варится вся каша с атрибутам.   Прошу помощи, самому никак.... :(
Код
function reloadAttribSelectAndPrice(id_select){
    var product_id = jQuery("#product_id").val();
    var qty = jQuery("#quantity").val();
    var data = {};
    data["change_attr"] = id_select;
    data["qty"] = qty;    
    for(var i=0;i<attr_list.length;i++){
        var id = attr_list[i];
        data["attr["+id+"]"] = attr_value[id];
    }
    for(extdatakey in extdataurlupdateattr){
        data[extdatakey] = extdataurlupdateattr[extdatakey];
    }

    if (prevAjaxHandler){
        prevAjaxHandler.abort();
    }

    prevAjaxHandler = jQuery.getJSON(
        urlupdateprice,
        data,
        function(json){
            var reload_atribut = 0;
            for(var i=0;i<attr_list.length;i++){
                var id = attr_list[i];
                if (reload_atribut){
                    jQuery("#block_attr_sel_"+id).html(json['id_'+id]);
                }
                if (id == id_select) reload_atribut = 1;
            }
            
            jQuery("#block_price").html(json.price);
            if (json.basicprice){
                jQuery("#block_basic_price").html(json.basicprice);
            }
            
            for(key in json){
                if (key.substr(0,3)=="pq_"){
                    jQuery("#pricelist_from_"+key.substr(3)).html(json[key]);
                }
            }

            if (json.available=="0"){
                jQuery(".productfull #not_available").html("<div class='not_available orangeobl'><b>СЕЙЧАС ЭТОГО ТОВАРА НЕТ В НАЛИЧИИ</b><p>Не расстраивайтесь! Вы можете оформить предзаказ товара. Как только товар появится в наличии, мы Вас оповестим.</p><div class='arrow1'></div><div class='close1'></div></div>");
// МОЯ ВСТАВКА (Удаляет по клику содержимое блока)
jQuery('#not_available .close1').click(function(){
jQuery('#not_available').html('');
});          
// конец МОЯ ВСТАВКА (Удаляет по клику содержимое блока)
}else{
                jQuery("#not_available").html("");
            }
            

if (json.displaybuttons=="0"){
                jQuery(".productfull .prod_buttons").hide();
// МОЯ ВСТАВКА (предзаказ)
jQuery(".pred_zakaz").removeClass("noovisible");
//конец МОЯ ВСТАВКА (предзаказ)
            }else{
                jQuery(".productfull .prod_buttons").show();
// МОЯ ВСТАВКА (предзаказ)
jQuery(".pred_zakaz").addClass("noovisible");
//конец МОЯ ВСТАВКА (предзаказ)
            }


            if (json.ean){
                jQuery("#product_code").html(json.ean);
            }

            if (json.weight){
                jQuery("#block_weight").html(json.weight);
            }
            if (json.pricedefault){
                jQuery("#pricedefault").html(json.pricedefault);
            }
            if (json.qty){
                jQuery("#product_qty").html(json.qty);
            }
            if (json.oldprice){
                jQuery("#old_price").html(json.oldprice);
            }

            if (json.images && json.images.length>0){
                var count_prod_img = json.images.length;
                var html_thumb_img = "";
                var html_middle_img = "";
                var html_zoom_img = '';
                if (typeof(jshop_product_hide_zoom_image)==='undefined') jshop_product_hide_zoom_image = 0;
                if (!jshop_product_hide_zoom_image){
                    html_zoom_img = ' <div class="text_zoom"><img alt="zoom" src="'+liveimgpath+'/search.png" /> '+translate_zoom_image+'</div>';
                }
                for(var j=0;j<count_prod_img;j++){
                    html_thumb_img+='<img class="jshop_img_thumb" src="'+liveproductimgpath+'/thumb_'+json.images[j]+'" onclick = "showImage('+j+')" /> ';
                    tmp = 'style="display:none"';
                    if (j==0) tmp = '';
                    html_middle_img+='<a class="lightbox" id="main_image_full_'+j+'" href="'+liveproductimgpath+'/full_'+json.images[j]+'" '+tmp+'><img id="main_image_'+j+'" src="'+liveproductimgpath+'/'+json.images[j]+'" />'+html_zoom_img+'</a>';
                }
                if (json.displayimgthumb=="1")
                    jQuery("#list_product_image_thumb").html(html_thumb_img);
                else
                    jQuery("#list_product_image_thumb").html("");
                jQuery("#list_product_image_middle").html(html_middle_img);
                initJSlightBox();
            }
            
            if (json.block_image_thumb || json.block_image_middle){
                jQuery("#list_product_image_thumb").html(json.block_image_thumb);            
                jQuery("#list_product_image_middle").html(json.block_image_middle);
                initJSlightBox();
            }

if (typeof(json.demofiles)!='undefined'){
jQuery("#list_product_demofiles").html(json.demofiles);
}

            jQuery.each(reloadAttribEvents, function(key, handler){
                handler.call(this, json);
            });

            reloadAttrValue();
//МОЙ
addattrClass();
//////////////
        }
    );
}

function setAttrValue(id, value){
    attr_value[id] = value;
    reloadAttribSelectAndPrice(id);
    reloadAttribImg(id, value);
}

function reloadAttribImg(id, value){
    var path = "";
    var img = "";
    if (value=="0"){
        img = "";
    }else{
        if (attr_img[value]){
            img = attr_img[value];
        }else{
            img = "";
        }
    }
    
    if (img==""){
        path = liveimgpath;
        img = "blank.gif";
    }else{
        path = liveattrpath;
    }
    jQuery("#prod_attr_img_"+id).attr('src', path+"/"+img);
}

function reloadAttrValue(){    
    for(var id in attr_value){
        if (jQuery("input[name=jshop_attr_id\\["+id+"\\]]").attr("type")=="radio"){
            attr_value[id] = jQuery("input[name=jshop_attr_id\\["+id+"\\]]:checked").val();
        }else{
            attr_value[id] = jQuery("#jshop_attr_id"+id).val();
        }
    }
}


// МОЙ добавляем класс для атрибута
function addattrClass(){
for(var id in attr_value){
if (jQuery("input[name=jshop_attr_id\\["+id+"\\]]").prop('checked'))   {
 attr_value[id] = jQuery("input[name=jshop_attr_id\\["+id+"\\]]").addClass("checkkkkk");
}else{
attr_value[id] = jQuery("input[name=jshop_attr_id\\["+id+"\\]]").removeClass("checkkkkk");
}
}}
//////////////////////////
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Атрибуты в functions.js
« Ответ #2 : 02.01.2015, 23:41:38 »
что итого сделать то надо?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #3 : 03.01.2015, 00:06:19 »
я не могу понять как выцепить-определить ID опции атрибута

<input type="radio" name="jshop_attr_id[3]"   id="jshop_attr_id37"   value="7" onclick="setAttrValue('3', this.value);" class="checkkkkk">

name="jshop_attr_id[3]"  --  3 ето ID атрибута
id="jshop_attr_id37"  --  37  ето ID ОПЦИИ атрибута 3

for(var id in attr_value){.....}    таким образом переберается ID атрибута
и то что я смог наковырять немного неправильно, так как при проверки Инпута, определяется ID атрибута а не его ОПЦИИ
Спойлер
[свернуть]

Вобщем мне надо определить ID ОПЦИИ атрибута.
Ето необходимо для того чтобы по ID ОПЦИИ атрибута можно было выцеплять у какой ОПЦИИ атрибута установлен Чекбокс и добавлять ему КСС клас, когда он не установлен удалять етот клас. В коде который я показывал выше идёт определение ID атрибута, а у всех инпутов оно одинаковое, в етом вся беда :(
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Атрибуты в functions.js
« Ответ #4 : 03.01.2015, 11:55:12 »
хорошо :) я еще раз спрошу

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

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #5 : 03.01.2015, 12:32:15 »
Надо понять как определять  ID ОПЦИИ атрибута, для того чтобы скрипт понимал на какой инпут кликнули и какому у инпуту добавлять Класс :(
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Атрибуты в functions.js
« Ответ #6 : 03.01.2015, 13:01:03 »
да уж... видимо новый год сказывается... :)
avantyrist, чего в конечном итоге вы хотите добиться? вам надо присвоить класс тому инпуту, на который кликнули? все?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #7 : 03.01.2015, 13:11:46 »
Такая структура атрибутов:

<div class="customjshop_attr_id37">
<input class="custom" type="radio" name="jshop_attr_id[3]" id="jshop_attr_id37" value="7" onclick="setAttrValue('3', this.value);">
<label class="radio_attr_label"  for="jshop_attr_id37">Zero  0мг/мл</label>
</div>

<div class="customjshop_attr_id38">
<input class="custom" type="radio" name="jshop_attr_id[3]" id="jshop_attr_id38" value="8" onclick="setAttrValue('3', this.value);">
<label class="radio_attr_label"  for="jshop_attr_id37">Zero  0мг/мл</label>
</div>

Надо при клике на ОПЦИЮ атрибута  <input  id="jshop_attr_id37" ......>   Добавить для блока <div class="customjshop_attr_id37">  дополнительный клас.
Если выбрать другую опцию то удалить с предыдущего div блока, и добавить к текущему

да уж... видимо новый год сказывается... Azn   ----  мне понравилось :)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Атрибуты в functions.js
« Ответ #8 : 03.01.2015, 13:57:10 »
Цитировать
onclick="jQuery('[class ^= customjshop_attr_id]').removeClass('checkkkkk');jQuery('#custom'+this.id).addClass('checkkkkk');setAttrValue('3', this.value);"
и не надо никаких хаков. что вы их все так любите...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #9 : 03.01.2015, 14:32:47 »
Ух ёмаё ну сейчас я ешё больше запутался.
Тот код который вы написали, его надо добавить в onclick=""  самого инпута ? если ето так то надо лезть в файл functions.php
 атрибуты там формируются вот так:
Код
<input  type="radio" name="'.$name.'" id="'.$id_text.'" value="'.$obj->$key.'"'.$sel.' '.$params.'>
'.$params.'  вот ета штука и выводит на сайте вот такую штуку      onclick="setAttrValue('3', this.value)
Откуда ета переменная тянет данные я не нашёл, но етоже и будет ешё тот Хак,

Если ето jQuery скрипт:   jQuery('#custom'+this.id) ---- к чему ето обращение идёт ?

блин  :(
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Атрибуты в functions.js
« Ответ #10 : 03.01.2015, 14:48:07 »
Код: php-brief
jQuery(document).ready(function($){
   $('[class ^= customjshop_attr_id]').click(function(){
      $('[class ^= customjshop_attr_id]').removeClass('checkkkkk');
      $(this).addClass('checkkkkk');
   })
})
http://jsfiddle.net/n_robert/020w1b07/
Такая структура атрибутов:
---
Надо при клике...Добавить для блока...дополнительный клас.
Если выбрать другую опцию то удалить с предыдущего div блока, и добавить к текущему
Если бы все так сразу задавали свой вопрос, сэкономили бы кучу времени и нервов, и не только своих.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Атрибуты в functions.js
« Ответ #11 : 03.01.2015, 15:00:57 »
Если бы все так сразу задавали свой вопрос, сэкономили бы кучу времени и нервов, и не только своих.

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

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #12 : 03.01.2015, 15:20:14 »
Да ладно я пытался максимально описать что делал и то чего хотел добиться, Просто я изначально тупо подошёл к етому вопросу, я пытался  проверить инпут на то что он Чекнутый или нет :)) В итоге полез в ядро компонента и ковырялся там (пол дня убил), чтобы понять как же блин определить ето дурацкое ID.
 В общем сам чекнутый  crazy!....

dmitry_stas и robert Агромное вам спасибо с Новым годом и наступающим рождеством.

П.С. А всётаки в  файле function.js есть место где определяются ID ОПЦИЙ атрибута, или как их можно определить :)?     заело однако....
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Атрибуты в functions.js
« Ответ #13 : 03.01.2015, 16:08:51 »
в setAttrValue передается 2 параметра - ID атрибута (не опции, а самого атрибута), и значение (value) опции. инпут имеет name="jshop_attr_id[ID атрибута]". таким образом можно найти все инпуты с name="jshop_attr_id[переданный ID атрибута]", а потом внутри них уже найти искомый инпут с value="переданное значение опции".
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #14 : 03.01.2015, 22:37:57 »
Рано я обрадовался, оно не совсем коректно работает  >:(
При использовании одного атрибута работает нормально, а если используются несколько зависимых атрибутов, то усё... хепи енд
Всётаки придётся ковырять functions.js
и както привязываться там к   for(var id in attr_value){
чтобы скрипт понимал каждый блок атрибутов по отдельности :((
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не будь паразитом, сделай что-нибудь самостоятельно!
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #16 : 04.01.2015, 13:43:53 »
robert спс что откликнулись. В предыдущем посте я неполностью написал суть проблемы:
Структура инпутов с зависимыми атрибутами такая:
Спойлер
[свернуть]

Как ето всё работает:
block_attr_sel_(любое переменное число, при формировании соответствуюет ID атрибута), таких блоков на странице может быть несколько
Первый блок в списке, <div id="block_attr_sel_3"> он какбы постоянный: если из етого блока выбрать любой инпут, то второй блок перезагружается Аджаксом.

Теперь по пунктам:
1) Допустим выбрали в первом блоке инпут, а во втором блоке другой инпут (Оба инпута имеют состояние Чекед).
2) А теперь в первом блоке выберем другой инпут. Содержимое второго блока перезагрузилось но тот инпут который был выбран до етого, по прежнему состояние ЧЕКЕД.

Последний скрипт от robert работает но есть проблемы:
1) из-за перезагрузок второго блока идёт сбой, тоесть он перестаёт работать для перезагруженного блока
2) После перезагрузки блока инпут попрежнему имеет состояние чекед (но из-за того что он перезагрузился добавленный класс "checkkkkk" удаляется ),  и вот тута надо сделать проверку чекнут инпут или нет, если чекнут то добавить  класс, если не чекнут то ничего не делать, и если выбирать другой инпут то присвоенный класс удалить.

Первую проблему удалось решить: Последний скрипт добавил в product_default.php, потом пошёл в файл functions.js и создал там функцию:
Спойлер
[свернуть]
Обьявил её в function reloadAttribSelectAndPrice(id_select){
после етой строки:   reloadAttrValue();
                             addClassAttr();   
Таким образом скрипт работает на странице, когда она загрузилась, и повторно запускается после того как блок с атрибутом перезагрузился. Наверное ето и криво, но по другому мозгов не хватает.. :)

Первую проблему я не могу никак решить, каким образом к скрипту дополнительно прикрутить проверку инпута, на то тчо он чекнут или нет,  .prop("checked")      >:(
« Последнее редактирование: 04.01.2015, 16:19:37 от avantyrist »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Атрибуты в functions.js
« Ответ #17 : 04.01.2015, 14:09:13 »
http://jsfiddle.net/n_robert/020w1b07/6/

P.S. Может не сработать из-за AJAX-обновления. В этом случае проверку сделайте в AJAX-callback или привяжите к событию ajaxComplete.
« Последнее редактирование: 04.01.2015, 15:11:21 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Атрибуты в functions.js
« Ответ #18 : 04.01.2015, 15:51:58 »
AJAX обновления я решил проблему, добавлением етого скрипта в функцию, и потом вызываю ету функцию во время обновления. functions.js

Вроде тьфу тьфу...  работает. robert агромная благодарность Вам. 

П.С. вечером обновлю етот пост по пунктам напишу что куда прописываю,  уверен ето многим пригодится
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Атрибуты в functions.js
« Ответ #19 : 05.01.2015, 12:44:02 »
avantyrist, пишите здесь, чтобы другие могли использовать ваше решение (или вам помочь). jQuery работает со селекторами, поэтому если вам нужно обработать конкретные селекторы, необходимо их каким-то образом указывать.
http://jsfiddle.net/n_robert/020w1b07/10/
Не будь паразитом, сделай что-нибудь самостоятельно!
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Re: Атрибуты в functions.js
« Ответ #20 : 18.10.2024, 16:06:39 »
Хорошая штука, получилось как нужно. Но возник дополнительный вопрос )))
Где, и что переделать надо, что бы кроме наименования опции зависимы атрибутов, у каждого атрибута появился вывод артикула или кода опции.
А не так как сейчас, у активной высвечивается код, артикул. Где, что добавить надо, не смог понять в functions.php или где еще есть данные связанные именно с кодом или артикулом опции зависимого атрибута (
*

kit2m2

  • Живу я здесь
  • 3347
  • 273 / 0
  • Беру сайты на полное сопровождение
Re: Атрибуты в functions.js
« Ответ #21 : 18.10.2024, 16:43:12 »
или где еще есть данные связанные именно с кодом или артикулом опции зависимого атрибута (
Эти данные есть в таблице - #__jshopping_products_attr. Их нужно получать запросом к базе данных
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Re: Атрибуты в functions.js
« Ответ #22 : 18.10.2024, 17:14:21 »
Не думаю. Т.к. вывод в функции есть на картинку свободного атрибута, названия атрибута, значения. А вот артикуда кода чет не понимаю как получить. Отдельный запрос делать из базы думаю, что некорректно.
Код
function sprintRadioList($list, $name, $params, $key, $val, $actived = null, $separator = ' '){
    $html = "";
    $id = str_replace("[","",$name);
    $id = str_replace("]","",$id);
    foreach($list as $obj){
        $id_text = $id.$obj->$key;
        if ($obj->$key == $actived) $sel = ' checked="checked"'; else $sel = '';
        $html.='<span class="input_type_radio "><input class="custom" type="radio" name="'.$name.'" id="'.$id_text.'" value="'.$obj->$key.'"'.$sel.' '.$params.'> <label for="'.$id_text.'">'.$obj->$val."</label></span>".$separator;
    }
return $html;
}
Вот здесь видимо и надо получить код или артикул?
*

kit2m2

  • Живу я здесь
  • 3347
  • 273 / 0
  • Беру сайты на полное сопровождение
Re: Атрибуты в functions.js
« Ответ #23 : 18.10.2024, 20:29:27 »
Не думаю. Т.к. вывод в функции есть на картинку свободного атрибута, названия атрибута, значения. А вот артикула кода чет не понимаю как получить. Отдельный запрос делать из базы думаю, что некорректно.
Вы не думаете, а я знаю...
Проверьте, распечатайте $list и посмотрите, есть ли там значение кода или артикула? Если нет, то нужно отдельно получать эти значения из базы и добавлять в $list и потом выводить их рядом с радиокнопкой.

И вообще что это за код?
Код
$id = str_replace("[","",$name);
$id = str_replace("]","",$id);
Зачем все это? Или это код от Нейронки?
Здесь два раза одной переменной $id назначается значение. На выходе у переменной $id будет только значение последней строчки.
Код
$sel = '';
Переменную $sel нужно обновлять до цикла!
Код в цикле такой:
Код
if ($obj->$key == $actived) $sel = ' checked="checked"';
Это не нужно:
Код
else $sel = '';
Здесь точки не нужно:
Код
$html.='<span class="input_type_radio ">
Вы добавляете значение к пустой переменной ранее объявленной как пустая, значит нужно просто присвоить значение достаточно знака "=" (точки не нужно)
И вообще сомнительно что этот код работает...
« Последнее редактирование: 18.10.2024, 22:13:27 от kit2m2 »
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Re: Атрибуты в functions.js
« Ответ #24 : 19.10.2024, 08:40:49 »
Это работающий код из файла. Т.е. работающая функция.
*

kit2m2

  • Живу я здесь
  • 3347
  • 273 / 0
  • Беру сайты на полное сопровождение
Re: Атрибуты в functions.js
« Ответ #25 : 19.10.2024, 09:42:58 »
Это работающий код из файла. Т.е. работающая функция.
Даже если это так (я глянул Helper.php), то это не значит что там не может быть ошибок...
И это не отменяет изначальной задачи - Вывести код или артикул

Текущие их значения при смене опции атрибута на странице товара загружаются Аякс-запросом из базы данных. Всех значений кода и артикула нет на странице товара. Их нужно получать из базы данных и потом уже выводить где Вы хотите (наверное рядом с названиями опций атрибута).
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Re: Атрибуты в functions.js
« Ответ #26 : 19.10.2024, 11:05:52 »
Вот код файла, который в карточке товара выводит картинку опции зависимого атрибута и название опции. Но не выводит артикул или код подукта:

Код
<?php
defined('_JEXEC') or die('Restricted access');

class plgJshoppingProductsProduct_attr_1images extends JPlugin {

public function __construct(&$subject, $config){
parent::__construct($subject, $config);

    }
   
    public function onBeforeBuildSelectAttribute(&$attributeValues, &$attributeActive, &$selects, &$attrib, &$obj){
$db = JFactory::getDbo();
$query = "SELECT * FROM `#__jshopping_products_attr` WHERE product_id=".(int)$obj->product_id." AND ext_attribute_product_id>0";
        $db->setQuery($query);
$list = $db->loadObjectList();
$attrsid = array_keys($attributeValues);
$data = [];
foreach($list as $k => $v) {
foreach($attrsid as $aid) {
if ($v->{'attr_'.$aid} != 0 && !isset($data[$aid][$v->{'attr_'.$aid}])) {
$img = $this->getImage($v->ext_attribute_product_id);
if ($img) {
$data[$aid][$v->{'attr_'.$aid}] = $img;
}
}
}
}

foreach($attributeValues as $aid => $listval) {
foreach($listval as $k => $v) {
if (isset($data[$aid][$v->val_id])) {
$attributeValues[$aid][$k]->prod_img = $data[$aid][$v->val_id];
}
}
}
    }

private function getImage($pid) {
$db = JFactory::getDbo();
$query = "SELECT image FROM `#__jshopping_products` WHERE product_id=".(int)$pid;
        $db->setQuery($query);
return $db->loadResult();
}


private function getEAN($pid) {
$db = JFactory::getDbo();
$query = "SELECT ean FROM `#__jshopping_products` WHERE product_id=".(int)$pid;
        $db->setQuery($query);
return $db->loadResult();
}


public function onBuildSelectAttribute(&$attributeValues, &$attributeActive, &$selects, &$options, &$attr_id, &$v) {
$jshopConfig = JSFactory::getConfig();
$options = $attributeValues[$attr_id];

if ($v->attr_type == 2) {
foreach($options as $k2=>$v2) {
if ($v2->prod_img) {
$options[$k2]->value_name = "<img src='".$jshopConfig->image_product_live_path."/thumb_".$v2->prod_img."' alt='' /> <span>".trim(strip_tags($v2->value_name))."</span>    " ;




} elseif ($v2->image) {
$options[$k2]->value_name = "<img src='".$jshopConfig->image_attributes_live_path."/".$v2->image."' alt='' /> <span>".trim(strip_tags($v2->value_name))."</span>";
}
}

if ($jshopConfig->attr_display_addprice) {
foreach($options as $k2=>$v2) {
if (($v2->price_mod=="+" || $v2->price_mod=="-" || $jshopConfig->attr_display_addprice_all_sign) && $v2->addprice>0){
$ext_price_info = " (".$v2->price_mod.formatprice($v2->addprice).")";
$options[$k2]->value_name .=$ext_price_info;
}
}
}

$radioseparator = '';
if ($jshopConfig->radio_attr_value_vertical) $radioseparator = "<br/>";
foreach($options as $k2=>$v2){
$options[$k2]->value_name = "<span class='radio_attr_label'>".$v2->value_name."</span>";
}

$selects[$attr_id]->selects = sprintRadioList($options, 'jshop_attr_id['.$attr_id.']', 'onclick="setAttrValue(\''.$attr_id.'\', this.value);"', 'val_id', 'value_name', isset($attributeActive[$attr_id])? $attributeActive[$attr_id] : 0, $radioseparator);
$selects[$attr_id]->selects = str_replace(array("\n","\r","\t"), "", $selects[$attr_id]->selects);
}

}
   
}

Этот кусок файла осуществляет вывод картинки и название, имя опции:
Код

if ($v->attr_type == 2) {
foreach($options as $k2=>$v2) {
if ($v2->prod_img) {
$options[$k2]->value_name = "<img src='".$jshopConfig->image_product_live_path."/thumb_".$v2->prod_img."' alt='' /> <span>".trim(strip_tags($v2->value_name))."</span>";

} elseif ($v2->image) {
$options[$k2]->value_name = "<img src='".$jshopConfig->image_attributes_live_path."/".$v2->image."' alt='' /> <span>".trim(strip_tags($v2->value_name))."</span>";
}
}


Где строка
Код
".trim(strip_tags($v2->value_name))."</span>"
выводит имя опции. Т.е. по образу видимо надо добавить вывод ean ?
*

kit2m2

  • Живу я здесь
  • 3347
  • 273 / 0
  • Беру сайты на полное сопровождение
Re: Атрибуты в functions.js
« Ответ #27 : 19.10.2024, 11:51:14 »
Тот код, который Вы первым привели, вообще какого стороннего плагина о котором я ничего не знаю...
Я Вам написал, что Вам нужно получить нужные значения и вывести их куда Вы хотите, а где Вы это будете делать (как организовывать вывод) это ваше право.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Re: Атрибуты в functions.js
« Ответ #28 : 19.10.2024, 14:23:14 »
Первый код, это файл functions.php. А код сегодняшний, который используется для вывода картинок опций атрибутов и название опции атрибута. Я вот говорю, что возможно именно в сегодняшнем коде есть возможность получить код продукта или артикул.
Картинки выводятся и рядом название опции. Вот здесь и стоит вывести и код или артикул.
*

newalex

  • Захожу иногда
  • 94
  • 5 / 0
Re: Атрибуты в functions.js
« Ответ #29 : 19.10.2024, 14:41:22 »
https://disk.yandex.com/i/EJqIRIqaUeVQyA Это работающий пример и нехватка кода или артикула опции )
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Атрибуты - "Внимание выберите параметры"?

Автор konsty

Ответов: 16
Просмотров: 4655
Последний ответ 12.05.2023, 13:57:21
от art22
Не сохраняются добавленные атрибуты

Автор Alex_iPod

Ответов: 3
Просмотров: 874
Последний ответ 17.04.2023, 22:41:07
от victorantoniak
Характеристики, атрибуты, свободные атрибуты.

Автор Geetler

Ответов: 20
Просмотров: 7486
Последний ответ 24.11.2022, 20:47:04
от Mister Shadow
Скрыть недоступные атрибуты

Автор quixtar

Ответов: 10
Просмотров: 2898
Последний ответ 30.05.2022, 17:37:43
от kit2m2
Под атрибуты или как добавить разделы в атрибуты?

Автор itbc

Ответов: 12
Просмотров: 1284
Последний ответ 19.02.2022, 15:15:03
от itbc