Produktattribute in Template nur wenn ausgefüllt

Du hast Probleme mit der Formatierung der Anzeige und weißt nicht woher der Fehler kommt und wie du ihn beheben kannst?

Moderator: maennchen1.de

Antworten
machomaaan
Beiträge: 39
Registriert: 09.09.2014, 11:41
Lizenz: keine

Produktattribute in Template nur wenn ausgefüllt

Beitrag von machomaaan »

Hallo.

Ich habe mir ein paar Produktattribute in mein Template eingefügt und möchte die Bezeichnung des Attributes aber nur im Frontend anzeigen lassen, wenn das Attribut auch ausgefüllt ist.
Also wenn bei einem Attribut im Adminbereich keine Eingabe gemacht wurde, dann soll die Bezeichnung des Attributes auch nicht ausgegeben werden.

Hat jemand eine Idee?

Besten Dank im Voraus für Eure Mühe!

LG
Mario
MKJ
Beiträge: 3073
Registriert: 25.08.2010, 16:11

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von MKJ »

Du musst per PHP abfragen, ob die Variable gefüllt ist oder nicht. Je nach Ergebnis gibst Du das dann aus oder eben auch nicht.
Tipps und Tricks rund um wpShopGermany: www.my-blog-shop.de
Benutzeravatar
maennchen1.de
Administrator
Beiträge: 17874
Registriert: 14.08.2003, 16:55
Lizenz: wpShopGermany Enterprise
Wohnort: Thüringen, Ellersleben
Kontaktdaten:

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von maennchen1.de »

Hallo!
Die entsprechenden Dateien findest du in (user_)views/mods/mod_produktattribute/.
Kein Support per PN! Alle Fragen beantworten wir hier im Forum. Per PN bitte nur Passwörter, Namen und URLs - sofern notwendig.
Bitte vor dem posten lesen:
Wie poste ich eine Frage zu einem Problem?
FAQ / häufig gestellte Fragen
Anzeige-Fehler / Funktionsfehler in wpShopGermany erkennen und selbst beheben
PHTML-Dateien richtig verwenden (für eigene Anpassungen)
NoSyMe
Beiträge: 27
Registriert: 01.06.2015, 08:25
Lizenz: wpShopGermany Enterprise
Skype-Name: NoSyMe

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von NoSyMe »

Hi.

Mit folgendem Code kannst du nur die Werte eines bestimmten Produktattributs ausgeben:

Code: Alles auswählen

<?php echo $this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['wpsg_mod_produktattribute']['id'], 2)); ?>
Die Zahl am Ende mit der ID des Attributs austauschen.


Wenn du davor und/oder danach z.B. noch zusätzlichen HTML-Code ausgeben willst, benutze eine sinnvolle if-Abfrage.

Ich z.B. benutze die Produktattribut-ID 2 um Infos zur aktuellen Rabattaktion auszugeben. Bei mir sieht es daher in basket.html und overview.html so aus:

Code: Alles auswählen

<?php if (wpsg_ff($p['preis_prediscount']) > '0') { ?>
	<br /><span class="discount-info"><?php echo $this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['wpsg_mod_produktattribute']['id'], 2)); ?></span>
<?php } ?>
Sprich, wenn es einen Unrabattierten Preis gibt (und dementsprechend einen rabattierten), gebe den Inhalt von Produktattribut-ID 2 aus.


Um zu überprüfen, ob die Variable einen Wert hat und diesen dann auszugeben, sollte folgendes funktionieren:

Code: Alles auswählen

<?php if (!$this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['wpsg_mod_produktattribute']['id'], 2))) == '') { ?>
	<?php echo $this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['wpsg_mod_produktattribute']['id'], 2)); ?>
<?php } ?>
Ist allerdings nicht getestet.


Edit:
Wichtig ist, dass in der foreach-Schleife für die Produkte folgende Zeile weiterhin vorhanden ist, da sonst die Fähigkeit der Ausgabe der Produktattribute quasi nicht aktiviert wird:

Code: Alles auswählen

<?php $strBasketRow = ''; ob_start(); $this->callMods('basket_row', array(&$p, $i)); $strBasketRow = ob_get_contents(); ob_end_clean(); ?>
Diese müsste sich direkt hinter dem Öffnen der foreach-Schleife befinden.
machomaaan
Beiträge: 39
Registriert: 09.09.2014, 11:41
Lizenz: keine

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von machomaaan »

Danke für die Antworten.

Irgendwie check ich mich gerade nicht durch.

Ich möchte (jetzt mal im Produkttemplate) die Attributbezeichnung (z.B. Farbe) und dann das Attribut selbst (z.B. Blau) nur dann im Frontend anzeigen, wenn im Backend beim Attribut "Farbe" z.B. Blau, Rot, Grün,... eingetragen bzw. ausgewählt wurde. Wurde im Backend bei einem Attribut nichts ausgewählt (weil es z.B. dieses Attribut bei dem Artikel gar nicht gibt), dann soll im Frontend weder die Attributsbezeichnung noch das Attribut selbst stehen.

Anzeigen kann ich die Attributsbezeichnung im Produkttemplate ja mit

Code: Alles auswählen

<?php echo $this->callMod('wpsg_mod_produktattribute', 'getAttributeLabel', array(1)); ?>
und das Attribut selbst mit

Code: Alles auswählen

<?php echo $this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['data']['id'], 1)); ?>
Beispiel:

Produkt 1 gibt es in der Farbe blau, Produkt 2 aber nicht!

Frontend:

Produkt 1
Farbe: Blau, Größe: 15-4, Type: irgendwas

Produkt 2
Größe: 18-9, Type: irgendwas


Ich hoffe ich habs halbwegs verständlich beschrieben ;)
Ist vermutlich recht einfach, allerdings bin ich noch nicht ganz fit mit PHP.

Besten Dank im Voraus für Eure Hilfe!
machomaaan
Beiträge: 39
Registriert: 09.09.2014, 11:41
Lizenz: keine

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von machomaaan »

OK STOP!!!

Ich hab's :D

Code: Alles auswählen

<?php
    if($this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['data']['id'], 1)) == "")
    { echo ""; }
    else
    { echo $this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['data']['id'], 1)); }
?>
Scheint zu funktionieren!

Oder ist das suboptimal?


---------------------------
EDIT:
Ok und wie bekomme ich jetzt zB. den BEISTRICH und das LEERZEICHEN nach dem ersten Attributblock?



-------------------------
EDIT -> EDIT:
OK auch dass habe ich hinbekommen :D
einfach ein zweites ECHO im "else"-Bereich...
NoSyMe
Beiträge: 27
Registriert: 01.06.2015, 08:25
Lizenz: wpShopGermany Enterprise
Skype-Name: NoSyMe

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von NoSyMe »

Hey machomaaan.

Super, dass du es hinbekommen hast :)

Wenn du den Code noch etwas optimieren willst, kannst du folgendes machen:

Code: Alles auswählen

<?php
    if(!$this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['data']['id'], 1)) == "")
    { echo $this->callMod('wpsg_mod_produktattribute', 'getAttributeValue', array($this->view['data']['id'], 1)); }
?>
Nach der öffnenden Klammer hinter dem "if" ist ein Ausrufezeichen gesetzt. Dieses dreht die Meinung der Abfrage einfach um; zu einem "if not". So sparst du dir die Angabe vom "else".

So wäre die Abfrage jetzt: "wenn das Feld NICHT leer ist, echo ...". Quasi so, wie ich es schon weiter oben gepostet hatte :)
machomaaan
Beiträge: 39
Registriert: 09.09.2014, 11:41
Lizenz: keine

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von machomaaan »

NoSyMe,

herzlichen Dank für den Hinweis!

Sieht gleich übersichtlicher aus :D

Dankeschön!
NoSyMe
Beiträge: 27
Registriert: 01.06.2015, 08:25
Lizenz: wpShopGermany Enterprise
Skype-Name: NoSyMe

Re: Produktattribute in Template nur wenn ausgefüllt

Beitrag von NoSyMe »

Gerne :)
Antworten