@leofonic
Sehr interessant.
Danke schau ich mal rein.
Ich bin jetzt soweit fertig.
In meinem Produktview habe ich jetzt eine Übersichtliche Liste mit allen Varianten.
In der details/inc/productmain.tpl habe ich die oxarticlevariant.js
rausgenommen(, da ich sie nicht brauche und habe dann alles was für das in den warenkorb legen der Variante benötigt wird in eine neue datei geschrieben. Diese liegt in selectVaraint.tpl
[{* variants | md variants *}]
[{block name="details_productmain_variantselections"}]
[{if $aVariantSelections && $aVariantSelections.selections }]
[{oxscript include="js/widgets/oxajax.js" priority=10 }]
[{*oxscript include="js/widgets/oxarticlevariant.js" priority=10 *}]
[{*oxscript add="$( '#variants' ).oxArticleVariant();"*}]
[{assign var="blCanBuy" value=$aVariantSelections.blPerfectFit}]
<div id="variants" class="js-fnSubmit">
[{assign var="blHasActiveSelections" value=false}]
[{foreach from=$aVariantSelections.selections item=oList key=iKey}]
[{if $oList->getActiveSelection()}]
[{assign var="blHasActiveSelections" value=true}]
[{/if}]
[{include file="widget/product/selectVariant.tpl" oSelectionList=$oList iKey=$iKey blInDetails=true}]
[{/foreach}]
</div>
.......................
hier steht noch mehr code der erstmal egal ist
..........................
der wichtige teil von selectVariant.tpl
[{foreach from=$product->getVariants() item=variant}]
<tr>
<td>
<span>[{ $variant->oxarticles__oxvarselect->value }]</span>
</td>
<td>
[{assign var=tprice value=$variant->getTPrice()}]
[{assign var=price value=$variant->getPrice()}]
[{if $tprice && $tprice->getBruttoPrice() > $price->getBruttoPrice()}]
<p class="oldPrice">
<strong>[{oxmultilang ident="DETAILS_REDUCEDFROM"}] <del>[{$variant->getFTPrice()}]</del></strong>
</p>
[{/if}]
<p class="aktPrice">[{oxhasrights ident="SHOWARTICLEPRICE"}] <span> [{ $variant->getFPrice() }]</span> [{ $currency->sign|strip_tags}]* [{/oxhasrights}]</p>
</td>
<td class="varAmount">
<div class="floatLeft miniButton" rel="dec">-</div>
<div class="floatLeft"><input type="text" name="variantAmount" value="1" size="2" autocomplete="off" class="textbox variantAmount"></div>
<div class="floatLeft miniButton" rel="inc">+</div>
</td>
<td>
<span>dd</span>
</td>
<td>
<span class="sum"></span>
</td>
<td>
<button id="toBasket" class="button js-fnSubmit" name="data-seletion-id" value="[{$variant->getId()}]">[{oxmultilang ident="DETAILS_ADDTOCART"}]</button>
</td>
</tr>
[{/foreach}]
Und die selectArticle.js (besser wäre selectVariant.js)
( function ( $ ) {
selectArticle = {
options: {
sSubmitActionClass : 'js-fnSubmit',
sLinkActionClass : 'js-fnLink',
sDisabledClass : 'js-disabled'
},
_create: function(){
self = this;
var options = self.options;
$('table.articleList tbody tr td .button').click(function(){
this.amount = $(this).parent().parent().find('.varAmount div .variantAmount');
this.selectedValueLabel = $( 'p span', this );
this.selectedValue = $( 'input', this );
this.blSubmit = $(this).hasClass( options.sSubmitActionClass );
this.blLink = $(this).hasClass( options.sLinkActionClass );
this.actionForm = $(this).closest( 'form' );
$('input[name=am]' , $(this.actionForm) ).val($(this.amount).attr("value"));
$('input[name=aid]', $(this.actionForm) ).val($(this).attr("value"));
});
// send variant
return self.action();
},
/**
* execute action after select: do nothing, submit, go link
*
* @return boolean
*/
action : function(){
// on submit
if( this.blSubmit ){
this.actionForm.submit();
return false;
}
// on link
if( this.blLink ){
return true;
}
// just setting
return false;
}
};
$.widget("ui.selectArticle", selectArticle );
})( jQuery );
Da ich in der variantenliste auch möchte, dass man die Anzahl der varianten die man kaufen will eingeben kann, muss man sich noch ein hidden inputfeld in das element setzen.
ursprünglich war das in der produktansicht neben dem kaufenbutton als eingabefeld.
Da man bei mir aber den Vaterartikel nicht kaufen kann habe ich es da rausgenommen
<input type="hidden" name="am" value="">
Wenn man jetzt den Button neben einer Variante drückt, wird der Wert aus .variantAmount in das hidden am feld geschrieben, und die varianteid die als value im button steht in das hidden aid feld geschrieben.
Den Rest kann man auch selbst lesen. Ansonsten nochmal nachfragen.
Grüße
Keno