Перейти к содержимому


Фотография
- - - - -

Отдельные кнопки купить для каждой вариации цены

рецепт цены вариации цен

Сообщений в теме: 29

#1 i001

i001

Отправлено 13 January 2014 - 01:15

*
Популярное сообщение!

Делал на jbzoo 2.1.2 (JBZoo Price - Advance)
 
1. Меняем комплексный шаблон цены (я делал на его основе)
media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl\tmpl_default.php
 
начиная со строки 20 всё загнанно в цикл 
<? foreach ($this->getIndexData() as $key => $data): ?>
т.е. выводится несколько раз смотря сколько вариаций кнопки, и скрипт
 
вот рабочий вариант этого файла со всеми изменениями

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */
// no direct access
defined('_JEXEC') or die('Restricted access');

$uniqClass = 'jsJBPriceAdvance-' . $this->identifier . '-' . $this->getItem()->id;
$iniqId = uniqid('jbprice-adv-');
?>

<? foreach ($this->getIndexData() as $key => $data): ?>
   <div class="jsJBPriceAdvance jbprice-advance <?php echo $uniqClass; ?>" id="<?php echo $iniqId . $key; ?>">
       <div class="desc"><?=$data['params']['description']?></div>
   <div class="cena"> <?php echo $pricesTmpl; ?></div>
	<div class="sklad"><?php echo $balanceTmpl; ?></div>
 <div class="but"><?php echo $buttonsTmpl; ?></div>

    </div>

    <script type="text/javascript">
        (function ($) {

            $('#<?php echo $iniqId . $key; ?>').JBZooPriceAdvance({
                'params': <?php echo json_encode($interfaceParams); ?>,
                'prices': <?php echo json_encode($prices); ?>,

                'mainHash': "<?php echo $data['hash']; ?>",
                'itemId': <?php echo $this->getItem()->id; ?>,
                'identifier': "<?php echo $this->identifier; ?>",

               'isInCart': <?php echo (int) $this->app->jbcart->isExists($this->getItem(), false, $data['hash']); ?>,
                        
                'hash':"<?php echo $data['hash']; ?>",

                'addToCartUrl': "<?php echo $addToCartUrl; ?>",
                'removeFromCartUrl': "<?php echo $this->app->jbrouter->element($this->identifier, $this->getItem()->id, 'ajaxRemoveFromCart', array('hash' => $data['hash'])); ?>",
                'modalUrl': "<?php echo $modalUrl; ?>",
                'basketUrl': "<?php echo $basketUrl; ?>"
            });

        })(jQuery);
    </script>
<? endforeach; ?>

Табличный вывод я не очень люблю, поэтому нужные элементы обернуты в дивы, которые нужно оформить через css
 
Вот эти строки отвечают за порядок вывода элементов.
<div class="desc"><?=$data['params']['description']?></div>
<div class="cena"> <?php echo $pricesTmpl; ?></div>
<div class="sklad"><?php echo $balanceTmpl; ?></div>
<div class="but"><?php echo $buttonsTmpl; ?></div>
 В данном варианте выводится, описание, цена, наличие, кнопки.
 
Артикул и выбор количества я убрал за ненадобностью в конкретном проекте.
Если они нужны добавляем их  в нужные места например так
<div class="desc"><?=$data['params']['description']?></div>
<div class="cena"> <?php echo $pricesTmpl; ?></div>
<div class="sklad"><?php echo $balanceTmpl; ?></div>
<div class="but"><?php echo $buttonsTmpl; ?></div>
<div class="sku"><?php echo $skuTmpl; ?></div>
<div class="kol"><?php echo $countTmpl; ?> </div>
Получаем - описание, цена, наличие, кнопки, артикул, количество.
 
 
2, в \media\zoo\applications\jbuniversal\elements\jbpriceadvance\jbpriceadvance.php в строках 1335 и 1339 добавляем что можно передать хеш для добавления в корзину


 /**
     * Ajax add to cart method
     */
    public function ajaxAddToCart($quantity = 1, $params = array(), $hash = false)
    {
        $jbajax = $this->app->jbajax;

        if (!$hash)
            $hash = $this->_getHash(array(
                'param1' => $params[1],
                'param2' => $params[2],
                'param3' => $params[3],
                'description' => isset($params['desc']) ? $params['desc'] : '',
                    ));
     //   echo $hash;
3.  в /media/zoo/applications/jbuniversal/assets/js/jquery.jbzootools.min.js 

добавляем что можно передавать по хешу .
 
код там в куче поэтому даю полный код этого файла, изменения внесены в строках 42 и 44, если кому интересно ищите по hash
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 * @coder       Vitaliy Yanovskiy <joejoker@jbzoo.com>
 */


function numberFormat(a,k,l,p){if(isNaN(a))return null;l=l?l:".";a=new String(a);a=a.split(".");if(p){for(var n=[],b=a[0].length,c=0;0<b;b-=3){var e=0<b?b-3:b;n[c++]=a[0].substring(b,e)}a[0]=n.reverse().join(p)}if(k)for(a[1]=a[1]?a[1]:"",a[1]=Math.round(parseFloat(a[1].substr(0,k)+"."+a[1].substr(k,a[1].length),10)),isNaN(a[1])&&(a[1]=""),k-=a[1].toString().length,b=0;b<k;b++)a[1]+="0";return a.join(l)}
function jbdump(a,k,l){var p="string"==typeof a||"array"==typeof a?" ("+typeof a+", "+a.length+")":" ("+typeof a+")";"string"==typeof a&&(a='"'+a+'"');"undefined"==typeof l&&(l=!1);console.log("undefined"==typeof k?"..."+p+" = ":k+(p+" = "),a);l&&"undefined"!=typeof console.trace&&console.trace();return!0}
(function(a){function k(a,c,e){if(!n||"undefined"==typeof console)return!1;"e"==a?void 0!==e?console.error(c+"\t\t\t\tvars:",e):console.error(c):"w"==a?void 0!==e?console.warn(c+"\t\t\t\tvars:",e):console.warn(c):"i"==a?void 0!==e?console.info(c+"\t\t\t\tvars:",e):console.info(c):void 0!==e?console.log(c+"\t\t\t\tvars:",e):console.log(c)}function l(b){k("w","ajax::request",b);b=a.extend({},{url:"index.php?format=raw&tmpl=component",data:{},dataType:"json",success:!1,error:!1,onFatal:function(c){if("undefined"!=
typeof n&&n){k("e","ajax::request - "+b.url,b.data);var e=a.parseHTML(c.responseText),d="";p(e)||a.each(e,function(b,c){if(1==a(c).find("#techinfo").length)return d=a.trim(a(c).find("#techinfo").text()),!1});d?jbdump(d,"Ajax error responce:"):jbdump(c.responseText,"Ajax error responce:")}throw"Ajax response no parse";}},b);if(!b.url)throw"AJAX url is no set!";b.data=a.extend({},{nocache:Math.random(),option:"com_zoo",tmpl:"component",format:"raw"},b.data);a.ajax({url:b.url,data:b.data,dataType:b.dataType,
type:"POST",success:function(c){"json"==b.dataType?c.result&&a.isFunction(b.success)?b.success.apply(this,arguments):!c.result&&a.isFunction(b.error)&&b.error.apply(this,arguments):a.isFunction(b.success)&&b.success.apply(this,arguments)},error:b.onFatal,cache:!1,headers:{"cache-control":"no-cache"}})}function p(a){if("undefined"===typeof a||""===a||0===a||"0"===a||null===a||!1===a)return!0;if("object"==typeof a){var c=0,e;for(e in a)a.hasOwnProperty(e)&&c++;if(0==c)return!0}return!1}var n=!1;a(document).on("click",
".jbzoo .jsEmptyCart",function(){l({url:a(this).attr("href"),success:function(){a.fn.JBZooPriceReloadBasket()}});return!1});a(document).on("click",".jbzoo .jsGoto",function(){var b=a(this).attr("href");b||(b=a(this).data("href"));parent.location.href=b;return!1});a.fn.JBZooTabs=function(b){b=a.extend({},{onTabShow:!1,indexTab:0},b);return a(this).each(function(){var c=a(this),e=c.children("ul"),d=e.children("li"),g=d.children("a"),h=c.children("div");if(c.hasClass("jbzootabs-widget"))return!0;c.addClass("jbzootabs jbzootabs-widget jbzootabs-widget-cont");
g.addClass("jbzootabs-anchor");e.addClass("jbzootabs-nav jbzootabs-header");d.addClass("jbzootabs-state-default");h.addClass("jbzootabs-content");h.hide();d.hover(function(){a(this).addClass("jbzootabs-state-hover")},function(){a(this).removeClass("jbzootabs-state-hover")});g.bind("click",function(){var e=a(this,c).attr("href").match(/#(.*)$/);h.hide();a(e[0],c).show();d.removeClass("jbzootabs-active jbzootabs-state-active");a(this).parent().addClass("jbzootabs-active jbzootabs-state-active");a.isFunction(b.onTabShow)&&
(e=a(d,c).index(a(".jbzootabs-active",c)),b.onTabShow(e));return!1});(function(){var g=window.location.href.match(/#(.*)$/);if(g&&g[1]){var g=window.location.hash,f=h.siblings().not(e).index(a(g,c));0<f?(a(g,c).show(),d.eq(f).addClass("jbzootabs-active jbzootabs-state-active")):(d.eq(b.indexTab).addClass("jbzootabs-active jbzootabs-state-active"),h.first().show())}else 0<b.indexTab?(h.not(e).eq(b.indexTab).show(),d.eq(b.indexTab).addClass("jbzootabs-active jbzootabs-state-active")):(d.eq(b.indexTab).addClass("jbzootabs-active jbzootabs-state-active"),
h.first().show())})()})};a.fn.JBZooAccordion=function(b){b=a.extend({},{onTabShow:!1,headerWidget:"h3",contentWidget:"div",activeTab:0},b);return a(this).each(function(){var c=a(this);if(c.hasClass("jbzootabs-accordion"))return!0;if("h3"==b.headerWidget)var e=c.children(b.contentWidget),d=c.children(b.headerWidget);else e=c.children(b.contentWidget+":odd"),d=c.children("div:even");e.hide();d.hover(function(){a(this).addClass("jbzootabs-state-hover")},function(){a(this).removeClass("jbzootabs-state-hover")});
a(c).addClass("jbzootabs-accordion");a(d).addClass("jbzootabs-accordion-header jbzootabs-state-default jbzootabs-accordion-icons");a(d).append('<span class="jbzootabs-accordion-header-icon jbzootabs-icon jbzootabs-icon-closed"></span>');a(e).addClass("jbzootabs-accordion-content");d.bind("click",function(){var g=a(this,c).next(),h=a(this,c).find(".jbzootabs-accordion-header-icon"),u=d.find(".jbzootabs-accordion-header-icon");d.removeClass("jbzootabs-accordion-active jbzootabs-state-active");u.removeClass("jbzootabs-icon-opened");
a(e).slideUp("normal");a(g).is(":hidden")&&(a(this,c).addClass("jbzootabs-accordion-active"),h.addClass("jbzootabs-icon-opened"),a(g).slideDown("normal"));a.isFunction(b.onTabShow)&&(index=d.index(a(".jbzootabs-accordion-active",c)),a(".googlemaps").children("div").first().data("Googlemaps").refresh())});d.eq(b.activeTab).addClass("jbzootabs-accordion-active jbzootabs-state-active");$allSpan=d.find(".jbzootabs-accordion-header-icon");$allSpan.eq(b.activeTab).addClass("jbzootabs-icon-opened");e.eq(b.activeTab).slideDown("normal")})};
a.fn.JBZooBasket=function(b){b=a.extend({},{},b);return a(this).each(function(){var c=a(this),e=function(b){for(var d in b.items){var f=b.items[d];a(".row-"+d+" .jsSubtotal",c).text(f)}a(".jsTotalCount",c).text(b.count);a(".jsTotalPrice",c).text(b.total)};a(".jsDelete",c).click(function(){var d=a(this),g=d.closest("tr").data("itemid"),f=d.closest("tr").data("hash");l({url:b.deleteUrl,data:{itemid:g,hash:f},success:function(b){var m=d.closest("tr");m.find("td").slideUp(300,function(){m.remove();0==
c.find("tbody tr").length&&window.location.reload()});e(b);a.fn.JBZooPriceReloadBasket()}});return!1});a(".jsDeleteAll",c).click(function(){a(this);confirm(b.clearConfirm)&&l({url:b.clearUrl,success:function(){window.location.reload()}})});a(".jsQuantity",c).val();var d=function(c){var d=parseInt(c.val(),10),f=parseInt(c.closest("tr").data("itemid"),10),g=c.closest("tr").data("hash");c.val().length&&0<=d&&l({url:b.quantityUrl,data:{value:d,itemId:f,hash:g},success:function(b){e(b);a.fn.JBZooPriceReloadBasket()},
error:function(a){a.message&&alert(a.message)}})},g=0;a(".jsQuantity",c).keyup(function(){var b=a(this);clearTimeout(g);g=setTimeout(function(){d(b)},200)}).change(function(){var b=a(this);clearTimeout(g);g=setTimeout(function(){d(b)},200)})})};a.fn.JBCompareButtons=function(b){b=a.extend({},{},b);return a(this).each(function(){var b=a(this);if(b.hasClass("jbcompare-init"))return!0;b.addClass("jbcompare-init");a(".jsCompareToggle",b).click(function(){var e=a(this);l({url:e.attr("href"),success:function(a){a.status?
b.removeClass("unactive").addClass("active"):(a.message&&alert(a.message),b.removeClass("active").addClass("unactive"))}});return!1})})};a.fn.JBFavoriteButtons=function(b){b=a.extend({},{},b);return a(this).each(function(){var b=a(this);if(b.hasClass("jbfavorite-init"))return!0;b.addClass("jbfavorite-init");a(".jsFavoriteToggle",b).click(function(){var e=a(this);l({url:e.attr("href"),success:function(a){a.status?b.removeClass("unactive").addClass("active"):b.removeClass("active").addClass("unactive")}});
return!1});a(".jsJBZooFavoriteRemove",b).click(function(){var e=a(this);l({url:e.attr("href"),success:function(d){d.result&&b.slideUp(function(){b.remove();0==a(".favorite-item-wrapper").length&&a(".jsJBZooFavoriteEmpty").fadeIn()})}});return!1})})};a.fn.JBZooPriceAdvanceAdmin=function(b){return a(this).each(function(c,e){function d(){a(".jbpriceadv-variation-row .jbremove",g).show();a(".jbpriceadv-variation-row",g).each(function(c,d){var e=a(this);0==c&&a(".jbremove",e).hide();a(".list-num",e).text(c+
1);!a(".row-sku",e).val()&&b.base_sku&&a(".row-sku",e).val(b.base_sku);""==a(".row-balance",e).val()&&a(".row-balance",e).val("-1");a("input, select",e).each(function(){var b=a(this);b.attr("name",b.attr("name").replace(/\[variations\]\[\d\]/i,"[variations]["+c+"]"))})})}var g=a(e),h=a(".variations",g);b=a.extend({},{text_variation_show:"Show variations",text_variation_hide:"Hide variations",adv_field_param_edit:0,all_params:{},base_currency:a(".basic-currency",g).val(),base_sku:a(".basic-sku",g).val()},
b);a(".jsShowVariations",g).click(function(){h.is(":hidden")?(a(this).text(b.text_variation_hide),h.slideDown()):(a(this).text(b.text_variation_show),h.slideUp());return!1});a(".jsNewPrice",g).click(function(){var c=a(".jbpriceadv-variation-row:first",g).clone().hide();a("input, select",c).val("");a(".row-currency",c).val(b.base_currency);a(".row-value",c).val(a(".basic-value",g).val());a(".variations-list",g).append(c);c.slideDown();d();return!1});g.on("click",".jbremove",function(){var b=a(this).closest(".jbpriceadv-variation-row");
b.slideUp(300,function(){b.remove();d()})});(function(){d();b.adv_field_param_edit||a.each(b.all_params,function(b,c){a(".element-"+c).hide()})})()})};a.fn.JBCascadeSelect=function(b){var c=a(this),e={uniqid:"",items:null,text_all:"All"},d={},g=function(b,c){d[c]=a("select",b);d[c].change(function(){var m=a(this),d=parseInt(m.attr("list-order"),10),m=m.val(),e=l(d,c),f=a(".jbselect-"+(d+1),b);h(f,m,e,d,!1);1<f.find("option").length&&f.removeAttr("disabled");f.trigger("change")}).each(function(b,m){var d=
a(m),e=parseInt(d.attr("list-order"),10),g=d.val();l(e,c);d.attr("disabled","disabled");f(g)||d.removeAttr("disabled");1<d.find("option").length&&d.removeAttr("disabled")})},h=function(b,c,d,g,q){var h=e.items;k(b);q||a.each(d,function(a,b){if("undefined"!=typeof h[b])h=h[b];else return f(b)&&(h={}),!1});a.each(h,function(a,c){m(b,a,a)})},l=function(b,c){for(var m={},f=0;f<=b;f++){var e=a(d[c].get(f)).val();m[f]=e}return m},f=function(b){return"undefined"==typeof b?!1:!a.inArray(b,[""," ","0"])},
k=function(a){a.empty();a.attr("disabled","disabled");return m(a,"",e.text_all)},m=function(b,c,d){c=a("<option>").attr("value",c).html(d);return b.append(c)};if(!c.length)return c;e=a.extend({},e,b);a(".jbcascadeselect",c).each(function(b,c){g(a(c),b)});var q=a(".repeat-elements",c);q.find("p.add").bind("click",function(){var b=q.find("li.repeatable-element").length-1,d=c.find(".jbcascadeselect:eq("+b+")");a("select",d).each(function(b,c){0!=b?k(a(c)):a(c).val("")});g(d,b)});return c};a.fn.JBZooPrice=
function(b){return a(this).each(function(b,e){var d=a(e);a(".jsPriceCurrency",d).click(function(){var b=a(this),c=b.attr("currency");a(".jsPriceValue",d).removeClass("active");a(".price-currency-"+c,d).addClass("active");a(".jsPriceCurrency",d).removeClass("active");b.addClass("active")});a(".jsAddToCart",d).click(function(){var b=a(this).data("href"),b=-1==b.indexOf("?")?b+"?format=raw&tmpl=component":b+"&format=raw&tmpl=component";a.fancybox({type:"iframe",href:b,width:360,autoHeight:!0,autoResize:!0,
fitToView:!0,iframe:{scrolling:"no",preload:!0},helpers:{overlay:{locked:!1,css:{background:"rgba(119, 119, 119, 0.4)"}}}});return!1});a(".jsBayIt",d).click(function(){var b=a(this),c=0;a(".jbprice-row input:checked",d).length&&(c=a(".jbprice-row input:checked",d).val());l({url:b.data("href"),data:{args:{quantity:a(".jsQuantity").val(),indexPrice:c}},success:function(a){a.result&&(window.location.href=a.basketUrl)}});return!1});a(".jsRemoveFromCart",d).click(function(){var b=a(this);l({url:b.data("href"),
success:function(b){d.removeClass("in-cart").addClass("not-in-cart");a.fn.JBZooPriceReloadBasket()}});return!1})})};a.fn.JBZooPriceToggle=function(b,c){a(".jsPrice-"+b+"-"+c+", .jsJBPriceAdvance-"+b+"-"+c).removeClass("not-in-cart").addClass("in-cart");a.fn.JBZooPriceReloadBasket()};a.fn.JBZooPriceReloadBasket=function(){a(".jsJBZooModuleBasket").each(function(b,c){var e=a(c);l({data:{controller:"basket",task:"reloadModule",app_id:e.attr("appId"),moduleId:e.attr("moduleId")},dataType:"html",success:function(a){e.closest(".jbzoo").replaceWith(a)}})})};
a.fn.JBZooProgressBar=function(b){function c(a){if(0>=a||isNaN(a))return"00:00";var b=Math.floor(a/60);a%=60;10>a&&(a="0"+a);10>b&&(b="0"+b);return b+":"+a}function e(){t=0;n=setInterval(function(){b.onTimer({passed:c(++t),remaining:c(parseInt(100*t/r-t,10))})},1E3)}function d(){r=0;m.hide();q.show();f.addClass("uk-progress-striped uk-active");a(".jsErrorBlockWrapper").hide();a(".jsErrorBlock").empty();p=!1;h(0);b.onStart();e()}function g(){m.show();q.hide();f.removeClass("uk-progress-striped uk-active");
p=!0;clearInterval(n);b.onStop()}function h(c){p||100<=r?g():l({url:b.url,data:{page:c},success:function(a,d){r=a.progress;b.onRequest(a);s.css("width",r+"%");100<=a.progress?(s.text(b.text_wait),b.onFinal(function(){s.text(b.text_complete)}),g()):(s.text(r+" %"),h(++c))},onFatal:function(b){a(".jsErrorBlock").html(b.responseText);a(".jsErrorBlockWrapper").fadeIn();g()}})}b=a.extend({},{text_complete:"Complete!",text_stop_confirm:"Are you sure?",text_start_confirm:"Are you sure?",text_start:"Start",
text_stop:"Stop",text_ready:"Ready",text_wait:"Wait please ...",autoStart:!1,url:"",onStart:new Function,onStop:new Function,onRequest:new Function,onTimer:new Function,onFinal:function(a){a()}},b);var k=a(this);k.html('<div id="jbprogressbar" class="uk-progress"><div class="uk-progress-bar" style="width: 100%;">'+b.text_ready+'</div></div><div class="clr"></div><input type="submit" class="jsStart uk-button uk-button-success" value="'+b.text_start+'" /><input type="button" class="jsStop uk-button" value="'+
b.text_stop+'" style="display:none;" />');var f=a("#jbprogressbar",k),s=a(".uk-progress-bar",k);a(".progress-label",k);var m=a(".jsStart",k),q=a(".jsStop",k),r=0,t=0,p=!0,n=0;m.bind("click",function(){confirm(b.text_start_confirm)&&d();return!1});q.bind("click",function(){confirm(b.text_stop_confirm)&&g();return!1});b.autoStart&&(d(),m.hide(),q.hide())};a.fn.JBZooPriceAdvance=function(b){b=a.extend({},{mainHash:"",hash:false,itemId:0,identifier:"",prices:{},addToCartUrl:"",removeFromCartUrl:"",basketUrl:"",
modalUrl:"",isInCart:0},b);b.params=a.extend({},{startValue:1,multipleValue:1,currencyDefault:"EUR",advFieldText:0,advAllExistShow:0},b.params);return a(this).each(function(){function c(c){if(p(b.prices))return!1;var d;d=k();var e=h(d);d="p1-_p2-_p3-_d-"==e||"p1-_p2-_p3-"==e?b.mainHash:e=b.mainHash+"-"+h(d);var e=b.prices[b.mainHash].prices[c],g="";"undefined"!=typeof b.prices[d]?(e=b.prices[d].prices[c],g=a.trim(b.prices[d].description),0==b.params.advAllExistShow&&a(".jbprice-buttons",f).removeClass("disabled")):
(0==b.params.advAllExistShow&&a(".jbprice-buttons",f).addClass("disabled"),d=b.mainHash);a(".not-paid-box",f).show();0==e.totalNoFormat&&a(".not-paid-box",f).hide();a(".jsSave",f).text(e.save);a(".jsTotal",f).text(e.total);a(".jsPrice",f).html("&nbsp;"+e.price+"&nbsp;");a(".jbcurrency-"+c.toLowerCase(),f).addClass("active");a(".jsDescription",f).text(g);a(".jbprice-balance .balance",f).hide();a(".jbprice-balance ."+d,f).show();a(".jbprice-sku .sku",f).hide();a(".jbprice-sku ."+d,f).show();n=c}function e(){var a=
k();return a=2==b.params.advFieldText?{1:a["p1-"],2:a["p2-"],3:a["p3-"],desc:a["d-"]}:{1:a["p1-"],2:a["p2-"],3:a["p3-"]}}function d(c){var d=b.params.startValue;a(".jsCount",f).length&&(d=a(".jsCount",f).val());l({url:b.addToCartUrl,data:{args:{quantity:d,params:e(),hash:b.hash}},success:function(b){a.isFunction(c)&&c(b)},error:function(a){a.message&&alert(a.message)}})}function g(){l({url:b.removeFromCartUrl,success:function(b){f.removeClass("in-cart").addClass("not-in-cart");a.fn.JBZooPriceReloadBasket()}})}
function h(a){var b=[],c;for(c in a)b.push(c+a[c]);return b.join("_")}function k(){var c={},c=2==b.params.advFieldText?{"p1-":"","p2-":"","p3-":"","d-":""}:{"p1-":"","p2-":"","p3-":""};f.find(".jbprice-param-radio").length?a(".jbprice-param-radio input:checked",f).each(function(b,d){var e=a.trim(a(d).val()),f=a(d).closest(".jbprice-param-radio");c[f.data("index")]=e}):f.find(".jbprice-param-select").length&&(a(".jsParam",f).each(function(b,d){var e=a.trim(a(d).val());c[a(d).data("index")]=e}),2==
b.params.advFieldText&&(c["d-"]=a(".jsParamDesc",f).val()));return c}var f=a(this);if(f.hasClass("jbprice-adv-inited"))return f;f.addClass("jbprice-adv-inited");a(".jbprice-price .price",f);a(".jbprice-price .total",f);a(".jbprice-price .description",f);var n=b.params.currencyDefault;a(".jsAddQuantity",f).click(function(){var c=parseInt(a(".jsCount",f).val(),10),c=c+parseInt(b.params.multipleValue,10);a(".jsCount",f).val(c);return!1});a(".jsRemoveQuantity",f).click(function(){var c=parseInt(a(".jsCount",
f).val(),10),c=c-parseInt(b.params.multipleValue,10);0>=c&&(c=b.params.startValue);a(".jsCount",f).val(c);return!1});a(".jsCount",f).bind("change",function(){var c=parseInt(a.trim(a(this).val())),c=isNaN(c)||1>c?b.params.startValue:c;a(this).val(c)});a(".jsPriceCurrency",f).bind("click",function(){var b=a(this),d=b.data("currency");a(".jsPriceValue",f).removeClass("active");a(".jbprice-"+d,f).addClass("active");a(".jsPriceCurrency",f).removeClass("active");b.addClass("active");c(d)});a(".jsParam",
f).bind("change",function(){c(n)});a(".jsParamDesc",f).bind("change",function(){c(n)});a(".jbprice-param-radio input",f).bind("change",function(){c(n)});a(".jsAddToCart",f).click(function(){d(function(c){c&&a.fn.JBZooPriceToggle(b.identifier,b.itemId)});return!1});a(".jsRemoveFromCart",f).click(function(){g();return!1});a(".jsAddToCartModal",f).click(function(){a(this);var c=b.modalUrl,c=-1==c.indexOf("?")?c+"?format=raw&tmpl=component":c+"&format=raw&tmpl=component";a.fancybox({type:"iframe",href:c,
width:400,fitToView:!0,autoHeight:!0,autoResize:!0,iframe:{scrolling:"no",preload:!0},helpers:{overlay:{locked:!1,css:{background:"rgba(119, 119, 119, 0.4)"}}}});return!1});a(".jsCartModal .jsAddToCart").unbind().click(function(){d(function(a){a&&(parent.jQuery.fn.JBZooPriceToggle(b.identifier,b.itemId),"undefined"!=typeof parent.jQuery.fancybox&&parent.jQuery.fancybox.close())});return!1});a(".jsAddToCartOne",f).click(function(){d(function(c){c&&(a.fn.JBZooPriceToggle(b.identifier,b.itemId),a.fn.JBZooPriceReloadBasket())});
return!1});a(".jsAddToCartGoto",f).click(function(){d(function(a){a&&b.basketUrl&&(parent.location.href=b.basketUrl)});return!1});a(".jsCount",f).val(b.params.startValue);a(".jsCountValue",f).text(b.params.startValue);1>=b.params.startValue&&a(".count-value-wrapper",f).hide();f.addClass(b.isInCart?"in-cart":"not-in-cart");c(b.params.currencyDefault)})}})(jQuery);
 
 ну и самым ленивым,которые будут использовать классы, которые указаны в примере
немного стилей, добавляем в подключенный css
.jbzoo-item-full .jsJBPriceAdvance {margin-bottom: 10px;float: none;clear: both;display: inline-block;background-color: #f4f4f4;border-radius: 7px;width: 558px;}
.desc {float:left; width: 260px;margin-right: 10px; font-size: 14px;color: #000; margin-left: 13px;padding-top: 7px;}
.cena {float:left; margin-right: 15px;}
.sklad {float:left; margin-right: 6px;}
.but {float:right; margin-right: 10px;}
в итоге должно получится что то типа этого, в зависимости от порядка вывода и стилей
http://hostingkartin...b5ede690dc03e32
 
Не забываем в настройках элемента в full выключить показ вариаций
Шаблон параметров - скрыть.[/size]
  • 8

#2 denya

denya

Отправлено 13 January 2014 - 19:20

строках 1335 и 1339 добавляем что можно передать хеш для добавления в корзину

что то не до конца понятно, как и куда добавлять этот кусок кода и когда добавляю ваш вариант

3.  в /media/zoo/applications/jbuniversal/assets/js/jquery.jbzootools.min.js 
, то слетают вкладки..
  • 0

#3 i001

i001

Отправлено 13 January 2014 - 19:28

Файл со всеми изменениями,

по вкладкам к сожалению ничего не могу сказать, в данном примере я их не использовал, возможно где то конфликтует js 

Прикрепленные файлы


  • 1

#4 Павел Акимов

Павел Акимов

Отправлено 13 January 2014 - 22:19

а можно посмотреть код не в  min.js?


  • 0

#5 denya

denya

Отправлено 21 January 2014 - 10:24

рецепт не работает...Проблема не в конфликте js шаблона. Где то есть ошибки в min.js. Можно подробнее о тех изменениях, которые вносились в этот файл?


  • 0

#6 i001

i001

Отправлено 21 January 2014 - 10:42

Рецепт работает, конфликтов с вкладками нет

http://astorg54.ru/k...-testovyj-torva


рецепт не работает...Проблема не в конфликте js шаблона. Где то есть ошибки в min.js. Можно подробнее о тех изменениях, которые вносились в этот файл?

изменения внесены в строках 42 и 44,  ищите по hash


  • 0

#7 denya

denya

Отправлено 21 January 2014 - 19:25

Рецепт работает, конфликтов с вкладками нет

http://astorg54.ru/k...-testovyj-torva


изменения внесены в строках 42 и 44,  ищите по hash

Внедрил рецепт в демо - сайт, но, все же есть эта проблема с вкладками, плюс не срабатывает корзина...Может изменялись еще какие то настройки или файлы?


  • 0

#8 B_A_H_O

B_A_H_O

Отправлено 17 February 2014 - 23:43

а если в этих вариациях цены должны быть разные картинки? Цвет товара на пример меняется. Как тогда быть?


  • 0

#9 denya

denya

Отправлено 18 February 2014 - 00:12

а если в этих вариациях цены должны быть разные картинки? Цвет товара на пример меняется. Как тогда быть?

у вас получилось интегрировать этот хак?


Сообщение отредактировал denya: 18 February 2014 - 00:12

  • 0

#10 feedmy.name

feedmy.name

Отправлено 18 February 2014 - 00:13

это получится очень сложная структура он, писал вот такое - сюда Ctrl+F "Важные замечания к системе вариаций цен" попадете и поймете о чем я. может проще разбить на несколько товаров? это и + к сео + без особого напрягов + поиск будет работать в разы быстрее(ИМХО) + импорт и экспорт будет без излишеств работать + при обнове ... хак такой... могут быть траблы... и последний "+" что можно никого не ждать и приступать к выполнению ТЗ немного изминив его.

 

уговорил?)

 

или тогда ждем гуру Дениса который отпишит "- вы что еб@cB все тут, а мужичка который в выводе шаблона, компот наливает не сделать?)))))" шутка

 

реально, Денис нужен :) пологаю это возможно но, в будущем или в настоящем, когда разработчик знает решение.

не=шутка.

 

спокойной ночи. (snooze)


  • 0

you call my joomla wonderfull but yet i called simple : )






Темы с аналогичным тегами рецепт, цены, вариации цен

Click to return to top of page in style!