Hauptkategorie der Artikel in der listenansicht ausgeben


#1

Hallo,

ich hab das forum schon durchsucht aber irgend wie hab ich nix gefunden weißt mi direkt weiter hilft.
Und zwar möchte ich in der kategorieansicht (z.b. listitem_grid.tpl) für jeden artikel gerne die hauptkategorie ausgeben.

Das würde ja mit folgenden sql befehl gehen …

select oxcatnid from oxobject2category where oxobjectid = '3e60ad808dd9664d9ac227d2ddcf0a6f' and oxtime = '0'

Wo und wie kann ich diesen sql befehl am besten unterbringen und dann auf das ergebniss in der listitem_grid.tpl zugreifen. irgend wie kann ich mich heute nicht konzentrieren.

Über paar tips und hilfe würde ich mich freuen.

Grüße


#2

Das sollte getCategory() liefern.


#3

Du meinst [{$oView->getCategory()}] ja? Wenn ich dies in der listitem_grid.tpl abrufen will dann gibt es folgende fehlermeldung und der shop funktioniert nicht mehr richtig.

OXID Logger.ERROR: Function 'getCategory' does not exist or is not accessible! (OxidEsales\Eshop\Application\Component\Widget\ArticleBox)
 ["[object] (OxidEsales\\Eshop\\Core\\Exception\\SystemComponentException(code: 0): Function 'getCategory' does not exist or is not accessible!

Grüße


#4

#5

#6

Für gewöhnlich [{$product->getCategory()}]

Letztlich dann in etwa so: [{assign var="oXXX" value=$product->getCategory()}] [{$oXXX->oxcategories__oxtitle->value}]


#7

[{assign var="oXXX" value=$product->getCategory()}] [{$oXXX->oxcategories__oxtitle->value}]

Das funktioniert, also vielen Dank dir :slight_smile:

Ich würde trotzdem gerne verstehen wieso [{$product->getCategory()}] allein nicht funktioniert.

Edit: Ich sehe gerade, das wenn ich [{$product->getCategory()}] nutze, dann spuckt oxid lediglich folgende fehlermeldung aus:

[13 Nov 09:50:13.316410 2018] [uncaught error] [type E_RECOVERABLE_ERROR] [file /var/www/vhosts/hq-fit.de/httpdocs/hqfit/source/tmp/smarty/7ccf5b45910bb882b4a35216a615c53c^%%80^801^801F4923%%listitem_grid.tpl.php] [line 88] [code ] [message Object of class dgMetaTag_oxCategory could not be converted to string]
[13 Nov 09:50:23.704336 2018] [uncaught error] [type E_RECOVERABLE_ERROR] [file /var/www/vhosts/hq-fit.de/httpdocs/hqfit/source/tmp/smarty/7ccf5b45910bb882b4a35216a615c53c^%%80^801^801F4923%%listitem_grid.tpl.php] [line 88] [code ] [message Object of class dgMetaTag_oxCategory could not be converted to string]

Bedeutet das oxid direkt selber kein fehler produziert sondern das metagtag modul anscheinend.

Grüße


#8

Einfach formuliert: In [{$product->getCategory()}] (Objekt) steckt mehr als eine Info. Entsprechend muss nach der Erstellung die Anweisung erfolgen, welche Info daraus ausgegeben werden soll. Mit [{$oXXX->oxcategories__oxid->value}] bekommst die ID usw.

Nachtrag: Die alleinige Verwendung von [{$product->getCategory()}] verursacht einen Fehler, weil das Objekt nicht in einen String konvertiert werden kann.


#9

Einfach formuliert: In [{$product->getCategory()}] (Objekt) steckt mehr als eine Info. Entsprechend muss nach der Erstellung die Anweisung erfolgen, welche Info daraus ausgegeben werden soll. Mit [{$oXXX->oxcategories__oxid->value}] bekommst die ID usw.

Ah ok verstehe. Danke dir :slight_smile:

Und jetzt werd ich bekloppt! Jetzt wollte ich die 2 zeilen in die list.tpl packen, da dort das umschliessende div für die “produktboxen” der listitem_grid.tpl liegt. Denn ich will mir die hauptkategorie als div-klasse anhängen damit ich entsprechende filter setzen kann …

Ich vermute mal weil dort nocht nicht alle relevanten informationen zu den artikeln geladen werden, sondern erst mit dem include der listitem_grid.tpl

<div class="productData col-xs-12[{if $type != 'line'}] col-sm-6 col-md-[{$iColIdent}][{/if}] productBox">
                    [{oxid_include_widget cl="oxwArticleBox" _parent=$oView->getClassName() nocookie=1 _navurlparams=$oViewConf->getNavUrlParams() iLinkType=$_product->getLinkType() _object=$_product anid=$_product->getId() sWidgetType=product sListType=listitem_$type iIndex=$testid blDisableToCart=$blDisableToCart isVatIncluded=$oView->isVatIncluded() showMainLink=$showMainLink recommid=$recommid owishid=$owishid toBasketFunction=$toBasketFunction removeFunction=$removeFunction altproduct=$altproduct inlist=$_product->isInList() skipESIforUser=1 testid=$testid}]
                </div>

Irgend wie werde ich nicht warm mix oxid v6.


#10

Achte auf den anderen Variablennamen “_”


#11

:see_no_evil:

Ich kann mich nur wiederholen und danke dir vielmals für deine hilfe! :slight_smile: