Variantenauswahl aussiehst verändert

hallo, ich möchte verändert wie der Variantenauswahl aussiehst…

Jetzt bekomme,

und ich will bekomme wie diesen…

mege2

ich have gesehe dass die Datei selectbox.tpl ruft dieses fenster…

so, meine fragen…

1 - Wie kann verbinden die datei wo der artikel ist, mit der selectbox.tpl

ich denke das ich diese frage beantworte kann, in Artikel > Erweitert, gibt es die möglichkeit eine Template Datei hinzufügen,

dann sollte sie mit der Datei details.tpl, die befinde sich in page/details/, verbinden

2 - Wie die selectbox.tpl Datei verändert und wid bekomme, wie dieses bild

mege2

aber ich bin nicht sicher ob diesen schritten mache soll…

zu 1: Tut mir leid. Ich verstehe die Frage nicht:

zu 2: Du möchtest Buttons statt einer Auswahlbox?

Viele danke für deine antwort!

zu 1 erste frage…ich bin noch nicht sicher aber selectbox.tpl wird gerufen der Auswahlbox, und als ich möchte siene aussiehst verändert, ich denke, das ich sie verändert sollte…

zu 2 frage

Du möchtest Buttons statt einer Auswahlbox?

Ja, ich möchte es…

Varianten dropdown veraendern könnte helfen

1 Like

danke, ich mache wie wird gesagt, die code

[{oxscript include="js/widgets/oxdropdown.js" priority=10 }]

[{oxscript add="$(‘div.dropDown p’).oxDropDown();" }]
[{assign var=“oSelections” value=$oSelectionList->getSelections()}]
[{if $oSelections}]

[{if $editable !== false}]
    <input type="hidden" name="[{$sFieldName|default:"varselid"}][[{$iKey}]]" value="[{if $oActiveSelection }][{$oActiveSelection->getValue()}][{/if}]">
    <ul class="vardrop">

	[{assign var="oActiveSelection" value=$oSelectionList->getActiveSelection()}]    

    [{foreach from=$oSelectionList->getSelections() item=oSelection}]        
        <li>
            <a data-selection-id="[{$oSelection->getValue()}]" href="[{$oSelection->getLink()}]" >
                <input type="radio" [{if $oSelection->isActive()}] checked="checked"[{/if}]  value="[{$oSelection->getValue()}]" name = "" id="[{$oSelection->getValue()}]" />
           
                <label>[{$oSelection->getName()}]</label> 
            </a>
        </li>
        [{/foreach}]  

    </ul>
[{/if}]

 </div>
 </div>
[{else}]
 <a href="[{ $_productLink }]" class="variantMessage">
[{if $sFieldName == "sel" }]
    [{ oxmultilang ident="PLEASE_CHOOSE" }]
[{else}]
   [{ oxmultilang ident="CHOOSE_VARIANT" }]
[{/if}]
 </a>
 [{/if}]

und bekommt die Probleme mit den links,

wenn drucken sie, bekommt nicht…wird gesprochen über der datei oxarticlevariant.js, aber ich weiß nicht was ich hier verändert soll…

OK. Du kannst aus der Liste Buttons machen

oder die Liste (<ul><li>...</li></ul>) entfernen und statt li direkt buttons nebeneinander platzieren. Die Values sind ja da.

danke für deine bemüht, ich CSS kenne, aber das probleme ist nicht die links darstellungen sonder die links…sie funzioniert nicht…

in

<a rel="[{$oSelection->getValue()}]" href="[{$oSelection->getLink()}]" style="text-decoration: none;">
					<input id="[{$oSelection->getValue()}]" type="radio" [{if $oSelection->isActive()}]checked="checked"[{/if}]  value="[{$oSelection->getValue()}]" name="" />
					<label style="cursor: pointer;" for="[{$oSelection->getValue()}]">[{$oSelection->getName()}]</label>
				</a>

wird die links gerufen, aber sie nicht funzioniert…Vielleicht weil sie werden gerufen mit eine code für einen alte OXID ?

ich habe jetzt eschafft mit den links…

Es funzioniert mit der code von leffty_ruggiero

so, wenn jemand möchtet der Variante dropdown verändert…, in tpl/widget/product der datei selectbox.tpl, losen was drienen gibt und der Code von Unten, hinzufügen…dann mit CSS geben der form die dir gefällt… :grinning:

[{assign var="oSelections" value=$oSelectionList->getSelections()}]
  [{if $oSelections}]
   <style>
    .dropDown ul {display: block; position:relative; border: none; cursor: auto}
    .selectMessage, .selectorLabel {cursor:auto;}
    .dropDown p {color: #000000;margin: 0;background: none;padding-right: 20px;}
    .dropDown ul a {border: none;}
    .drop li {float:left; height: 20px; margin: 2px; padding: 5px; border: 1px solid #ccc}
  </style>
<div class="dropDown clear [{$sJsAction}]">
<p class="selectorLabel[{if $editable === false}] js-disabled[{/if}]">
    <label>[{$oSelectionList->getLabel()}]:</label>     
    [{assign var="oActiveSelection" value=$oSelectionList->getActiveSelection()}]
    [{if $oActiveSelection}]
        <span>[{$oActiveSelection->getName()}]</span>
    [{elseif !$blHideDefault}]
        <span [{if $blInDetails}]class="selectMessage"[{/if}]>
            [{if $sFieldName == "sel" }]
                [{ oxmultilang ident="PLEASE_CHOOSE" }]
            [{else}]
                [{ oxmultilang ident="CHOOSE_VARIANT" }]
            [{/if}]
        </span>
    [{/if}]   
</p>
[{if $editable !== false}]
    <input type="hidden" name="[{$sFieldName|default:"varselid"}][[{$iKey}]]" value="[{if $oActiveSelection }][{$oActiveSelection->getValue()}][{/if}]">
    <ul class="drop [{$sSelType|default:"vardrop"}]">            
        [{foreach from=$oSelections item=oSelection}]
            <li class="[{if $oSelection->isDisabled()}]js-disabled disabled[{/if}]">
                <a data-selection-id="[{$oSelection->getValue()}]" href="[{$oSelection->getLink()}]" class="[{if $oSelection->isActive()}]selected[{/if}]">[{$oSelection->getName()}]</a>
            </li>
        [{/foreach}]
    </ul>
  [{/if}]
</div>
[{else}]
  <a href="[{ $_productLink }]" class="variantMessage">
  [{if $sFieldName == "sel" }]
   [{ oxmultilang ident="PLEASE_CHOOSE" }]
 [{else}]
    [{ oxmultilang ident="CHOOSE_VARIANT" }]
  [{/if}]
   </a>
[{/if}]

Jetzt mache weiter mit CSS…

Ich möchte diesen veränderung nur für diesen Artikel, wie jetzt have, verändert alle seiten, wo ich Variantenauswahl habe, wenn ich möchte diesen veränderungen NUR, wo diesen Artikel habe.

In der Datei details.tpl suche etwas die ruft der selectbox.tpl, aber ich nicht finde…

Dafür gibt es ein kostenloses Modul von Volker Dörk. https://www.volker-doerk.de/dgvariants.html?

1 Like

page/details/inc/productmain.tpl

danke für deine antwort!

ist was gestern habe gemacht…ich habe sie gefunde in der datei page/details/inc/productmain.tpl das probleme…details.tpl, ruft der datei fullproductinfo.tpl und diese ruft, die datei productmain.tpl, als ich versuche nur diesen veänderung für diese Seite, ich muss 4 datei die name verändert(überschrieben…) auch die selectbox.tpl…es gibt die möglichkeit das kurze zu machen ?

Sowas?

[{if $oDetailsProduct->oxarticles__oxartnum->value == "1234"}]
		[{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/selectbox.tpl" oSelectionList=$oList iKey=$iKey blInDetails=true}]
                                    <div class="clearfix"></div>
                                [{/foreach}]
[{else}]
		[{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/selectbox2.tpl" oSelectionList=$oList iKey=$iKey blInDetails=true}]
                                    <div class="clearfix"></div>
                                [{/foreach}]

[{/if}]

danke für deinen code!, aber wo legt diesen Code ? auf der selectbox.tpl oder details.tpl Datei ?

productmain.tpl

Entschuldigung aber meine kenntniss ist nicht wie deine :wink:

auf der Datei productmain.tpl von der Zeile 197 bis 233, gibt dieser Code, die selectbox ruft,

[{block name="details_productmain_variantselections"}]
                    [{if $aVariantSelections && $aVariantSelections.selections}]
                        [{oxscript include="js/widgets/oxajax.min.js" priority=10 }]
                        [{oxscript include="js/widgets/oxarticlevariant.min.js" priority=10 }]
                        [{oxscript add="$( '#variants' ).oxArticleVariant();"}]
                        [{assign var="blCanBuy" value=$aVariantSelections.blPerfectFit}]
                        [{if !$blHasActiveSelections}]
                            [{if !$blCanBuy && !$oDetailsProduct->isParentNotBuyable()}]
                                [{assign var="blCanBuy" value=true}]
                            [{/if}]
                        [{/if}]
                        <div id="variants" class="selectorsBox variant-dropdown 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/selectbox.tpl" oSelectionList=$oList iKey=$iKey blInDetails=true}]
                            [{/foreach}]
                        </div>
                    [{/if}]
                [{/block}]
            </div>

            [{* selection lists *}]
            [{block name="details_productmain_selectlists"}]
                [{if $oViewConf->showSelectLists()}]
                    [{assign var="oSelections" value=$oDetailsProduct->getSelections()}]
                    [{if $oSelections}]
                        <div class="selectorsBox variant-dropdown js-fnSubmit clear" id="productSelections">
                            [{foreach from=$oSelections item=oList name=selections}]
                                [{include file="widget/product/selectbox.tpl" oSelectionList=$oList sFieldName="sel" iKey=$smarty.foreach.selections.index blHideDefault=true sSelType="seldrop"}]
                            [{/foreach}]
                        </div>
                    [{/if}]
                [{/if}]
            [{/block}]

ich lose diesen Code und hinzufüge deine ?

Das findest in Deinem Text. Wenn Du nun 2 verschiedene Dateien “selectbox.tpl” und “selectbox2.tpl” hast, differenzierst Du den Aufruf über die Artikelnummer:

[{if $oDetailsProduct->oxarticles__oxartnum->value == “1234”}]
rufe die Datei X auf
[{else}]
oder rufe die Datei Y auf
[{/if}]

Danke für deinen Erklärung!

ich have vor 3 jahren etwas Python gelern, deshalb ich verstehe was du mein mit

[{if $oDetailsProduct->oxarticles__oxartnum->value == “1234”}]
rufe die Datei X auf
[{else}]
oder rufe die Datei Y auf
[{/if}]

Beispiel foreach wird genannt For loops…sie iterate die Werten die auf eine Variable gegeben haben…beispiel hier werden die Werten , selectbox und selectbox2

mit eure code ist “Ein bissen” mehr schwieriger, weil die Condition rufen Functionen und variables, die ich nicht weiß, was sie rufen…

so, in tpl/widget/product jezt habe der Datei selectbox.tpl, ist der code, der frühr war, und selectbox2.tpl, der Code, der leffty_ruggiero geschriebt hat…

in der Datei productmain.tpl, habe die zeilen von 197 bis 233 gelöst und deine Code hinzufügen…
das probleme, wenn druckt die varienten, sie nicht funzioniert…

[{if $oDetailsProduct->oxarticles__oxartnum->value == “1234”}]
Hier Code von leffty_ruggiero
[{else}]
Hier der Originalcode
[{/if}]

bekommt diese fehler

Fatal error: Smarty error: [in page/details/inc/productmain.tpl line 305]: syntax error: unidentified token ‘“1234”’ (Smarty_Compiler.class.php, line 1410) in /var/www/html/oxid/vendor/smarty/smarty/libs/Smarty.class.php on line 1100

der zeile 304 gibt ein [{/if}], sind noch zwei zeilen vor das ende, nach diese if, gibt noch ein [{/if}] und an ende ein [{/block}]

wie der code habe,

in die Zeile 306 ende die code…

das bedeutet das ich etwas nicht gut geschlossen habe ?