Main-Navigation bei ausgewählten Landingpages bzw. Einkaufswelten verstecken

Hi,

Ist es möglich, die Main-Navigation nur auf der ausgewählten Landingpagesbzw. Einkaufswelten zu verstecken?

Danke im Vorraus

Andy

Hat niemand eine Idee? -.-

Theoretisch: Ja
Du müsstest im Theme den Block für das Menü erweitern - wohl in der index.tpl (oder home.tpl?)

{block name='frontend_index_navigation_categories_top'}
{if !$hasEmotion && ($emotion.id != meineid)}
​{$smarty.block.parent}
{/if}
{/bock}	

Wird zeuerst getestet, ob überhaupt ein “emotion” ist. Wenn ja, wird getestet, ob die EmotionID die ausgesuchte ist - hier ggf. gegen ein Array testen.
Wenn keine Emotion, oder Emotion nicht in der Liste, wird der Block vom Theme normal generiert. Wenn aber die ID passt, bleibt der Block leer.

[Edit] Mit der $emotion.id bin ich mir noch nicht ganz sicher - eine Landingpage kann ja mehere einzelne EKW haben.
[Edit2] geht so nichts, hätte aber noch was im Kopf zum Ausprobieren - WENN Bedarf an eine Bastellösung im Theme besteht  heart

Hi,

wie kann man denn herausfinden welche emotion.id es ist?

Wie im Edit: ganz so einfach geht es doch nicht :slight_smile: Man müsste erst in einer Schleife iterieren um an alle Einzel-ID’s zu kommen.
Ist aber eine interessante Frage: ausgerechnet wo man es mal benötigt - als in den Einkaufswelten im Backend - steht mal keine. *ich such mal weiter*
 

geht es mit css wenn man irgendwie die emotion.id herausgefunen hat?

keine ahnung ob sowas gehen würde … also irgendwie dass man die emotionid nocht mit reinbaut?

@media screen and(min-width: @desktopViewportWidth) {
body {
   &.is--ctl-listing-492 und $emotion.id != meineid

{
     .navigation-main{ display:none;}  
    
   }
}
}

 

aber ich glaube das funzt so nicht…

Jetzt war ich wirklich mal zu schnell *lo* - ich habe ja gar keine Landingpage.
Nach dem ich eine Angelegt hatte, steht unter “Einstellungen” => “Link zur Landingpage”. Andere Landigpages werden ja einer Master zugeordnet.
In Meinem Fall “shopware.php?sViewport=campaign&emotionId=38” => emotionId=38
Das muss ich nochmal neu übergrübeln - aber vom Ansatz her bleibt es dabei:
Aus den Einstellungen die ID sammeln (ggf. vor SEO-Index erstellen), und im Template gegentesten. Nur welche VAR das ist, muss ich nochmal nachforschen.

Grübel mal selber was drüber, vielleicht komm ich am Wochenende auf eine Idee

*hmm* Wir hatten vor kurzen noch einen Thread, wie man einen {Block} für den body-tag um die Kategorie-ID erweitert. Hier könntest Du dich ggf. einklinken und der Seite bei passender ID noch eine weitere Class für den body übergeben. Da könntest Du dann das Menü per CSS verstecken. Dann musst Du aber einen anderen Theme-Block anpassen :wink:

War doch etwas zu komplex für einen Schnellschuss - ich versuche mir aber am WE vor dem TiVi was kleines einfallen zu lassen.

Ein weiterer Ansatz - nicht auf Fehler und Funktion getestet  blush

Ich weiss auch nicht, ob bei einer Landingpage die home.tpl oder index.tpl verwendet wird?!?

{extends file="parent:/frontend/index/index.tpl"} <== oder home.tpl

{block name='frontend_index_navigation_categories_top'}
{assign var="showmenu" value='true'}
{if $hasEmotion}
{assign var="idList" value=":"|@explode:{s namespace="/frontend/index" name="NoMenubyEmotionID"}{/s}}

{foreach $emotions as $emotion}
	{if in_array($emotion.id,$idList)}
		{assign var="showmenu" value='false'}
	{/if}
{/foreach}
{/if}

{if $showmenu == 'true'}
	​{$smarty.block.parent}
{/if}
{/bock}

Nach dem allerersten Aufruf einer Landingpage/EKW sollte unter den Textbausteinen im Pfad „/frontend/index“ der Textbaustein „NoMenubyEmotionID“ auftauchen. Diesen mit : getrennten ID’s füttern, bei denen das Menü ausgebendet werden soll. Ich weiss allerdings nicht, ob ich wie oben den Textbaustein so einbinden kann *also ggf. testen*  sad

{if $sCategoryContent.attribute.attribute6 != „ohne_navigation“}

Ich würde es am liebsten über die Abfrage eines Kategory-Attributes erledigen.

Also

{* Maincategories navigation top *}
{block name='frontend_index_navigation_categories_top'}
    {if $s_categories_attributes.attribute6 != "ohne_navigation"}
        
            
                {block name="frontend_index_navigation_categories_top_include"}
                    {include file='frontend/index/main-navigation.tpl'}
                {/block}
            
        
    {/if}
{/block}

 

Leider zieht er sich die Category-attribute nicht.

wo muss ich die noch hinterlegen, dass das ganze funktioniert?

Es geht nur ums Ausblenden?
 

{block name='frontend_index_navigation_categories_top'}
{if $sCategoryContent.attribute.attribute6 != "ohne_navigation"}
{$smarty.block.parent}
{/if}
{/block}

 

das hat mir schon mal weiter geholfen.

jetzt stellt sich noch die Problematik, dass das nicht für die Artikel übernommen wird, welche der Kategorie zugewiesen sind (nur wenn sie über die Kategorie aufgerufen werden)

sorry das mit dem Kommentaren bearbeiten bringt die Reihenfolge durcheinander -.-

Wenn Du einen Artikel direkt ohne extra Kategoriepfad aufrufst, müsste {$sCategoryContent} auf die erste Kategorie zeigen, die der Artikel zugeordnet ist. Wenn ein Artikel in mehreren ist, müsste das natürlich für jede Kategorie in der er enthalten ist, eingestellt werden - oder für alle relevanten Artikel zusätzlich über ein Artikel-Freitext.

Die betroffenen Artikel sind alle in mehreren Kategorien. wie kann ich das Attribut von der Kategorie, über welche ich gekommen bin (ist ja auch noch in der Url hinterlegt) an den Artikel übergeben?

Die aktuelle Kategorie-ID müsstest Du mit {$sArticle.categoryID} bekommen - die gleiche ID findest Du als System-ID in der Kategorieeinstellung. Dann halt im Template hardcoded auf die ID Prüfen - z.B. wie oben mit Array auf Emotion.

Perfekt :slight_smile:

hab das ganze über eine gekoppelte IF abfrage lösen können

{if $sCategoryContent.attribute.attribute6 != "ohne_navigation" && {$sArticle.categoryID} != "74"}

muss das ganze dann halt für den fall, dass noch mehr kategorien, bei deren Artikeln das Menü ausgeblendet werden soll, dazukommen um die jeweiligen IDs ergänzen.

*Das Antwort akzeptiert reisst aber wirklich alls aus den Zusammenhang* enlightened

Offtopic: Hast Du Dich schon einmal damit beschäftigt, wie man sich die Theme-Konfiguration um eigene Elemente erweitert? Das geht in der Theme.php. Ich habe inzwischen zwei Tabs in der Config, mit diversen “Einstellmöglichkeiten”. Bsp: Ich blende in einigen Kategorien in den Produktdetails den “In den Warenkorb”-Button aus. Die IDs der betroffenen Kategorien gebe ich durch “:” getrennt in einem Textfeld in der Theme-Konfiguration ein. Dann kann ich aus dem Backend heraus ohne unnötiges Plugin und Änderungen am Template die Liste ändern und über eine Theme-Variable mit Smarty darauf in .tpl zugreiffen.
Nur so als Anregung.

https://developers.shopware.com/designers-guide/theme-startup-guide/#customizing-your-theme

Noch nicht. Ich will den Shop erstmal so zum laufen bringen…

Werde mir das dann einmal anschauen, um die Pflege zu erleichtern.

Danke für den Tip (y)

Andy