Seite 1 von 1

Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Fr 14. Okt 2011, 15:25
von Big Cheese
Hallo zusammen

War schon lange nicht mehr hier. Wird deshalb auch Zeit sich mal wieder zu melden - wenn auch mit einem Problemchen :oops:

Ich habe die Startseite so konfiguriert, dass diese ohne Boxen angezeigt wird. Dies habe ich mittels folgender Änderung in der httpdocs / webs / includes / application_bottom.php erreicht:

Code: Alles auswählen

if($category_depth == 'top'){
$smarty->display('frontpage.html');
}else{
$smarty->display('index.html');
}
Nun möchte ich das selbe Template gerne auch auf der Produkte-Detailseite verwenden bzw. auch dort die gesamte col_left (also nicht nur die Boxen) ausblenden. Kann mir jemand sagen, wie die category_depth entsprechend erweitern muss? Mit =="products" hats leider nicht geklappt.

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Fr 14. Okt 2011, 15:42
von Xantiva
Mach doch mal ein ...

Code: Alles auswählen

var_dump($category_depth);
um zu sehen, was $category_depth denn tatsächlich beinhaltet. Und poste mal die gesamte if - Abfrage.

Ciao,
Mike

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Mo 17. Okt 2011, 09:06
von Big Cheese
Hallo Mike

Besten Dank für deine Antwort. Ich habs mal in die application_bottom.php (wie unten beschrieben) eingebaut. Auf der Frontseite wird lediglich eine neue leere Zeile eingeblendet.

Code: Alles auswählen

$smarty->assign('messageStack', $messageStack);
$smarty->assign('main_content', $main_content);
$smarty->caching = 0;
var_dump($category_depth);
if($category_depth == 'top'){
$smarty->display('frontpage.html');
}else{
$smarty->display('index.html');
}

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Mo 17. Okt 2011, 09:28
von Xantiva
Nur eine "leere" Zeile sollte nicht sein. Selbst wenn die Variable nicht definiert ist, müsste dort etwas stehen.

Dann verwende doch bitte mal:

Code: Alles auswählen

var_dump("$category_depth:", $category_depth);
Dann sollte auf jeden Fall der String "$category_depth" angezeigt werden (ggf. nur im Quelltext der Seite). Sonst wird der Code nicht ausgeführt.

Ciao,
Mike

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Mo 17. Okt 2011, 09:38
von Big Cheese
Aha, im Quelltext. Ja stimmt, dort sehe ich's nun. Komisch ist nur, dass die Produktedetailseite nur mit

Code: Alles auswählen

string(1) ":"
NULL
ausgegeben wird, während auf der Frontseite

Code: Alles auswählen

string(4) "top:"
string(3) "top"
ausgegeben wird. Kann die Produktedetailseite eventuell nicht definiert werden?

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Mo 17. Okt 2011, 12:34
von Xantiva
grr, immer die doppelten Auführungszeichen mit dem $ zusammen ;)

Code: Alles auswählen

var_dump('category_depth:', $category_depth);
Jetzt sollte auch der Text "category_depth:" da stehen ;)

Aber zum Thema: Ja, scheinbar wird die Produktseite da nicht korrekt übermittelt. Warum auch immer, kann ich im Moment auch nicht prüfen.

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Mo 17. Okt 2011, 12:47
von Doc Olson
Auf der Produktebene wird $category_depth überhaupt nicht ermittelt. Das findet nur in der index.php statt. Hurra xtc... (*würg*)

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Mo 17. Okt 2011, 16:11
von Xantiva
:o :lol: :lol: :lol:

Dann probiers doch einfach mal mit

Code: Alles auswählen

$category_depth = 'products';
in der /products_info.php ... (z. B. nach den ganzen require_once)

Ciao,
Mike

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: Di 18. Okt 2011, 08:05
von yogi
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}

Re: Boxen nach Kategorietiefe Ein- bzw. Ausblenden

Verfasst: So 6. Nov 2011, 17:18
von Big Cheese
Hallo zusammen

Bitte entschuldigt meine späte Antwort. Eine Grippe kam mir damals leider in die Quere. So konnte ich mein Umbauprojekt erst heute wieder in Angriff nehmen. Ein grosses Dankeschön auch an yogi für die detaillierte Hilfeleistung. Ich werde den Einbau heute Abend mal testen.