Hallo BigCheese,
wie Ole ja nun schon rausgefunden hat wird die "category_depth" *nur* in der index.php gesetzt.
Somit sollte die von dir programmierte Abfrage wie folgt aussehen:
Code: Alles auswählen
if (isset($category_depth) and $category_depth == 'top') {
...
um nun festzustellen ob eine Produktseite angezeigt wird könntest Du diese Abfrage um das Script von dem es aufgerufen wurde erweitern:
die Umgebungsvariable
$_SERVER['SCRIPT_NAME'] enthält das was Du brauchst. Diese enthält den Scriptnamen der vom Apache aufgerufen wird, also entweder
- index.php oder
- products_info.php oder (eins der anderen...)
Nun könntest Du die Abfrage wie folgt bauen:
Code: Alles auswählen
if (basename($_SEVER['SCRIPT_NAME']) == FILENAME_DEFAULT and $category_depth == 'top' or basename($_SERVER['SCRIPT_NAME']) == FILENAME_PRODUCT_INFO) {
...
Um auch in der application_bottom.php updatefähig zu bleiben könnte man diese Abfrage nun auch ins Template "verlegen". Hierfür halt die index.html aus dem Template entsprechend anpassen. Hierfür musst Du die $_SERVER Variable natürlich über das äquivalent in Smarty aufrufen. Die Variable $category_depth gibt es jedoch nicht im Template - und wir wollen den CORE nicht anpassen. Es gibt jedoch die "_GET" und "_REQUEST" variablen, die mit "cat" oder manufacturers_id bei der index.php gefüllt sind. Wenn nun eine der beiden Variablen gesetzt ist so handelt es sich
nicht um die Startseite.
Benenne die index.html => index2.html um und erstelle eine index.html mit folgendem Inhalt (oder baue es entsprechend in die index.html ein):
Code: Alles auswählen
{if $smarty.server.SCRIPT_NAME|basename == $smarty.const.FILENAME_DEFAULT and
!$smarty.get.cat and !$smarty.request.manufacturers_id or
$smarty.server.SCRIPT_NAME|basename == $smarty.const.FILENAME_PRODUCT_INFO}
{* Sonderseite *}
{include frontpage.html}
{else}
{* normale Seite *}
{include index2.html}
{/if}