Gelöst Überschrift in productlist/header.tpl im 5er Shop wieder ausgeben

mobade

Sehr aktives Mitglied
27. Februar 2017
832
150
Chemnitz
Firma
MobaDe - Modellbahn Dehs
Hi,
möchte gern wieder die Überschrift, die ich in der Wawi hinterlege ( siehe Foto ) im 5er Shop ausgeben.

ueberschrift-Kategorien.jpg

Im Shop 4 ging dies relativ einfach mit folgendem Code:
Code:
{if (isset($oNavigationsinfo->oKategorie->KategorieAttribute.ueberschrift) && $oNavigationsinfo->oKategorie->KategorieAttribute.ueberschrift|@strlen > 0)}
    <div class="title"><h1>{$oNavigationsinfo->oKategorie->KategorieAttribute.ueberschrift}</h1></div>
{else}
    <div class="title">{if $oNavigationsinfo->cName}<h1>{$oNavigationsinfo->cName}</h1>{/if}</div>
{/if}

im 5er Shop haben sich natürlich die Variablen bisl geändert
Code:
{if $oNavigationsinfo->getName()}
            <div class="title mb-4">
                {opcMountPoint id='opc_before_heading'}
                {block name='productlist-header-description-heading'}
                    <h1 class="h2">{$oNavigationsinfo->getName()}</h1>
                {/block}
            </div>
{/if}

wie lautet jetzt der Codeschnipsel ? damit man die Überschrift wieder ausgeben kann.

Da steh ich natürlich auf dem Schlauch :)

danke und grüssle Mario
 
  • Gefällt mir
Reaktionen: Theros

MHillmann

Moderator
Mitarbeiter
11. Oktober 2018
1.331
474
Hallo @basteldehs

Du kannst dir z. B. mit var_dump
Code:
{$oNavigationsinfo|var_dump}
den Inhalt von Variablen ausgeben lassen. Dort siehst du dann, dass die Variablen nur umbenannt wurden. Du kannst also mit
Code:
{$oNavigationsinfo->getCategory()->categoryFunctionAttributes.ueberschrift}
das gleiche erreichen wie vorher.

Viele Grüße
Michael
 

mobade

Sehr aktives Mitglied
27. Februar 2017
832
150
Chemnitz
Firma
MobaDe - Modellbahn Dehs
Hi @MHillmann,
vielen Dank! hat funktioniert oder nicht ganz so hart, wird wie gewünscht ausgeführt :)
anbei den Kompletten Code, sollte es jemand benötigen.

datei öffnen in templates/novachild/productlist/header.tpl ab Zeile: 56

Code:
        {if isset($oNavigationsinfo->getCategory()->categoryFunctionAttributes.ueberschrift && $oNavigationsinfo->getCategory()->categoryFunctionAttributes.ueberschrift|strlen > 0)}
            <div class="title mb-4">
                {opcMountPoint id='opc_before_heading'}
                {block name='productlist-header-description-heading'}
                    <h1 class="h2">{$oNavigationsinfo->getCategory()->categoryFunctionAttributes.ueberschrift}</h1>
                {/block}
            </div>
        {else}
            <div class="title mb-4">
                {opcMountPoint id='opc_before_heading'}
                {block name='productlist-header-description-heading'}
                    <h1 class="h2">{$oNavigationsinfo->getName()}</h1>
                {/block}
            </div>
        {/if}

grüssle Mario


--- closed ---
 
Zuletzt bearbeitet:

apalusa

Sehr aktives Mitglied
22. Oktober 2018
265
74
Aber gibt es auch eine Lösung für die Herstellerseite?
Ich hab das so gelöst, dass ich prüfe ob die Beschreibung des Herstellers "<h1>" enthält, falls ja, wird die Überschrift gar nicht ausgegeben, so dass automatisch die Überschrift aus der Beschreibung die einzige ist.
Hierfür habe ich in dem Block {block name='productlist-header-description-heading'} folgende Abfrage (wobei "alternate_h1" bei mir das Funktionsattribut ist um die Überschrift wie weiter oben besprochen zu setzen):
Code:
{if empty($AktuelleKategorie->categoryFunctionAttributes['alternate_h1']) && strpos($oNavigationsinfo->oMerkmalWert->cBeschreibung, '<h1>') === false && strpos($oNavigationsinfo->getManufacturer()->cBeschreibung, '<h1>') === false}
    <h1>{$oNavigationsinfo->getName()}</h1>
{/if}
 
  • Gefällt mir
Reaktionen: ManuelAnger

ManuelAnger

Aktives Mitglied
17. Mai 2021
24
1
Ich hab das so gelöst, dass ich prüfe ob die Beschreibung des Herstellers "<h1>" enthält, falls ja, wird die Überschrift gar nicht ausgegeben, so dass automatisch die Überschrift aus der Beschreibung die einzige ist.
Hierfür habe ich in dem Block {block name='productlist-header-description-heading'} folgende Abfrage (wobei "alternate_h1" bei mir das Funktionsattribut ist um die Überschrift wie weiter oben besprochen zu setzen):
Code:
{if empty($AktuelleKategorie->categoryFunctionAttributes['alternate_h1']) && strpos($oNavigationsinfo->oMerkmalWert->cBeschreibung, '<h1>') === false && strpos($oNavigationsinfo->getManufacturer()->cBeschreibung, '<h1>') === false}
    <h1>{$oNavigationsinfo->getName()}</h1>
{/if}
Okay danke und wo genau hast du das bearbeitet? Also in welcher Datei?
 

apalusa

Sehr aktives Mitglied
22. Oktober 2018
265
74
Okay danke und wo genau hast du das bearbeitet? Also in welcher Datei?
Wie oben templates/novachild/productlist/header.tpl. Die genaue Zeile kann ich nicht sagen, da ich selbst zu viele Anpassungen schon drin habe, aber eine Suche nach {$oNavigationsinfo->getName()} sollte dabei helfen.

Deswegen habe ich auch in einer Zeile 3 Konditionen, einmal für normale Kategorien mit Funktionsattributen, einmal für den Fall das es sich um eine Merkmalseite handelt (bei Merkmalen arbeite ich genauso wie bei Herstellern mit "<h1>" in der Beschreibung), und einmal für den Fall das es sich um eine Herstellerseite handelt. Alle drei dieser Seiten verwenden dieselbe Datei für den Header Bereich. Im Standard fällt das nicht auf, weil die Zeile <h1>{$oNavigationsinfo->getName()}</h1> alleine vollumfänglich alle Fälle abdeckt, aber bei Anpassung wie in unserem Fall muss hier entsprechend eine Abfrage abgreifen welche Art von Seite es gerade ist.
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.863
530
Hier das ganze mal mit Sprachen und Freifeld für die Kategorientitel. Also die Überschrift , wenn vorhanden aus dem Freifeld, sonst die normale Überschrift:

Code:
                {block name='productlist-header-description-heading'}
                    {if $lang == 'ger'}
                        {assign var=lang_neu value="kategorietitel"}
                    {else}
                        {assign var=lang_neu value="kategorietitel_en"}
                    {/if}
                  
                    {assign var=kattitel value="`$lang_neu`"}
                        {if $AktuelleKategorie->categoryFunctionAttributes.$kattitel != ""} 
                            <h1 class="h2">{$AktuelleKategorie->categoryFunctionAttributes.$kattitel}</h1>
                        {else}
                            <h1 class="h2">{$oNavigationsinfo->getName()}</h1>
                        {/if}
                {/block}
 

ChrisTS

Sehr aktives Mitglied
15. Oktober 2010
521
153
Nochmals zur Vervollständigung und 2 sprachig, für alle die nicht gleich klarkommen.

1. In JTL Admin> Eigene Felder>Bereich Kategorie>2 Felder anlegen
- kategorietitel
- kategorietitel_en

2. /templates/child/productlist/header.tpl änder

Suchen:

{if $oNavigationsinfo->getName() && $showTitle}
<div class="title">
{opcMountPoint id='opc_before_heading'}
{block name='productlist-header-description-heading'}
<h1 class="h2">{$oNavigationsinfo->getName()}</h1>
{/block}
</div>
{/if}

Ersetzen:

{block name='productlist-header-description-heading'}
{if $lang == 'ger'}
{assign var=lang_neu value="kategorietitel"}
{else}
{assign var=lang_neu value="kategorietitel_en"}
{/if}

{assign var=kattitel value="`$lang_neu`"}
{if $AktuelleKategorie->categoryFunctionAttributes.$kattitel != ""}
<h1 class="h2">{$AktuelleKategorie->categoryFunctionAttributes.$kattitel}</h1>
{else}
<h1 class="h2">{$oNavigationsinfo->getName()}</h1>
{/if}
{/block}
 

shelby5

Aktives Mitglied
16. November 2018
26
9
Moin,

ich benutze auch diese Lösung, allerdings ist mir aufgefallen, dass

Code:
$oNavigationsinfo->getCategory()->categoryFunctionAttributes.ueberschrift
im PHP- Log folgende Meldung wirft:
Code:
PHP Deprecated:  JTL\Catalog\Category\Kategorie: getter should be used to get categoryFunctionAttributes in /var/www/includes/src/MagicCompatibilityTrait.php on line 34

An anderer Stelle habe ich gefunden, dass die Abfrage der Attribute nicht mehr so:
->categoryFunctionAttributes,
sondern hier mit erfolgen soll:
->getFunctionalAttributes()
Nur bekomme ich es nicht hin, jmd eine Idee?

Danke & frohe Ostern
 

NoOne

Aktives Mitglied
16. März 2024
208
82
Moin,

ich benutze auch diese Lösung, allerdings ist mir aufgefallen, dass

Code:
$oNavigationsinfo->getCategory()->categoryFunctionAttributes.ueberschrift
im PHP- Log folgende Meldung wirft:
Code:
PHP Deprecated:  JTL\Catalog\Category\Kategorie: getter should be used to get categoryFunctionAttributes in /var/www/includes/src/MagicCompatibilityTrait.php on line 34

An anderer Stelle habe ich gefunden, dass die Abfrage der Attribute nicht mehr so:
->categoryFunctionAttributes,
sondern hier mit erfolgen soll:
->getFunctionalAttributes()
Nur bekomme ich es nicht hin, jmd eine Idee?

Danke & frohe Ostern
Ich bin mir nicht zu 100% sicher, aber ich glaube der korrekte "getter" hier sollte getCategoryFunctionAttributes sein. Also:

Code:
$oNavigationsinfo->getCategory()->getCategoryFunctionAttributes['ueberschrift']
 
  • Gefällt mir
Reaktionen: shelby5

firatec

Aktives Mitglied
4. Februar 2016
23
0
Hallo zusammen,

gibt es mittlerweile schon eine andere Lösung, ohne über Childtemplate die Änderung vorzunehmen? Wenn nur über Child möglich, könnte vielleicht jemand mal übersichtlich antworten, so dass das Vorgehen für jemand ohne vorhandenes Child leicht erkennbar ist?

Kann ich nicht auch ein CodeSnippet über die ZusatzCSS einfügen?

Vielen Dank und Grüße
 
Zuletzt bearbeitet:

firatec

Aktives Mitglied
4. Februar 2016
23
0
danke, das hat mich auf den "richtigen Weg" gebracht.
hab nun die Seite in der Doku gefunden, und den Wert als Attribut angelegt, statt als FunktionsAttribut.
https://jtl-devguide.readthedocs.io...emplates/tipps_tricks.html#funktionsattribute
so sieht es nun aus und klappt:
Code:
$oNavigationsinfo->getCategory()->getCategoryAttributeValue('kategorie_ueberschrift')
Bei uns funktioniert es auch, jedoch haben wir nach der Änderung plötzlich weiße Unterstriche im Footer unter den Informationen, Zahlung und Versand, ...

Kann jemand helfen? Wir finden die Ursache nicht.
 

Ähnliche Themen