Neues Modul: "Bildsuche"

Gesperrt
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Neues Modul: "Bildsuche"

Beitrag von malsdgtac » Sa 9. Apr 2005, 09:25

Hallo,
ich habe vor ein paar Wochen ein neues Modul ausgearbeitet, dass ich jetzt bereits auf zwei anderen System ebenfalls ohne Probleme eingesetzt habe. Daher möchte ich es hier veröffentlichen. Als Grundlage dafür habe ich alle möglichen anderen Module sowie das API verwendet.

Worum geht es dabei? Wer kennt das nicht, man hat eine größere Internetpräsenz und auf jeder einzelnen Seite gibt es das Bild 1 (Image 1) schön man kann dieses auf jeder Seite auswählen (oder eine alternative dafür angegeben) aber das ist oft zu aufwendig (oder zu langweilig).

1. Mein Modul sucht sich nun als erstes jenes Bild welches für die Seite angegeben wurde.
2. Findet es keines sucht er nach dem Bild welches der Startartikel dieser Kategorie zugeordnet hat. (z.B. bei Übersichtseiten wie bei News od. so muß somit nicht jedem einzelnen Artikel ein Bild zugeordnet werden)
3. Hat dieser Artikel auch kein Bild, such er nach dem Bild, dass dem Startartikel der übergeordneten Kategorie zugeordnet ist

Abgesehen von dem selbstständigen Suchen der Bilder, gibt das Modul auch noch die Bildbeschreibung als ALT-Text aus.

So hier nun der Code:

Code: Alles auswählen

Input: bleibt leer


Output:
<?php

/*
--> Modulname  : Bildsuche
--> Author     : smac
--> Created    : 09-04-2005
--> Modified   : 09-04-2005
*/

if ("CMS_IMG[1]" != "") {
	if (!$edit){
		echo "<img src='CMS_IMG[1]' alt='CMS_IMGDESCR[1]' border='0'>";
	} else {
		echo "<img src='CMS_IMG[1]' alt='' border='0'>";
	}
}  else {

	$articleListOptions = array("idcat" => $idcat,          // Idcat (Muss angegeben werden) 
		"lang"  => $lang,       // Sprach id (optional), standard ist die aktive Sprache 
		"client"=> $client,     // Mandant id (optional), standard ist der aktive Mandant 
		"start" => true,        // Startartikel 
		"order" => "created",   // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang' 
	  "direction" => "asc"); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc') 

// Artikellisten Objekt erzeugen 
	$articleList = new ArticleCollection($articleListOptions); 
	$startartikel = $articleList->startArticle(); 
	$bild = $startartikel->getContent('img', 1); 

//	echo "bild startartikel".$bild."<br>";
	if ($bild==""||$bild==0){

		$sql = "SELECT 
			a.parentid 
			FROM
				".$cfg["tab"]["cat"]." AS a, 
				".$cfg["tab"]["cat_lang"]." AS b 
			WHERE
				a.idclient  = '".$client."' AND 
				b.idlang    = '".$lang."' AND 
				a.idcat     = b.idcat AND 
				a.idcat     = '".$idcat."'"; 

		$db->query($sql); 
		$db->next_record(); 
		$parent = $db->f("parentid"); 

		$articleListOptions = array("idcat" => $parent,          // Idcat (Muss angegeben werden) 
			"lang"  => $lang,       // Sprach id (optional), standard ist die aktive Sprache 
			"client"=> $client,     // Mandant id (optional), standard ist der aktive Mandant 
			"start" => true,        // Startartikel 
			"order" => "created",   // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang' 
		  "direction" => "asc"); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc') 

// Artikellisten Objekt erzeugen 
	$articleList = new ArticleCollection($articleListOptions); 
	$startartikel = $articleList->startArticle(); 
	$bild = $startartikel->getContent('img', 1); 
	}
//	echo "bild parent".$bild."<br>";

	if ($bild==""||$bild==0){

		$sql = "SELECT 
			a.parentid 
			FROM
				".$cfg["tab"]["cat"]." AS a, 
				".$cfg["tab"]["cat_lang"]." AS b 
			WHERE
				a.idclient  = '".$client."' AND 
				b.idlang    = '".$lang."' AND 
				a.idcat     = b.idcat AND 
				a.idcat     = '".$parent."'"; 

		$db->query($sql); 
		$db->next_record(); 
		$parent2 = $db->f("parentid"); 

		$articleListOptions = array("idcat" => $parent2,          // Idcat (Muss angegeben werden) 
			"lang"  => $lang,       // Sprach id (optional), standard ist die aktive Sprache 
			"client"=> $client,     // Mandant id (optional), standard ist der aktive Mandant 
			"start" => true,        // Startartikel 
			"order" => "created",   // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang' 
		  "direction" => "asc"); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc') 

// Artikellisten Objekt erzeugen 
	$articleList = new ArticleCollection($articleListOptions); 
	$startartikel = $articleList->startArticle(); 
	$bild = $startartikel->getContent('img', 1); 
	}

	$sql = "SELECT `filename` , `dirname` , `description` FROM ".$cfg["tab"]["upl"]." WHERE `idupl` = ".$bild;
		$db->query($sql);
		while ( $db->next_record() ) {
			$bildpfad = $db->f("dirname").$db->f("filename");
			$bildbeschreibung = $db->f("description"); 
		}
	if (!$edit){
		echo "<img src='upload/".$bildpfad."' alt='".$bildbeschreibung."' border='0'>";
	} else {
		echo "<img src='upload/".$bildpfad."' alt='' border='0'>";
	}
}
if ($edit){
echo "CMS_IMGDESCR[1]";
}
?>
So ich hoffe, das hilft jemanden weiter. Vielen Dank auch für all die Hilfe, die ich auch immer hier im Forum finde.

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » So 10. Apr 2005, 14:38

intressante variante für dieses problem...
*** make your own tools (wishlist :: thx)

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac » Mi 12. Sep 2007, 17:00

Hallo,

ich habe das Modul nach längerer Zeit wieder einmal verwendet. Dabei habe ich festgestellt, dass das hier veröffentlichte Modul nur 2 Navigationsebenen berücksichtigt.

Daher habe ich das Modul jetzt etwas überarbeitet, sodass nun alle Ebenen aufwärts nach einem zugeordneten Bild gesucht wird.

Hier der neue Code für den Output:

Code: Alles auswählen

<?php

/* 
--> Modulname  : Bildsuche 
--> Author     : smac 
--> Created    : 09-04-2005 
--> Modified   : 12-09-2007 
*/ 


if ("CMS_IMG[1]" != "") {
	if (!$edit){
        echo "<img src='CMS_IMG[1]' alt='CMS_IMGTITLE[1]' />";
	} else {
		echo "<img src='CMS_IMG[1]' alt='' border='0'>";
	}
} else {

	$bild ="";
	$parent = $idcat;
	
	while ($bild=="" || $bild==0 ){
	
		if ($parent == "") {
			break;
		} else {
		
			$articleListOptions = array("idcat" => $parent,          // Idcat (Muss angegeben werden) 
				"lang"  => $lang,       // Sprach id (optional), standard ist die aktive Sprache 
				"client"=> $client,     // Mandant id (optional), standard ist der aktive Mandant 
				"start" => true,        // Startartikel 
				"order" => "created",   // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang' 
			  "direction" => "asc"); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc') 
	
		// Artikellisten Objekt erzeugen 
			$articleList = new ArticleCollection($articleListOptions); 
			$startartikel = $articleList->startArticle(); 
			$bild = $startartikel->getContent('img', 1);
		
			$sql = "SELECT 
				a.parentid 
				FROM
					".$cfg["tab"]["cat"]." AS a, 
					".$cfg["tab"]["cat_lang"]." AS b 
				WHERE
					a.idclient  = '".$client."' AND 
					b.idlang    = '".$lang."' AND 
					a.idcat     = b.idcat AND 
					a.idcat     = '".$parent."'"; 
	
			$db->query($sql); 
			$db->next_record(); 
			$parent = $db->f("parentid");
		} 
		
	}

	if ($bild != "" && $bild != 0){
		$sql = "SELECT `filename` , `dirname` , `description` FROM `smac_upl` WHERE `idupl` = ".$bild;
		$db->query($sql);
		$db->next_record();
		$bildpfad = $db->f("dirname").$db->f("filename");
		$bildbeschreibung = $db->f("description"); 
	} else {
		$bildpfad = "bilder/bild.jpg"; // Standardbild wenn keines gefunden wird
		$bildbeschreibung = "";
	}
		
	if (!$edit){
		echo "<img src='upload/".$bildpfad."' alt='".$bildbeschreibung."' />";
	}

}


if ($edit){
echo "CMS_IMGDESCR[1]";
}

?>

Gesperrt