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

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
Здравствуйте. Использую Joomla3 + JoomShopping-4.4.0
Была задача разместить аттрибуты на странице категории в таком виде
http://joxi.ru/pTbqUhjKTJC4Tm0FSVo
Аттрибуты отобразила без проблем с помошью темы в форуме и сделала из радиобытон кнопки таким образом
Код
<script>
// RadioButton
$('.radioblock').find('.radio').click(function(){
var valueRadio = $(this).html();
$(this).parent().find('.radio').removeClass('active');
$(this).addClass('active');
$(this).parent().find('input').val(valueRadio).attr('checked','checked')
});
    </script>

Код
  $html.='<div class="radio">'.$obj->$key.'</div><input type="hidden" name="'.$name.'" id="'.$id_text.'" value="'.$obj->$key.'"'.$sel.' '.$params.'> '."".$separator;


и
стилей
Код
/* = Переключатели Radio Button */
.radio {
display: block;
height: 25px;
background: #fdac74;

cursor: pointer;
text-indent: 10px;
font-size: 13px;
float:left;
color:#8f4d00;
min-width:27px;
margin-right:10px;
}




.radioblock label {
    float: left;

}
.radio.active {
background: #ffdfc8;
}
.radio.error {
border-color: #ff0000;
}

Проблема в том что внутри этих самых копочек аттрибутов выводится параметр $obj->$key то есть номер, а не название аттрибута, если я здесь
Код
  $html.='<div class="radio">'.$obj->$key.'</div><input type="hidden" name="'.$name.'" id="'.$id_text.'" value="'.$obj->$key.'"'.$sel.' '.$params.'> '."".$separator;
ставлю obj->$val вместо  $obj->$key  тогда значение аттрибута в корзине пустое

Прошу помощи. Как отобразить в кнопках название а не ид аттрибута?
*

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
Никто не может подсказать?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Код: javascript
var valueRadio = $(this).html();
что содержит valueRadio после выполнения данного кода?

а потом вы делаете
Код: javascript
$(this).parent().find('input').val(valueRadio)
т.е. задаете для инпута value = valueRadio. и если valueRadio содержит не значение, а название атрибута, то понятно дело ничего хорошего из этого не выходит.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
Код: javascript
var valueRadio = $(this).html();
что содержит valueRadio после выполнения данного кода?

а потом вы делаете
Код: javascript
$(this).parent().find('input').val(valueRadio)
т.е. задаете для инпута value = valueRadio. и если valueRadio содержит не значение, а название атрибута, то понятно дело ничего хорошего из этого не выходит.

Я понимаю что то что в valueRadio выводится, а там как я уже писала  $obj->$key, если поставить  obj->$val  тогда товар в корзину не добавляется понимате?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
я то прекрасно понимаю :) вы видимо меня не очень :) и на вопросы не хотите отвечать.

1. $(this).html() возвращает содержимое div. Поскольку div у нас содержит Значение атрибута, то все работает верно.
2. Если заменить содержимое дива на Имя, то будет возвращаться не Значение атрибута, а его Имя. И потом это возвращенное значение записывается в value инпута. И соответственно ничего не работает, потому что value должно содержать Значение атрибута, а никак не Имя

Выводы: поскольку $(this).html() возвращает только одно - содержимое элемента, то использовать его если в диве Имя не представляется возможным. Для хранения параметров и получения их в js придумали очень удобные HTML-атрибуты data-*. Записав сначала в такой атрибут $obj->$key, а потом считав его (а не содержимое дива), вы получите желаемый эффект. Содержимое дива при этом может быть абсолютно любым, хоть Имя атрибута, хоть что угодно другое
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
(function ($) {
    $(document).ready(function() {
 



        $('input[type="radio"]').each(function() {
            var self = $(this);
            self.hide();
            if (this.getAttribute('checked')) {
                self.after('<div class="radio-style checked" data-id="' + this.getAttribute('id') + '"  data-name="' + this.getAttribute('id') + '"></div>');
            } else {
                self.after('<div class="radio-style" data-id="' + this.getAttribute('id') + '" data-name="' + this.getAttribute('id') + '"></div>');
            }
        })

        $('.radio-style').live('click', function(){
            var self = $(this);
            var id = this.getAttribute('data-id');
            var name = this.getAttribute('data-name');

            if(self.hasClass('checked')) {
                $('input[name="'+name+'"]').attr('checked', '');
                $('div[data-name="'+name+'"]').removeClass('checked');
                self.removeClass('checked');
                $('#' + id).attr('checked', '');
            } else {
                $('input[name="'+name+'"]').attr('checked', '');
                $('div[data-name="'+name+'"]').removeClass('checked');
                self.addClass('checked');
                $('#' + id).attr('checked', 'checked');
            }
        })
    });
})(jQuery);

   // RadioButton
   //var $j = jQuery.noConflict();
   
   
   
   //$j('#pid_<?php print $product->product_id?>_block_attr_sel_<?php foreach($attributes as $attribut){?><?php print $attribut->attr_id?><?php }?>').find('.input_type_radio').click(function(){
      //var valueRadio = $j(this).html();
      //$j(this).parent().find('.input_type_radio').removeClass('active');
      //$j(this).addClass('active');
      //$j(this).parent().find('input').attr('checked','checked');
//   });
    </script>

вот что то такое сделала, но товар не добавляется, и при выборе нового аттрибута предыдуший не обнояется(( иссякли все идеи уже
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
что за функция
Код: javascript
this.getAttribute
?

я это... я что-то не понял, зачем вы стока всего переписали? вам всего то надо было для дива там где сейчас значение атрибута выводится (там, где вы имя хотите вывести) добавить какой нибудь например
data-attr-id="'.$obj->$key.'" и содержимое при этом уже как угодно пишите, да
Код: javascript
var valueRadio = $j(this).html();
заменить на
Код: javascript
var valueRadio = $j(this).data('attrId');
« Последнее редактирование: 31.01.2014, 18:49:13 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
да название вывело но добавлять аттрибут в корзину не хочет тк.к добавляет попараметру записаному в valueRadio. Так как там не ид а название добавлять не хочет((

вот как для инпута параметр аттрибута изменяется $(this).parent().find('input').val(valueRadio).attr('checked','checked')

*

nevigen

  • Moderator
  • 10431
  • 862 / 25
  • http://n*****n.com
Тема
Цитировать
Re: Отображение аттрибутов на странице категории в виде кнопок
теперь
Цитировать
да название вывело но добавлять аттрибут в корзину не хочет
:)

разные задачи априори.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
kate1987, та ну шо ж за апврп4еек4ц3! вы читаете что я пишу, или просто делаете, что считаете нужным? я могу прекратить, если вам оно не надо.

вы заменили на var valueRadio = $(this).data('attrId'); и в <span... добавили data-attr-id="'.$obj->$key.'" ? вы сделали это?

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

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
я извиняюсь не пойму к какой a href? этой
Код
 href="<?php print $product->buy_link?> data-attr-id="'.$obj->$key.'"">
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
я исправил уже. span судя по сообщению в соседней теме, тот что раньше был <div class="radio">
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
Нет не хочет добавлять в корзину(( Пишет выбирите параметры

Код
<script>
// RadioButton
var $j = jQuery.noConflict();
$j('#pid_<?php print $product->product_id?>_block_attr_sel_<?php foreach($attributes as $attribut){?><?php print $attribut->attr_id?><?php }?>').find('.input_type_radio').click(function(){
var valueRadio = $j(this).data('attrId');
$j(this).parent().find('.input_type_radio').removeClass('active');
$j(this).addClass('active');
$j(this).parent().find('input').val(valueRadio).attr('checked','checked');
});
    </script>

Код
  $html.='<span class="input_type_radio" data-attr-id="'.$obj->$key.'">'.$obj->$val.'</span><input type="radio" name="'.$name.'" id="'.$id_text.'" value="'.$obj->$key.'"'.$sel.' '.$params.'> '."".$separator;
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Код: javascript
$j('#pid_<?php print $product->product_id?>_block_attr_sel_<?php foreach($attributes as $attribut){?><?php print $attribut->attr_id?><?php }?>')
что это и для чего это?

kate1987, у вас в первом посте - полностью рабочий код. добавление в корзину работает как нужно, за исключением того, что вас там не устраивало, что у вас в диве выводится $obj->$key. так? для чего вы объясните мне пожалуйста наделали это все что есть сейчас? верните все обратно как было в первом посте, и сделайте только те 2 вещи которые я написал тут. то, что вы собственно уже сделали. и больше ничего менять не нужно по отношению к первоначальному рабочему коду
« Последнее редактирование: 31.01.2014, 22:23:21 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kate1987

  • Захожу иногда
  • 51
  • 0 / 0
Да вы правы все работает ^-^ ^-^ Юольшое спасибо Я просто хотела поправить для плагина который добавляет аттрибуты, который нашла попозже
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
Да вы правы все работает
Я искренне рад :)

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

Как исключить отображение текста в определенных категориях?

Автор art22

Ответов: 4
Просмотров: 728
Последний ответ 25.07.2023, 19:53:58
от art22
Сравнить общее количество товаров категории с количеством на странице

Автор goga_pgasovav

Ответов: 6
Просмотров: 833
Последний ответ 25.01.2023, 20:12:58
от goga_pgasovav
Получить код верхней категории?

Автор mag_num83

Ответов: 5
Просмотров: 678
Последний ответ 16.12.2022, 16:27:58
от kit2m2
ID категории по ID продукта

Автор Zelyonkin

Ответов: 3
Просмотров: 466
Последний ответ 13.12.2021, 14:18:23
от anatol81n
Цена "от" на странице списка категорий товаров (цена самого дешёвого товара)

Автор goga_pgasovav

Ответов: 3
Просмотров: 441
Последний ответ 14.10.2021, 14:13:38
от goga_pgasovav