Jump to content
xt:Commerce Community Forum

Wie und wo Kategorie abfragen um Template zu setzen


teamgeist

Recommended Posts

alsooo...das template selber wird ja im admininterface angegeben unter "Mein Shop" - D.h. das Template wird in der Datenbank fest eingetragen und ist eigentlich nur administrativ änderbar. du müsstest also die variable für diesen templatepfad anpassen, je nach kategorieID. das könnte man an verschiedenen stellen tun. eigentlich bin ich grad faul um zu nachzugucken wo man das überall festlegen kann :) die Kategorieanzeige selber wird in der /templates/DeinTemplate/source/boxes/categories.php erzeugt

Link to comment
Share on other sites

Grundsätzlich habe ich schon einen templateswitcher eingebaut, vielleicht magst du ja mal unter www.1o-gmbh.de schauen, rechts unterm warenkorb ist er ;-)

Die Templates zu wandeln und unterschiedliche Kategorieboxen anzusteuern habe ich auch hinbekommen. Nun soll halt nur noch, je nach Kategorie-ID eins der Templates angesteuert werden und die Auswahlbox verschwinden.

Das geht auch in categories.php?

Link to comment
Share on other sites

Die Auswahlbox ist von www.blogpotato.de

Ich weiß nämlich grad gar nicht, in welcher Datei (welchen Dateien?) ich den Switchfall einbauen müsste.

xt:C Template Switcher für 3.04 SP2.1:

Alle Änderungen erfolgen auf eigene Gefahr und wie immer gilt: Backup nicht vergessen!

[template] steht für den Namen des Templates

/**
* Template Switcher
**/

/*-----------------------------------------------------------------------------------------------*/
includes/application_top.php
/*-----------------------------------------------------------------------------------------------*/

Suchen nach:
while ($configuration = xtc_db_fetch_array($configuration_query)) {
define($configuration['cfgKey'], $configuration['cfgValue']);
}

Ersetzen durch:
while ($configuration = xtc_db_fetch_array($configuration_query)) {
// modified
// msslovi0 2006-11-30
// Template-Switcher
// continued after session is started
if($configuration['cfgKey']=="CURRENT_TEMPLATE") {
$template = $configuration['cfgValue'];
} else {
define($configuration['cfgKey'], $configuration['cfgValue']);
}
// end msslovi0
}

Suchen nach:
// check the Agent

Danach einfügen:
// modified
// msslovi0 2006-11-30
// Template-Switcher, part II
if(isset($_GET["tpl"])) {
$_SESSION["tpl"] = $_GET["tpl"];
}
if(isset($_SESSION["tpl"]) && file_exists(DIR_FS_CATALOG."templates/".$_SESSION["tpl"])) {
define("CURRENT_TEMPLATE", $_SESSION["tpl"]);
} else {
define("CURRENT_TEMPLATE", $template);
}
// end msslovi0

/*-----------------------------------------------------------------------------------------------*/
includes/header.php
/*-----------------------------------------------------------------------------------------------*/
Suchen nach:
$smarty->assign('store_name',TITLE);

Danach einfügen:
// modified
// msslovi0 2006-11-30
// Template-Switcher, part III
$handle = opendir(DIR_FS_CATALOG."templates/");
$t_array = array();
while (false !== ($file = readdir($handle))) {
if(!preg_match("/^\./", $file)) {
$t_array[] = $file;
}
}
sort($t_array);
for($i=0;$i<sizeof($t_array);$i++) {
$tpls[] = array("id" => $t_array[$i], 'text' => $t_array[$i]);
}
$parameters = xtc_get_all_get_params(array ('tpl', 'x', 'y'));
parse_str(urldecode($parameters), $para);
$hidden = "";
for(reset($para); $k = key($para); next($para)) {
$hidden .= sprintf("<input type='hidden' name='%s' value='%s' />", $k, $para[$k]);
}
$t_select = xtc_draw_pull_down_menu('tpl', $tpls, CURRENT_TEMPLATE, 'onchange="this.form.submit()"');
$smarty->assign('TEMPLATE_SWITCHER', sprintf("%s%s <noscript>%s</noscript>%s</form>", xtc_draw_form('template-switcher', $PHP_SELF, 'get'), $t_select, xtc_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE), $hidden));
// end msslovi0

/*-----------------------------------------------------------------------------------------------*/
templates/[template]/index.html
/*-----------------------------------------------------------------------------------------------*/
{$TEMPLATE_SWITCHER} einbauen[/PHP]

Link to comment
Share on other sites

very nice...in dem fall sollte man, um es einigermassen standartisiert zu halten, beide files anpassen...die application_top.php und die header.php

Glaub mir, ich hab alles versuct, bin aber leider nicht so der PHP-Crack. Kannst du, oder wer auch immer es auch für nen "dummen" erläutern?

Link to comment
Share on other sites

Kein Ding, verlange gar nix und freu mich statt dessen über jeden Beitrag von dir und anderen (wo sind die eigentlich?) :confused:

Ich habe ja nun die Templatesteuerung über die oberen Reiter hinbekommen, indem ich ihm den Templatenamen mitgebe ( ?tpl=firstoffice )

Kann man so evtl festlegen, dass er bei cat=c6 dieses und bei anderen eben ein anderes übergibt?

Wirklich elegangt ist das aber auch nicht, gell...

Link to comment
Share on other sites

Hab ich mal irgendwo aufgeschnappt ...

Funzt soweit ganz gut und ist kein Hexenwerk,

ne Sache von 2 Minuten (falls verschiedene Templates vorhanden).

In Datei: SHOP_ROOT/index.php

=> suche nach: $smarty->display(CURRENT_TEMPLATE.'/index.html');

=> ersetze mit:


// Template wechseln nach Kategorien

 switch($current_category_id) 

 {

 case [B][COLOR="Red"]CATEGORY_ID[/COLOR][/B];

 $smarty->display(DIR_FS_DOCUMENT_ROOT.'templates/[B][COLOR="Red"]DEIN_TEMPLATE_1[/COLOR][/B]/index.html');

 break;


 case [B][COLOR="Red"]CATEGORY_ID[/COLOR][/B];

 $smarty->display(DIR_FS_DOCUMENT_ROOT.'templates/[B][COLOR="Red"]DEIN_TEMPLATE_2[/COLOR][/B]/index.html');

 break;


 default;

 $smarty->display(CURRENT_TEMPLATE.'/index.html');

 }

// Ende Template wechseln nach Kategorien


Folgende Angaben im obigen Code ändern:

CATEGORY_ID => gewünschte Kategorien ID

DEIN_TEMPLATE_1 => gewünschtes Template für diese Kategrie

... etc ...

Kannst also für jede einzelne Kategorie ein Template ansteuern,

auch mehr als zwei ...

Wenn eine Kategorie angesteuert wird die oben nicht abgefragt wird,

wird das Standarttemplate gesetzt !

viel Spaß damit ;-)

Link to comment
Share on other sites

	// Template wechseln nach Kategorien
//Ersetzt: $smarty->display(CURRENT_TEMPLATE.'/index.html');


switch($current_category_id)
{
case 6;
$smarty->display(DIR_FS_DOCUMENT_ROOT.'templates/firstoffice/index.html');
break;

case 11;
$smarty->display(DIR_FS_DOCUMENT_ROOT.'templates/creakon/index.html');
break;

case 4;
$smarty->display(DIR_FS_DOCUMENT_ROOT.'templates/topseller/index.html');
break;

default;
$smarty->display(CURRENT_TEMPLATE.'/index.html');
}
// Ende Template wechseln nach Kategorien[/PHP]

Habe es wie oben eingefügt gemacht. Habe es nun probiert, allerdings gibt er mir immer das default-Template aus, die ID-Angabe als Zahl langt doch aus, oder?

Ich wollte mir den Inhalt der Variable $current_category_id auch anzeigen lassen {pgp} echo $current_category_id {/php} brachte allerdings kein Ergebnis, habe diese in die index.html des Templates vor {$main_content} eingebunden, langt das nicht aus?

Link to comment
Share on other sites

Das Problem an diesem Script ist, das trotzdem die stylesheet.css vom default-template geladen wird

Du hast vollkommen recht, der Wechsel des Templates funktioniert, siehe meine Kategorieüberschriften, das Desing als solches bleibt gleich wegen des Stylesheets. Nun muss ich also mal schauen, wie ich das stylesheet Kategorieabhängig geladen bekomme

Link to comment
Share on other sites

Yupp. Ich schraube wie gesagt wie gesagt an einem Modul, wo man im Admininterface bequem für jede Kategorie ein Template zuweisen kann ohne im Quellcode was machen zu müssen.

Bisher funktionierts einwandfrei und ich bin grad an den Feinheiten. Mal gucken wie ich das mi dem Stylesheet mache. Wahrscheinlich optional ob das stylesheet das templates oder des default-templates genutzt werden soll :D

Link to comment
Share on other sites

  • 2 weeks later...

möchte mich hier mal kurz reinhängen und einen kleinen Anstoss geben, das was Ihr da vorhabt geht viel einfacher, man muss keine komplett andere index.html einer bestimmten Content ID bzw Cat. zuweisen um flexible bzw dynamische Gestaltung zu realisieren, viel einfacher geht das wenn man für jede ID eine individuelle <body id="whatever"> zuweisst. So braucht man nur eine einzige Index.html und kann alles via CSS steuern. :D

Link to comment
Share on other sites

  • 4 weeks later...

Hallo,

kann mir vielleicht jemand helfen und sagen, wie man den Templatewechsel über die Navigationsreiter realisiert? Ich will also kein Wechsel nach Kategorien, sondern einfach nach der Hauptnavigation.

Vielleicht kann mir jemanden einen Tipp geben wie man das macht.

Habe 3 verschiedene Templates die sich je nach Klicken der 3 Navigationspunkte "Ihr Konto", "Warenkorb", "Kasse" ändern.

Vielen Dank mal im voraus.

Gruß

Timo

Link to comment
Share on other sites

  • 2 months later...

Klingt ja auch nicht schlecht und ich würde mich gern mal daran versuchen. An welcher Stelle weise ich denn die ID zu?

Hallo zusammen!

Dieses Thema würde mich auch sehr interessieren: der Wechsel von Seitenelementen (Grafiken, Farben) je nach Kategorie-ID wäre wirklich eine gute Sache! (Nun ja, solange man es nicht übertreibt! :rolleyes: )

Die Suche hier im Forum bringt zwar vieles aus diesem Bereich (u.a. dieser Hinweis auf eine Abfrage der Kategorie-Namen), wo ich schon dachte, Hach! Das ist es doch! und dann feststellen musste, daß der Aufruf von {$CATEGORY_NAMES[0]} kein Echo brachte. Da habe ich viellleicht eine Voraussetzung nicht erfüllt, die dort vielleicht nicht so in den Vordergrund gestelllt wurde, vielleicht einen fehlenden include oder so?!

Das ganze mit einer ID des BODY-Tags über CSS zu steuern finde ich ja auch echt gut. Am besten wäre es, wenn man eine globale (also überall gültige) SMARTY-Variable hätte, die einem die ID oder den Namen der obersten Kategorien-Hierarchie zur Verfügung stellte, die man dann mit einfachen IF-ELSE-ENDIF Abfragen in Smarty nutzen kann... ;)

Ich bin kein Experte, eher PHP-Anfänger, und würde mich sehr freuen, wenn hier die Diskussion nocheinmal auflebte.

Ich stelle dann auch gerne mal ein Snippet hier herein, die einen dynamischen Bilderwechsel der Produktbilder via MouseOver in der product_info_v1.html bietet, wenn es mehr als 1 Produktbild gibt ...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...