Hi Community,
ich fange erst an mit Oxid zu arbeiten und habe folgendes Problem.
Die Kurzversion: Ich möchte ein Produkt finden unter Nutzung der Infos, die in einer Varianten-Liste zur Verfügung stehen.
Und detaillierter:
Das Anzeigen von Produkt-Varianten wird angestossen durch die Codezeile
[{assign var="aVariantSelections" value=$product->getVariantSelections(null,null,1)}]
(zu finden unter \application\views\azure pl\widget\product\ ).
Weiter unten im gleichen File werden die Varianten in einer Schleife ausgegeben:
[{foreach from=$aVariantSelections.selections item=oSelectionList key=iKey}]
Ich müsste für jede Variante abfragen, ob der Artikel in dieser Variante kaufbar ist (auf Lager).
Ich brauche also einen Weg, ein Produkt zu selektieren über die Informationen, die in “aVariantSelections” verfügbar sind. Dann kann die Verfügbarkeit des Produktes abgefragt werden um in der oben genannten foreach-Schleife zu entscheiden, ob die Variante angezeigt werden soll.
Leider ist die Backend-Einstellung, um nicht-kaufbare Varianten nicht anzuzeigen in diesem Fall keine Option.
Ich würde mich über jede Hilfe sehr freuen.
Danke für den Link.
Ich habe die Erweiterung installiert und aktiviert.
Es funktioniert allerdings nicht, sie zu benutzen.
Dieser Code
[{foreach from=`$aVariantSelections.selections` item=oSelection}]
[{if $oSelection->isDisabled()}]js-disabled disabled[{/if}]
[{/foreach}]
führt zu diesem Fehler
Fatal error: Smarty error: [in widget/product/listitem_line.tpl line 78]: syntax error: unidentified token '`$oSelection->isDisabled()`' (Smarty_Compiler.class.php, line 1410) in /[PfadZumShop]/core/smarty/Smarty.class.php on line 1093
Kann mir da jemand weiter helfen?
Betreffend der generellen Anwendung der Erweiterung…
Ich habe in “extended_selectionlists_oxselection.php” einen getter geschrieben, um in der oben genannten foreach-Schleife pro Variante abzufragen, ob der Artikel kaufbar ist:
public function getArticleIsBuyable()
{
$isBuyable = false;
foreach ( $this->_aArticleIds as $sKey => $sArticleId ){
if ( $oArticle = $this->getArticle( $sKey ) ){
if ( $oArticle->isBuyable() ){
$isBuyable = true;
}
}
}
return $isBuyable;
}
Macht das so Sinn?
Im Moment bekomme ich für diese Funktion noch den gleichen Fehler wie oben geschrieben.
Jede Hilfe ist ausserordentlich willkommen.
Variablen dürfen nicht in Anführungszeichen.
Oh. Richtig. Danke.
Der Fehler verändert sich dann und wird mir noch etwas unklarer, da es nun nicht mehr um ein Syntaxproblem zu gehen scheint.
Dieser Code
[{foreach from=$aVariantSelections.selections item=oSelection}]
[{if $oSelection->isDisabled()}]js-disabled disabled[{/if}]
[{/foreach}]
führt zu diesem Fehler
Fatal error: Call to undefined method extended_selectionlists_oxvariantselectlist::isDisabled() in /[PfadZumShop]/tmp/smarty/db86bcc182ca4e43c338832463bac0c0^%%98^98C^98C98449%%listitem_line.tpl.php on line 112
Irgendwelche Ideen?
[QUOTE=bholiand;153204]
[{foreach from=$aVariantSelections.selections item=oSelection}]
[/QUOTE]
Gibt eine Liste aus. Ungetestet:
[{foreach from=$aVariantSelections.selections item=oSelection}]
[{assign var="oSelections" value=$oSelection->getSelections()}]
[{foreach from=$oSelections item=oSelection}]
[{if $oSelection->isDisabled()}]js-disabled disabled[{/if}]
[{/foreach}]
[{/foreach}]
[QUOTE=bholiand;153183]
Ich habe in “extended_selectionlists_oxselection.php” einen getter geschrieben, um in der oben genannten foreach-Schleife pro Variante abzufragen, ob der Artikel kaufbar ist:
public function getArticleIsBuyable()
{
$isBuyable = false;
foreach ( $this->_aArticleIds as $sKey => $sArticleId ){
if ( $oArticle = $this->getArticle( $sKey ) ){
if ( $oArticle->isBuyable() ){
$isBuyable = true;
}
}
}
return $isBuyable;
}
Macht das so Sinn?[/QUOTE]
Den Getter hast wohl kaum du geschrieben, der ist im Github Code schon drin.
[QUOTE=leofonic;153219]Den Getter hast wohl kaum du geschrieben, der ist im Github Code schon drin.[/QUOTE]
Wäre nicht das erste Mal, dass sich hier jemand mit falschen Federn schmückt. 
@foxido: Vielen Dank für den Tip - nun funktioniert es endlich.
@leofonic: Es liegt mir fern, Deine Arbeit zu klauen und sicherlich schmücke ich mich nicht mit fremden Federn. Den Getter habe ich geschrieben und er ist in github nicht verfügbar. Ich nehme an, Du hast die Methodensignatur nicht genau angesehen…
Eine Frage noch: Ich kann keine Lizenzinoformationen zu Deinem Code finden. Wie darf er benutzt werden?
Ups…
OK - ich muss mich entschuldigen. Jetzt erst recht.
Du hast recht, der Getter ist tatsächlich enthalten.
Tut mir leid.
Ich hatte ein paar andere geschrieben und leicht verändert - und im Endeffekt übersehen das dieser funktional genau so vorhanden ist.
Sorry - war keine Absicht.
Ups…
OK - ich muss mich entschuldigen. Jetzt erst recht.
Du hast recht, der Getter ist tatsächlich enthalten.
Tut mir leid.
Ich hatte ein paar andere geschrieben und leicht verändert - und im Endeffekt übersehen das dieser funktional genau so vorhanden ist.
Sorry - war keine Absicht.