Neu opc_before_category_top kann nicht gewählt werden

  • Hinweis: Am 25.02.2025 zwischen 21:30 u. 22:30 Uhr - Einschränkungen beim Login und Erreichen folgender Dienste: FFN, Kundencenter, Admin, JTL-Shop, JTL-Wawi, Lizenzserver, ISI Gateway, Vouchers, Kassensysteme, Plan&Produce, Versand. Grund dafür ist ein Major Upgrade des OAuth-Dienstes. Vielen Dank für euer Verständnis!

Peter D.

Neues Mitglied
7. Juni 2024
9
0
Hi zusammen,

wir arbeiten gerade mit dem Plugin "OPC Kategorie Liste" von Zaxxo. Mit diesem Plugin erstellen wir Kategorievorschaubilder per Drag and Drop im Onpgae Composer. So weit so gut ... nur haben wir bei einigen Seiten im Onpage Compser bei der Seitenstruktur nicht die Möglichkeit den Inhalt auf "opc_before_category_top" zu setzen, sprich unter die Kategorieüberschrift. Dies ist nur bei ein paar Seiten so. Auf den Seiten ohne "opc_before_category_top" haben wir nur die Möglichkeit "opc_before_main" und "opc_before_heading".

Hat da jemand eine Ahnung wie wir das Element der Seitenstruktur "opc_before_category_top" aktivieren können?

Vielen Dank im Voraus.
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.546
303
Hi zusammen,

wir arbeiten gerade mit dem Plugin "OPC Kategorie Liste" von Zaxxo. Mit diesem Plugin erstellen wir Kategorievorschaubilder per Drag and Drop im Onpgae Composer. So weit so gut ... nur haben wir bei einigen Seiten im Onpage Compser bei der Seitenstruktur nicht die Möglichkeit den Inhalt auf "opc_before_category_top" zu setzen, sprich unter die Kategorieüberschrift. Dies ist nur bei ein paar Seiten so. Auf den Seiten ohne "opc_before_category_top" haben wir nur die Möglichkeit "opc_before_main" und "opc_before_heading".

Hat da jemand eine Ahnung wie wir das Element der Seitenstruktur "opc_before_category_top" aktivieren können?

Vielen Dank im Voraus.
Dieser Mountpoint wird nur gerendert, wenn die Kategorie leer ist, also keine Artikel enthält und wenn es Kategorietopartikel gibt.
 
  • Gefällt mir
Reaktionen: Peter D.

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.546
303
Hi ... das habe ich leider noch nicht ganz verstanden. Reicht es wenn wir z. B. in jeder Kategorie über die WAWI Bestseller definieren und dann können wir den Inhalt des Plugins unter dem Heading darstellen?
Über die WAWI können keine Bestseller definiert werden, das macht der Shop automatisch anhand der umgesetzten Einheiten innerhalb des definierten Zeitraums. Am Besten wäre es einen Mountpoint zu wählen der unabhängig davon immer vorhanden ist. Ansonsten einfach einen neuen im Template anlegen, der an keine Bedingung geknüpft ist. Bsp: productlist/header.tpl im Child ergänzen:

Code:
{block name='productlist-header-include-extension' append}
    {opcMountPoint id='opc_my_mountpoint'}
{/block}
 
  • Gefällt mir
Reaktionen: Peter D.

Peter D.

Neues Mitglied
7. Juni 2024
9
0
Über die WAWI können keine Bestseller definiert werden, das macht der Shop automatisch anhand der umgesetzten Einheiten innerhalb des definierten Zeitraums. Am Besten wäre es einen Mountpoint zu wählen der unabhängig davon immer vorhanden ist. Ansonsten einfach einen neuen im Template anlegen, der an keine Bedingung geknüpft ist. Bsp: productlist/header.tpl im Child ergänzen:

Code:
{block name='productlist-header-include-extension' append}
    {opcMountPoint id='opc_my_mountpoint'}
{/block}
Moin,

vielen Dank für die Info. Der Code müsste also auf dem Server productlist/header.tpl im Child ergänzt werden, damit wir immer einen Block haben, der unter dem "heading" (Kategorieüberschrift + Beschreibungstext WAWI) steht?
Wo müsste der Code dann stehen ... einfach ganz oben als erstes? Wäre super wenn du noch einmal antworten könntest.

Unser Code aus der NOVAChild/productlist/header.tpl:


{block name='productlist-header'}
{if !isset($oNavigationsinfo)
|| (!$oNavigationsinfo->getManufacturer() && !$oNavigationsinfo->getCharacteristicValue() && !$oNavigationsinfo->getCategory())}
{opcMountPoint id='opc_before_heading'}
{block name='productlist-header-heading'}
<div class="h1">{$Suchergebnisse->getSearchTermWrite()}</div>
{/block}
{/if}


{if $Suchergebnisse->getSearchUnsuccessful() == true}
{opcMountPoint id='opc_before_no_results'}
{block name='productlist-header-alert'}
{alert variant="info"}{lang key='noResults' section='productOverview'}{/alert}
{/block}
{block name='productlist-header-form-search'}
{form id="suche2" action=$ShopURL method="get" slide=true}
<fieldset>
{formgroup label-for="searchkey" label="{lang key='searchText'}"}
{input type="text" name="suchausdruck" value="{if $Suchergebnisse->getSearchTerm()}{$Suchergebnisse->getSearchTerm()|escape:'htmlall'}{/if}"
id="searchkey"}
{/formgroup}
{button variant="primary" type="submit" value="1"}{lang key='searchAgain' section='productOverview'}{/button}
</fieldset>
{/form}
{/block}
{/if}

{block name='productlist-header-include-extension'}
{include file='snippets/extension.tpl'}
{/block}

{block name='productlist-header-description'}
{$showTitle = true}
{$showImage = true}
{$navData = null}
{if $oNavigationsinfo->getCategory() !== null}
{$showTitle = in_array($Einstellungen['navigationsfilter']['kategorie_bild_anzeigen'], ['Y', 'BT'])}
{$showImage = in_array($Einstellungen['navigationsfilter']['kategorie_bild_anzeigen'], ['B', 'BT'])}
{$navData = $oNavigationsinfo->getCategory()}
{if $Einstellungen.template.megamenu.mobile_start_category === 'Y'}
<input type="hidden" id="category-id" value="{$oNavigationsinfo->getCategory()->getID()}">
{/if}
{elseif $oNavigationsinfo->getManufacturer() !== null}
{$showImage = in_array($Einstellungen['navigationsfilter']['hersteller_bild_anzeigen'], ['B', 'BT'])}
{$showTitle = in_array($Einstellungen['navigationsfilter']['hersteller_bild_anzeigen'], ['Y', 'BT'])}
{$navData = $oNavigationsinfo->getManufacturer()}
{elseif $oNavigationsinfo->getCharacteristicValue() !== null}
{$showImage = in_array($Einstellungen['navigationsfilter']['merkmalwert_bild_anzeigen'], ['B', 'BT'])}
{$showTitle = in_array($Einstellungen['navigationsfilter']['merkmalwert_bild_anzeigen'], ['Y', 'BT'])}
{$navData = $oNavigationsinfo->getCharacteristicValue()}
{/if}
{if $oNavigationsinfo->getImageURL() !== $smarty.const.BILD_KEIN_KATEGORIEBILD_VORHANDEN
&& $oNavigationsinfo->getImageURL() !== 'gfx/keinBild_kl.gif'
&& $oNavigationsinfo->getImageURL() !== $imageBaseURL|cat:$smarty.const.BILD_KEIN_KATEGORIEBILD_VORHANDEN
&& $showImage}
{include file='snippets/image.tpl'
class='productlist-header-description-image'
item=$navData
square=false
lazy=false
sizes="{if !$bExclusive && $boxes.left !== null && !empty(trim(strip_tags($boxes.left))) && (($Einstellungen.template.theme.left_sidebar === 'Y' && $boxesLeftActive) || $smarty.const.PAGE_ARTIKELLISTE === $nSeitenTyp)}(min-width:992px)
67vw, (min-width: 1300px) 75vw, 100vw{/if} "
alt="{if $oNavigationsinfo->getCategory() !== null && !empty($navData->getImageAlt())}{$navData->getImageAlt()}{else}{$navData->getDescription()|default:''|strip_tags|truncate:50}{/if}"}
{/if}
{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}

{if $Einstellungen.navigationsfilter.kategorie_beschreibung_anzeigen === 'Y'
&& $oNavigationsinfo->getCategory() !== null
&& $oNavigationsinfo->getCategory()->getDescription()|strlen > 0}
{block name='productlist-header-description-category'}
<div class="desc">
<p>{$oNavigationsinfo->getCategory()->getDescription()|truncate:200:"...":true} <a class="seo-read-more" href="#kk-seo"> weiterlesen </a></p>
</div>
{/block}
{/if}
{if $Einstellungen.navigationsfilter.hersteller_beschreibung_anzeigen === 'Y'
&& $oNavigationsinfo->getManufacturer() !== null
&& $oNavigationsinfo->getManufacturer()->getDescription()|strlen > 0}
{block name='productlist-header-description-manufacturers'}
<div class="desc">
<p>{$oNavigationsinfo->getManufacturer()->getDescription()}</p>
</div>
{/block}
{/if}
{if $Einstellungen.navigationsfilter.merkmalwert_beschreibung_anzeigen === 'Y'
&& $oNavigationsinfo->getCharacteristicValue() !== null
&& $oNavigationsinfo->getCharacteristicValue()->getDescription()|strlen > 0}
{block name='productlist-header-description-attributes'}
<div class="desc">
<p>{$oNavigationsinfo->getCharacteristicValue()->getDescription()}</p>
</div>
{/block}
{/if}
{/block}

{block name='productlist-header-subcategories'}
{if $Einstellungen.navigationsfilter.artikeluebersicht_bild_anzeigen !== 'N' && $oUnterKategorien_arr|count > 0}
{opcMountPoint id='opc_before_subcategories'}

{* <pre>
{$AktuelleKategorie|@var_dump}
{foreach name=unterkats from=$oUnterKategorien_arr item=Unterkat }
{$Unterkat|@var_dump}
{/foreach}
</pre> *}

{* Artikel in Oberkategorie *}
{if $nSeitenTyp == 2}
{* WENN KATEGORIE != ROLLEN *}
{if $smarty.server.REQUEST_URI != "/Konfigurator"} {*quick ´n dirty*}
{* tauschen gegen KategorieID *}
{get_product_list kKategorie="96" bReturn="true" nLimit="9999" cAssign="lenkrollen"}
{foreach name=unterkats from=$oUnterKategorien_arr item=Unterkat key=$kKey}
{get_product_list kKategorie="{$Unterkat->kKategorie}" bReturn="true" nLimit="1" cAssign="prdlist"}
{foreach name=artikel from=$prdlist item=Artikel}
{if $style === 'list'}
<div class="main-cat-list col-12 col-lg-6 col-xl-12">
{/if}

<div class="product-wrapper " itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<meta itemprop="position" content="{$smarty.foreach.artikel.iteration}">

{* Rollen und Räder - eigene Artikelliste *}
{if $kKey == 96 && $kKey != 27 }
{include file='productlist/item_wheellist.tpl' tplscope=$style}
{else}
{include file='productlist/item_list.tpl' tplscope=$style}
{/if}
{* {else}
{include file='productlist/item_box.tpl' tplscope=$style class='thumbnail'}
{/if} *}
</div>
{if $style === 'list'}
</div>
{/if}
{/foreach}
{/foreach}
{/if}
{/if}
{* Unterkategorien & Unter-unterkategorie -Teaser ausblenden *}

{* {row class="row-eq-height content-cats-small"}
{foreach $oUnterKategorien_arr as $subCategory}
{col cols=12 md=4 lg=3}
<div class="sub-categories">
{if $Einstellungen.navigationsfilter.artikeluebersicht_bild_anzeigen !== 'Y'}
{block name='productlist-header-subcategories-image'}
{link href=$subCategory->getURL()}
{$imgAlt = $subCategory->getAttribute('img_alt')}
{$imgSrc = $subCategory->getImage(\JTL\Media\Image::SIZE_SM)}
<div class="subcategories-image d-none d-md-flex">
{image fluid=true lazy=true webp=true src=$imgSrc width="{if strpos($imgSrc, 'keinBild.gif') !== false}130{else}
{$subCategory->getImageWidth(\JTL\Media\Image::SIZE_MD)}{/if}"|strip height="{if strpos($imgSrc, 'keinBild.gif') !== false} 130 {else}
{$subCategory->getImageHeight(\JTL\Media\Image::SIZE_MD)}
{/if}"|strip
alt="{if empty($imgAlt->cWert)}{$subCategory->getName()}{else}{$imgAlt->cWert}{/if}"
srcset="
{$subCategory->getImage(\JTL\Media\Image::SIZE_XS)}
{$subCategory->getImageWidth(\JTL\Media\Image::SIZE_XS)}w,
{$subCategory->getImage(\JTL\Media\Image::SIZE_SM)}
{$subCategory->getImageWidth(\JTL\Media\Image::SIZE_SM)}w,
{$subCategory->getImage(\JTL\Media\Image::SIZE_MD)}
{$subCategory->getImageWidth(\JTL\Media\Image::SIZE_MD)}w"|strip
sizes="(min-width: 992px) 25vw, 33vw"
}
</div>
{/link}
{/block}
{/if}
<div>
{if $Einstellungen.navigationsfilter.artikeluebersicht_bild_anzeigen !== 'B'}
{block name='productlist-header-subcategories-link'}
<div class="caption">
{link href=$subCategory->getURL()}
{$subCategory->getName()}
{/link}
</div>
{/block}
{/if}
{if $Einstellungen.navigationsfilter.unterkategorien_beschreibung_anzeigen === 'Y'
&& !empty($subCategory->getDescription())}
{block name='productlist-header-subcategories-description'}
<p class="item_desc small text-muted-util d-none d-md-block">
{$subCategory->getDescription()|strip_tags|truncate:68}
</p>
{/block}
{/if}
{if $Einstellungen.navigationsfilter.unterkategorien_lvl2_anzeigen === 'Y'}
{if $subCategory->hasChildren()}
{block name='productlist-header-subcategories-list'}
<hr class="d-none d-md-block">
<ul class="d-none d-md-block">
{foreach $subCategory->getChildren() as $subChild}
<li>
{link href=$subChild->getURL() title=$subChild->getName()}{$subChild->getName()}{/link}
</li>
{/foreach}
</ul>
{/block}
{/if}
{/if}
</div>
</div>
{/col}
{/foreach}
{/row} *}
{/if}
{/block}
{block name='productlist-header-include-selection-wizard'}
{include file='selectionwizard/index.tpl' container=false}
{/block}

{if $Suchergebnisse->getProducts()|count < 1 && isset($KategorieInhalt)}
{if isset($KategorieInhalt->TopArtikel->elemente) && $KategorieInhalt->TopArtikel->elemente|count > 0}
{block name='productlist-header-include-product-slider-top'}
{opcMountPoint id='opc_before_category_top'}
{lang key='topOffer' assign='slidertitle'}
{include file='snippets/product_slider.tpl' id='slider-top-products'
productlist=$KategorieInhalt->TopArtikel->elemente title=$slidertitle}
{/block}
{/if}

{if isset($KategorieInhalt->BestsellerArtikel->elemente) && $KategorieInhalt->BestsellerArtikel->elemente|count > 0}
{block name='productlist-header-include-product-slider-bestseller'}
{opcMountPoint id='opc_before_category_bestseller'}
{lang key='bestsellers' assign='slidertitle'}
{include file='snippets/product_slider.tpl' id='slider-bestseller-products'
productlist=$KategorieInhalt->BestsellerArtikel->elemente title=$slidertitle}
{/block}
{/if}
{/if}

{block name='productlist-header-include-productlist-page-nav'}
{include file='snippets/productlist_page_nav.tpl' navid='header'}
{/block}

{block name='productlist-header-include-active-filter'}
{if $NaviFilter->getFilterCount() > 0}
{$alertList->displayAlertByKey('noFilterResults')}
{/if}
{include file='snippets/filter/active_filter.tpl'}
{/block}
{/block}
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.546
303
Soe wie ich oben geschrieben habe:
Code:
{block name='productlist-header-include-extension' append}
    {opcMountPoint id='opc_my_mountpoint'}
{/block}

Da die header.tpl aber bereits vollständig existiert, anstatt neue Codes an bestehende Blöcke zu hängen, müsste der gesamte Block entsprechend angepasst werden:
Code:
{block name='productlist-header-include-extension'}
  {include file='snippets/extension.tpl'}
  {opcMountPoint id='opc_my_mountpoint'}
{/block}
 
  • Gefällt mir
Reaktionen: Peter D.

Peter D.

Neues Mitglied
7. Juni 2024
9
0
Soe wie ich oben geschrieben habe:
Code:
{block name='productlist-header-include-extension' append}
    {opcMountPoint id='opc_my_mountpoint'}
{/block}

Da die header.tpl aber bereits vollständig existiert, anstatt neue Codes an bestehende Blöcke zu hängen, müsste der gesamte Block entsprechend angepasst werden:
Code:
{block name='productlist-header-include-extension'}
  {include file='snippets/extension.tpl'}
  {opcMountPoint id='opc_my_mountpoint'}
{/block}
So sieht ja der Block aus dem Template aktuell aus:

{block name='productlist-header'}
{if !isset($oNavigationsinfo)
|| (!$oNavigationsinfo->getManufacturer() && !$oNavigationsinfo->getCharacteristicValue() && !$oNavigationsinfo->getCategory())}
{opcMountPoint id='opc_before_heading'}
{block name='productlist-header-heading'}
<div class="h1">{$Suchergebnisse->getSearchTermWrite()}</div>
{/block}


Wie muss der denn dann angepasst aussehen? Wäre super lieb wenn du mir noch einmal helfen könntest
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.546
303
So sieht ja der Block aus dem Template aktuell aus:

{block name='productlist-header'}
{if !isset($oNavigationsinfo)
|| (!$oNavigationsinfo->getManufacturer() && !$oNavigationsinfo->getCharacteristicValue() && !$oNavigationsinfo->getCategory())}
{opcMountPoint id='opc_before_heading'}
{block name='productlist-header-heading'}
<div class="h1">{$Suchergebnisse->getSearchTermWrite()}</div>
{/block}


Wie muss der denn dann angepasst aussehen? Wäre super lieb wenn du mir noch einmal helfen könntest
Das ist doch ein ganz anderer Block. Der zu verwendende heißt "productlist-header-include-extension" und nicht "productlist-header".
 
  • Gefällt mir
Reaktionen: Peter D.

Peter D.

Neues Mitglied
7. Juni 2024
9
0
Das ist doch ein ganz anderer Block. Der zu verwendende heißt "productlist-header-include-extension" und nicht "productlist-header".
Diese Variante hat gepasst:

{block name='productlist-header-include-extension' append}
{opcMountPoint id='opc_my_mountpoint'}
{/block}

Die andere Version mit anpassen des Blocks hat nicht zum gewünschten Ergebnis geführt.
Vielen Dank für die Lösung!
 

Ähnliche Themen