Hallo, ich möchte statt den Icons New, Highlight und ESD noch ein weiteres in der Artikelbox anzeigen zu lassen. Derzeit versuche ich es über die box_article.tpl wie folgt: [code]{* cat5*} {block name=‚frontend_listing_box_article_cat‘} {if $sCategory.id == 5}
{/if} {/block}[/code] Es soll die Kategorie des angezeigten Artikels ausgewertet werden und wenn es die Kategorie 5 ist das entsprechende Icon anzeigen. Bild und Kategorie sind angelegt, die css dazu sieht so aus: div.ico_5 { background: transparent url(’…/images/ico_5.gif’) no-repeat 0 0; left: -7px; height: 31px; top: 20px; } Ich habe damit leider keinen Erfolg. Fehlt hier noch „Etwas“ oder bin ich total auf der falschen Spur? Mit der Bitte um Hilfe Grüße Erik
Hallo, vielen Dank das Du mir hilfst! Das Div wird nicht angezeigt. Leider kenne ich mich auch diesbezüglich nicht so gut aus. Den Block habe ich von der Anzeige der neuen Artikel “New” kopiert und nur die Category-Abfrage sowie die neue Klasse in der CSS angelegt. Wie ich eben gestöbert habe ist mir aufgefallen, dass wohl noch eine tpl benötigt worauf dies “frontend_listing_box_article_cat” zugreifen kann? Kannst Du mir bitte weiterhelfen? Grüße Erik
Hallo Dreamland, was genau hast Du denn jetzt gemacht - welche Dateien , wo angelegt? Zuerst korrigiere den Tippfehler hinter dem “ico_5” gehört ein >: 1. folgende Datei im eigenen Template anlegen: frontend/listing/box_article.tpl Inhalt: [code] {extends file=‘parent:frontend/listing/box_article.tpl’} {* cat5*} {block name=‘frontend_listing_box_article_cat’} {if $sCategory.id == 5}
{/if} {/block}[/code] Damit wird der originale Inhalt überschrieben, wenn der alte erhalten bleiben soll, muss der Block mit append oder prepend erweitert werden. Doku zu SMARTY-Vererbung: www.smarty.net oder das, was Shopware als Tutorial anbietet. Wenn da nur ein neues Background-Image hin soll, bietet es sich auch an im CSS der Klasse ico_5 nur die Eigenschaft background-image zu setzen und das DIV zu positionieren. div.ico_5 { background-image: url(’…/images/ico_5.gif’) no-repeat 0 0; }
Hallo hth, derzeit habe ich folgende Änderungen vorgenommen… In meinem Template die box_article.tpl erweitert mit: [code]{* cat5*} {block name=‚frontend_listing_box_article_cat‘ append} {if $sCategory.id == 5}
{/if} {/block}[/code] Die box_article.tpl habe ich dabei komplett aus dem _default-Template übernommen. In meiner CSS steht: div.ico\_5 { background-image: url('../images/ico\_5.gif') no-repeat 0 0; left: 7px; height: 31px; top: 20px; } Das war es auch schon mit meinem derzeitigen Wissensstand. Mich macht selbst stutzig: name='frontend\_listing\_box\_article\_cat' hier habe ich einfach das „_cat“ zur Überschaulichkeit angehangen, sicher fehlt hier das gewisse Etwas (zusätzliche .tpl / oder ein Verweis?)… Über weitere Hilfe freue ich mich sehr! Gruß Erik
Hallo, die box_article.tpl sollte aus dem emotion übernommen werden, aber nicht die ganze Datei, sondern nur den Block erstellen, den man ändern oder ergänzen möchte. Ich habe vorhin nicht aufgepasst und das angehängte cat übersehen. Damit ist es ein neuer Block und würde die alten nicht überschreiben. Natürlich kann er dann auch keine alten Blöcke ergänzen. Trotzdem im eigenen Emotion-Template die im ersten Post genannte Datei erstellen und nur den gewünschten Block einfügen. Für den Anfang ohne if-Abfrage, einfach nur: {block name=‘frontend_listing_box_article_cat’}
{se name=‘ListingBoxNew’}{/se}
{/block} Dann müsste immer die Grafik angezeigt werden. Unbedingt die Caches im Backend und im Browser löschen, bevor man die Änderung überprüft. Wenn das klappt, dann die if-Abfrage einbauen. Hat die Variable denn auf der überprüften Seite wirklich den Wert 5 gehabt? Viel Erfolg
Hallo, ich werde es gleich mal testen. Die Abfrage sollte aber sein, ich möchte das Icon nur ausgeben, wenn der Artikel der entsprechenden Category zugehört. Das Icon generell anzeigen zu lassen habe ich schon hinbekommen, nur halt nicht mit der Abfrage. Hast Du hier noch eine Idee? Danke und Grüße Erik
Hallo Dreamland, gibt es denn die Variable überhaupt? Ich meine, im Standard-Shopware nicht, check das mal in Firebug. Es gibt da ein Array das sCategories heißt, da kannst Du die ID aber nicht so abfragen. Ansonsten kannst Du die aktuelle Kategorie über $sCategoryCurrent abfragen. {if $sCategoryCurrent == 5}
Hallo hth, ich bin jetzt einen großen Schritt weiter ;-). Mit folgendem: [code] {* Cat *} {block name=‘frontend_listing_box_article_actions’ append} {if $sCategoryCurrent == 5}
{/if} {/block}[/code] wird jetzt das Icon angezeigt, leider nur wenn ich in der passenden Category bin (in dem Fall 5). Wenn ich: [code]{* Cat *} {block name=‘frontend_listing_box_article_actions’ append} {if $sArticle}
{/if} {/block}[/code] nutze, dann kommt Shopweit das Icon bei allen Artikeln. Beide Varianten sind schon sehr interessant. Nun möchte ich aber gern (mein Ziel) das Icon bei Artikeln aus der Category 5 auf anderen Seiten ausgeben lassen…zum Beispiel auf der Startseite wo sich auch Artikel aus einen anderen Category befinden. Nur die Cat. 5 Artikel sollen das Icon haben. Gibt es da noch eine Lösung? Sicher muss statt $sCategoryCurrent == 5} hier etwas Anderes angegeben werden. Vielen Dank und Grüße Erik
Hallo Erik, wenn Du if $sArticles abfragst, dann prüft er doch nur, ob die Variable existiert. Wir haben etwan aneinander vorbei geredet, ich hatte es nach meinem letzten Post bereits befürchtet. Du kannst nur Variablen abfragen, die im Backen an die Views - dein Template - übergeben werden. Spezifisch für die Eigenschaften eines Artikels sind die Arrays unter $sArticles. Die kannst Du mit Firebug abfragen. Meines Wissens nach gibt es dort keine Variable “Kategoriezugehörigkeit des Artikels; das können ja auch beliebig viele Kategorien sein und somit müsste es wieder ein Array sein”, damit wäre dein Vorhaben zum Scheitern verurteilt. Du kannst aber ein Attribut-Feld abfragen. Das sind die Freitext-Felder in den Stammdaten im Backend. Damit lassen sich artikelspezifische Abfragen im Frontend einfach realisieren. Gefällt dir dies nicht, musst Du in den PHP-Skripten eine entsprechende Variable erzeugen und SMARTY zuweisen. Viele Grüße HTH
Hallo hth, vielen Dank für Deine Informationen! Ich habe jetzt einmal ein Freitext-Felder (attr5) als Checkbox angelegt, wie kann ich dies denn auswerten? Hoffentlich halte ich Dich nicht von viel wichtigeren Dingen ab! Grüße Erik
Hallo Erik, wenn Du diese Abfragen in Smarty machen willst, dann musst Du dich Wohl oder Übel in Zukunft einlesen. Die Links habe ich dir ja bereits geschickt. Du siehst die Variablen in Firebug/FirePHP unten in der Konsole. Die Aktivierung von Firephp findest Du für Version 3 im Wiki erklärt, funktioniert genauso in Version 4. Bei dir wird wahrscheinlich $sArticle.attr5 richtig sein. Checkbox habe ich noch nie verwendet, probier mal folgende Abfragen aus oder schau mit Firephp nach, was es für ein Variablentyp ist und was bei „gechecket“ und „ungechecket“ in der Variable steht. {if $sArticle.attr5}…{/if} {if $sArticle.attr5 == „1“}…{/if} {if $sArticle.attr5 === „True“}…{/if}