Artikelnummer ersetzen

Hi,

irgendwie sind mir diese Smarty tags noch nicht ganz klar.

Ich würde mir gerne ein “Mindestbestellmengen-System” basteln

Das funktioniert auch ganz gut in dem ich per Rabatt --> Dreingabe einen Artikel hinzufüge
der “Mindestebestellmenge von Warengruppe XYZ nicht erreicht” heißt (Artikel wurde extra erstellt mit Zusatztext…).

Hat der Kunde nun zuwenig Artikel im Warenkorb wird die Dreingabe angezeigt.
Sobald er über die Menge kommt verschwindet der Artikel wieder.

Jetzt möchte ich bei diesen Artikeln die Artikelnummer ersetzen.

Die Mindestbestellmengenartikel besitzen alle die Artikelnummer “MBMxxxxxxxxx”.

per PHP würd ich per preg_match schauen ob der Artikel eine Artikelnummer mit MBM im Text hat und diesen per str_replace ersetzen leider kann ich erst garnicht auf die Variable drauf zugreifen

In der basketcontents wird ja in Zeile 71 die Artikelnummer über [{$basketproduct->oxarticles__oxartnum->value}]
ausgeben.

Jetzt hab ich mir gedacht ich schreib in die tpl datei einfach php code (ja ich weiß das macht man nicht und Module sind dafür gemacht worden) aber nachdem ich mich noch net so ganz in alles eingelesen habe ist das die einfachste lösung.

Aber wie greif ich den Smartytag ab ?

Das hier funktioniert nicht :slight_smile:

 [{php}]
        echo"!Anfang!";
 $artnummer = $basketproduct->oxarticles__oxartnum->value;

if (preg_match("/MBM00000001/i", $artnummer)) {
               echo" MINDESTBESTELLMNEGE!!"; }*/
               echo"!Ende!";


[{/php}]

Die Senioren werden jetzt bestimmt die Hände übern Kopf schlagen und sagen das ist doch total einfach. Aber ich find dazu nichts im Forum oder ich benutze einfach die falschen Suchbegriffe.

Im Endeffekt muss man nur die Artikelnummer ersetzen und den “Weiter zum nächsten Schritt” ausgrauen. Dann hätte man komplett mit Boardmitteln eine Mindestbestellmenge etabliert wenn man für jede Warengruppe unterschiedliche Mindestbestellmengen benötigt.

Hoffe es kann mir jemand erklären wie ich das am besten lösen kann.

Hock jetzt seit 3 stunden hier und komm irgendwie nicht weiter.

Danke schonmal

Gruß
Fabi

Moin Fabi,

ich weiss ja nicht, wie du deine Stunden ansetzt, aber günstiger wirds vorraussichtlich HIER :smiley:
Sind zwar noch ein oder zwei kleine Bugs drin, aber für das was du willst sollte es reichen.

Beste Grüsse

Thomas

Danke für deine Antwort.
Da habe ich schon angefragt.

Das Funktioniert nur auf Artikelebene nicht auf Warengruppen.

Moin Fabi,

eben, du kannst dann sogar für jeden einzelnen Artikel eine Mindest- oder Höchst- oder WasWeissIch-Menge festlegen. Genauer gehts doch nicht…

Beste Grüsse

Thomas

Hallo Tom,
aber das will ich nicht :slight_smile:

Ich habe 20 Artikel in einer Warengruppe und die haben *insgesamt" eine Mindestbestellmenge von 10 St.

Also 2x artikel a
5x Artikel b
und 3x Artikel c

Die Module die es zu kaufen gibt funktionieren nur auf [B]einzelne[/B] Artikel und das bringt mir nichts. Deshalb der Umweg über die Dreingabe.

Ich muss eigtl. nurnoch die Artikelnummer ersetzen und den weiter button ausgrauen / andere Funktion geben z.b. Popup das es erst weitergeht wenn alle Mindestbestellmengen erreicht sind.

Gruß
Fabi

Bzw. ich muss es auf Warengruppen ansetzen
und nicht auf einzelen Artikel.

Also wie ich dir Artikelnummer ersetze habe ich rausgefunden.

mit dieser Zeile in der basketcontents.tpl Zeile 72 (Azure CE4.5.9)

[{if $basketproduct->oxarticles__oxartnum->value eq “MBM00000001” }]
<font color="#ff0000"><b>MINDESTBESTELLMENGE<b/></font> [{else}]
[{ oxmultilang ident=“PAGE_CHECKOUT_BASKETCONTENTS_ARTNOMBER” }] [{ $basketproduct->oxarticles__oxartnum->value }]
[{/if}]

jetzt muss ich es nurnnoch ein bisschen anpassen.

Der Button ist aber in der basket.tpl welche keinen zugriff auf die Artikel selbst hat zum. nicht auf die Artikelnummer…

In Smartys kannst Du mit strpos() den gewünschten String von der Artikelnummer z.B. so separieren:

[{ if strpos($basketproduct->oxarticles__oxartnum ->value,“MBM”)!==false }]MBM
[{else }]
[{ $basketproduct->oxarticles__oxartnum->value }]
[{/if}]

Funktioniert super, jetzt noch den button austauschen und es ist schon geschafft :slight_smile:
Danke

Hi hab ein kleines neues Problem,
was ich bis jetzt erreichen wollte funktoniert auch alles.

Jetzt ist das problem das es ja die basket.tpl und die basketcontents.tpl gibt.

in der basketcontents.tpl hab ich diesn code

 [{if strpos($basketproduct->oxarticles__oxartnum->value,"MBM")!==false }] 
              <font color="#ff0000"><b>MINDESTBESTELLMENGE<b/></font>
            [{assign var="mbm_test" value="mbm"}]
      [{else}]
              [{ oxmultilang ident="PAGE_CHECKOUT_BASKETCONTENTS_ARTNOMBER" }] [{ $basketproduct->oxarticles__oxartnum->value }]
      [{/if}]    

und in der basket.tpl

 [{if $mbm_test}]
                             <a class="submitButton largeButton" >Bitte Mindestbestellmenge beachten!</a>
                           
                            [{else}]
                           <button type="submit" class="submitButton largeButton nextStep">[{ oxmultilang ident="PAGE_CHECKOUT_BASKET_NEXTSTEP" }]</button>
                            [{/if}]

Die Basket.tpl included ja die Basketcontents.tpl
leider kann ich nicht auf die Variable $mbm_test zugreifen.

Gibt es irgendwie die möglichkeit eine Variable bei einem include weiterzugeben?
evtl. per form und hidden textfeld?

wenn ich den include durch die basketcontents.tpl ersetze (include befehl löschen und den kompletten inhalt der basketcontents einfüge) funktioniert die abfrage

aber mit dem original include funktioniert es eben nicht.

Danke schonmal
Gruß
Fabi

Habe jetzt herausgefunden das es eigtl. mit diesem aufruf funktionieren müsste

{assign var=“mbm_test” value=“true” scope=parent}

http://www.smarty.net/docs/en/language.function.assign.tpl 7.11

kann es sein das es diese funktion nicht im oxid smarty gibt ?

sodele ich hoff es ist kein Spam wenn ich immer wieder hier weiter poste.

Also nach weiterer Recherche habe ich herausgefunden das Scope so nichts bringt.

Dafür gibt es aber ein Workaround das hinzuzufügen.

Damit funktioniert auch alles was ich mir gedacht habe.

Jetzt ist meine eigtl. Frage

WIE sicher ist das ganze?

Öffne ich, wenn ich diese funktion einbaue, allen Leute die Türen da nun auf alle Variablen im Shop zugegriffen werden kann ?

Danke schonmal

WIE sicher ist das ganze?

Öffne ich, wenn ich diese funktion einbaue, allen Leute die Türen da nun auf alle Variablen im Shop zugegriffen werden kann ?

Für Entwickler ganz sicher - Danke.

Ob das für Hacker relevant wäre ist eine andere Frage, die ich nicht beantworten kann.

ok danke

Thread kann geschlossen werden.
Hab es jetzt fertig hinbekommen und steht unter Module.

http://www.oxid-esales.com/forum/showthread.php?p=86930#top

Viel Spass damit

Gruß
Fabi