Vorkonfiguration eines "Artikel-Templates" herausfinden

Gesperrt
jaspu
Beiträge: 13
Registriert: Mo 25. Dez 2006, 20:42
Kontaktdaten:

Vorkonfiguration eines "Artikel-Templates" herausfinden

Beitrag von jaspu » Mo 30. Nov 2009, 00:35

Hallo

ich komm einfach nicht weiter! :-(

Ich habe ein Modul, das in verschiedenen Templates verwendet wird. Jedes Template ist bzgl. dieses Moduls vorkonfiguriert (drei Parameter), und das Modul soll dann für eine jeweils entsprechend andere Darstellung in einem Teaser sorgen.
Da sich diese Vorkonfiguration regelmäßig ändern kann und ich bzw. der Redakteur dann nicht alle bereits bestehenden Artikel oder deren Kategorien neu konfigurieren will, plane ich folgendes: Ich will in diesem Modul herausfinden, in welchem Template ich mich gerade befinde (also welches Template dem aktuellen Artikel hinterlegt ist) und dann die vorkonfigurierten Werte auslesen. Klingt alles so einfach, aber...

Kann mir jemand erklären ob und wie ich das hinkriege? Oder ganz andere Ideen?

Danke!!

conradius
Beiträge: 168
Registriert: Di 19. Jul 2005, 11:52
Wohnort: Wabern (Bern/CH)
Kontaktdaten:

Re: Vorkonfiguration eines "Artikel-Templates" herausfinden

Beitrag von conradius » Mo 30. Nov 2009, 11:45

hallo jaspu

Im Output-Bereich des Moduls sagt dir die Variable $cCurrentContainer in welchem Container es sich befindet. Mit dieser ID (das ist übrigens die Nummer, die du im HTML-Layout vorgibst) und der idtplcfg aus der [prefix]_art_lang kannst du die Vorkonfiguration eines bestimmten Templates auslesen.

Code: Alles auswählen

$sSql = "SELECT
		CONTCFG.container
	FROM
		".$cfg['tab']['art_lang']." AS ARTLANG,
		".$cfg['tab']['container_conf']." AS CONTCFG
		".$cfg['tab']['template_conf']." AS TPLCFG
		".$cfg['tab']['template']." AS TPL
	WHERE
		ARTLANG.idart = '".$idart."' 
		AND ARTLANG.idlang = '".$lang."' 
		AND TPLCFG.idtplcfg = ARTLANG.idtplcfg
		AND TPL.idtpl = TPLCFG.idtpl
		AND CONTCFG.idtplcfg = TPL.idtplcfg
		AND CONTCFG.number = '".$cCurrentContainer."'";

$db->query($sSql);
$db->next_record()
$aContainerConfiguration = explode('&', urldecode($db->f('container')));

foreach ($aContainerConfiguration as $key=>$aConfKeyValuePair) {
	$aConf = explode('=', $aConfKeyValuePair);
	echo $aConf[0].' => '.$aConf[1]."<br\>\n";
}
Dieser Code ist ungetestet, sollte aber - zumindest ideell - funktionieren.

Hast du dir sowas vorgestellt? Danke für dein Feedback.
Gruss
Conradius

jaspu
Beiträge: 13
Registriert: Mo 25. Dez 2006, 20:42
Kontaktdaten:

Re: Vorkonfiguration eines "Artikel-Templates" herausfinden

Beitrag von jaspu » Mo 30. Nov 2009, 13:17

Hi Conradius!

Vielen vielen Dank, hat mir sehr geholfen:

Code: Alles auswählen

$sSql = "SELECT CONTCFG.container
   FROM
      ".$cfg['tab']['art_lang']." AS ARTLANG,
      ".$cfg['tab']['container_conf']." AS CONTCFG,
      ".$cfg['tab']['tpl_conf']." AS TPLCFG,
      ".$cfg['tab']['tpl']." AS TPL
   WHERE
      ARTLANG.idart = '".$idart."'
      AND ARTLANG.idlang = '".$lang."'
      AND TPLCFG.idtplcfg = ARTLANG.idtplcfg
      AND TPL.idtpl = TPLCFG.idtpl
      AND CONTCFG.idtplcfg = TPL.idtplcfg
      AND CONTCFG.number = '".$cCurrentContainer."'";

jaspu
Beiträge: 13
Registriert: Mo 25. Dez 2006, 20:42
Kontaktdaten:

Re: Vorkonfiguration eines "Artikel-Templates" herausfinden

Beitrag von jaspu » Mo 30. Nov 2009, 14:45

Hallo nochmal,

ist doch noch nicht gelöst, denn: Sofern ein Artikel bereits eine separate Konfiguration hat, so wird diese herangezogen und nicht die Vorkonfiguration des Templates. Lässt sich das auch noch abfangen?

Danke!!

jaspu
Beiträge: 13
Registriert: Mo 25. Dez 2006, 20:42
Kontaktdaten:

Re: Vorkonfiguration eines "Artikel-Templates" herausfinden

Beitrag von jaspu » Mo 30. Nov 2009, 19:22

So funzt es:

Code: Alles auswählen

$sSql = "SELECT CONTCFG.container FROM ".$cfg['tab']['art_lang']." AS ARTLANG
   LEFT JOIN ".$cfg['tab']['tpl_conf']." AS TPLCFG ON TPLCFG.idtplcfg = ARTLANG.idtplcfg
   LEFT JOIN ".$cfg['tab']['tpl']." AS TPL ON TPLCFG.idtpl = TPL.idtpl
   LEFT JOIN ".$cfg['tab']['tpl_conf']." AS TPLCFG2 ON TPL.idtplcfg = TPLCFG2.idtplcfg
   LEFT JOIN ".$cfg['tab']['container_conf']." AS CONTCFG ON CONTCFG.idtplcfg = TPLCFG2.idtplcfg      
   WHERE ARTLANG.idart = '".$idart."'
   AND ARTLANG.idlang = '".$lang."'
   AND CONTCFG.number = '".$cCurrentContainer."'";

Gesperrt