Modul für Hintergrundbild-Auswahl

Gesperrt
JSommer
Beiträge: 324
Registriert: Fr 5. Sep 2003, 12:32
Wohnort: 192.168.0.11
Kontaktdaten:

Modul für Hintergrundbild-Auswahl

Beitrag von JSommer »

Servus miteinander,
da ich nunmal eine absolute Null in Php bin und auch bleibe (mit manchen Schicksalen muss man sich nun eben im Leben abfinden) bräuchte ich ein kleines Codeschnipsel, welches mir als Modul erlaubt, in Bild auszuwählen, dass dann im Hintergrund platziert wird - da gibts doch im <body>Tag die Möglichkeit einen style="background bla bla bla" fixed oder no-repead oder so reinzuhauen - quasi so:
<body style="background: url(../bilder/bg_startseite.jpg) no-repeat fixed center top">

und das müsste das Modul übernehmen, hat da vielleicht jemand was für mich??? :-)

Danke schonmal im Voraus (mit einer tiefen Verbeugung für alle Coder!)
Jürgen :D
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

VOILA

is ne schnelle abwandlung des standard Illustration moduls

input(unchanged):

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :     Illustration
* Author(s)   :     Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

#Selected img directory
$cms_dirname = "CMS_VALUE[1]";
#Selected img
$cms_filename = "CMS_VALUE[2]";

if ($cms_dirname == '' || $cms_dirname == '0') {
	$cms_dirname = 'bilder/';
}

#Get paths
$sql = "SELECT
	htmlpath, frontendpath
	FROM
	".$cfg["tab"]["clients"]." 
	WHERE
	idclient = ".$client." ";

$db->query($sql);

if ($db->next_record()) {
	$htmlpath = $db->f('htmlpath');
	$frontendpath = $db->f('frontendpath');
}

#Choose image folder
echo '<table cellpadding="0" cellspacing="0" border="0">
	<tr><td class="text_medium" style="padding:5px">'.mi18n("Das Bild soll folgende Größe haben: 170 x 80 px").'</td></tr>
	<tr><td class="text_medium" style="padding:5px">'.mi18n("Bildverzeichnis wählen").': </td></tr>
	<tr><td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[1]" style="width:200px">';

#Get upload directories
$sql = "SELECT DISTINCT
	dirname
	FROM
	".$cfg["tab"]["upl"]."
	WHERE
	idclient='$client' AND
	filetype IN ('jpeg','jpg','gif','png')
	ORDER BY
	dirname";

$db->query($sql);

$selected = false;
while ($db->next_record()) {
	$dirname = $db->f('dirname');
	if ($cms_dirname != $dirname) {
		echo '<option value="'.$dirname.'">&nbsp;'.$dirname.'</option>';
	} else {
		$selected = true;
		echo '<option value="'.$dirname.'" selected="selected">&nbsp;'.$dirname.'</option>';
	}
}

if (!$selected) {
	echo '<option value="0" selected="selected">'.i18n("Bitte wählen").'</option>';
} else {
	echo '<option value="0">'.i18n("Bitte wählen").'</option>';
}

#Choose image file
echo '</select>&nbsp;<input type="image" src="images/submit.gif">
	<tr><td class="text_medium" style="padding:5px">'.mi18n("Bild wählen").': </td></tr>
	<tr><td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[2]" style="width:200px">';
echo '<option value="0" selected="selected">'.i18n("Bitte wählen").'</option>';

if ($cms_dirname != '0') {
	#Get uploaded files
	$sql = "SELECT 
			filename
			FROM
			".$cfg["tab"]["upl"]."
			WHERE
			idclient = '$client' AND
			filetype IN ('jpeg','jpg','gif','png','swf') AND
			dirname = '$cms_dirname' 
			ORDER BY
			filename";

	$db->query($sql);

	while ($db->next_record()) {
		$img_name = $db->f('filename');
		if ($cms_filename != $img_name) {
			echo '<option value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
		} else {
			echo '<option selected="selected" value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
		}
	}
}

echo '</select>&nbsp;<input type="image" src="images/submit.gif">';

#Preview image
if ($cms_dirname != '0' AND $cms_filename != '0' AND strlen($cms_dirname) > 0 AND strlen($cms_filename) > 0) {
	$img_path = $htmlpath.$cfgClient[$client]['upload'].$cms_dirname.$cms_filename;
	$img_split = preg_split("/\./", $cms_filename);
	$count = count($img_split);
	$type = $img_split[$count -1];

	echo '<tr><td colspan="2" style="padding:5px">		
				<img src="'.$img_path.'">
			</td></tr> ';
}

echo '</td></tr>';
echo '</table>';
?><?php 
output:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     BODY_BG_IMAGE
************************************************/

#Selected img directory
$cms_dirname = "CMS_VALUE[1]";
#Selected img
$cms_filename = "CMS_VALUE[2]";

echo '<body style="background: url(upload/'.$cms_dirname.$cms_filename.') no-repeat left top">';
?>
layout beispiel:

Code: Alles auswählen

.
.
.
.
</head>
<container id="XXX" name="body">body</container>
<div ..
.
.
.
ansonsten wie gehabt
layout anlegen mit container statt bodytag, auch wenn contenido ein warning ausgibt
modul anlegen
template erstellen
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
JSommer
Beiträge: 324
Registriert: Fr 5. Sep 2003, 12:32
Wohnort: 192.168.0.11
Kontaktdaten:

Beitrag von JSommer »

coole idee den body übers modul schreiben zu lassen! danke!
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

JSommer hat geschrieben:coole idee den body übers modul schreiben zu lassen! danke!
gern geschehen, freut mich wenn die 10min. aufwand nicht umsonst waren ;)
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
jwulfes
Beiträge: 60
Registriert: Mo 8. Sep 2003, 20:35
Kontaktdaten:

Beitrag von jwulfes »

Hallo zusammen,

ich habe mir gerade mal den o.g. Vorgang angeschaut.
Super Idee.

Da ich auch nicht so eine riesige PHP Leuchte bin, hier noch einmal eine Zusatzfrage :wink:

Ich möchte den background meiner Seite je nach Titel der Seite ändern.
Beispiel:
Alle Seiten die mit dem Titel beginnen "Graue Wolken ueber Stuttgart ....." sollen einen anderen Hintergrund erhalten als die Seiten "Sonne ueber Hamburg ...."
Mir ist schon klar, das ich die Titel irgendwie über die Datenbank aufrufen muss, aber wie, wo, wann ..... :roll:

Es wäre super, wenn mir da jemand helfen könnte!!!

Danke! :lol:
Gruß
Jörg

www.tower-hill.de
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

mal so in's blaue

der titel steht in der con_art_lang
und das ganze dann mit einer switch-case geschichte sollte gehen :?

kann nur grade nicht weil ich die geteilte navi grad umbringt :twisted:

aber das solltest du auch selbst hinbekommen, no big deal ;)
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
jwulfes
Beiträge: 60
Registriert: Mo 8. Sep 2003, 20:35
Kontaktdaten:

Beitrag von jwulfes »

mvf hat geschrieben:mal so in's blaue

der titel steht in der con_art_lang
und das ganze dann mit einer switch-case geschichte sollte gehen :?

kann nur grade nicht weil ich die geteilte navi grad umbringt :twisted:

aber das solltest du auch selbst hinbekommen, no big deal ;)
Ja, ich hatte da mal was mit meinen, wie gesagt nicht sonderlich guten PHP Kenntnissen, versucht (Die Betonung ligt bei versucht.

Ich hatte in das Layout (ganz oben) folgende Abfrage geschrieben, um irgendwie an die Titelinfo zu kommen:

<?php
mysql_select_db($datenbankname);
$query_title = "SELECT con_art_lang.pagetitle FROM con_art_lang";
$title = mysql_query($query_title);
$row_title = mysql_fetch_assoc($title);
$totalRows_title = mysql_num_rows($title);
?>

Ist aller Wahrscheinlichkeit totaler Quatsch, und den titel habe ich auch nicht rausbekommen.

Wie müsste denn so eine switch Anweisung aussehen?

switch ($titel)
{
case 1:
//Abfrage Titel "Graue Wolken ueber Stuttgart"
$background = "Graue Wolken ueber Stuttgart";
break;
case 2:
//Abfrage Titel "Graue Wolken ueber Stuttgart"
$background= "Sonne ueber Hamburg";
break;
}

Und dann den Background als Variable in den body tag einbauen?


Danke!!!
Gruß
Jörg

www.tower-hill.de
jwulfes
Beiträge: 60
Registriert: Mo 8. Sep 2003, 20:35
Kontaktdaten:

Beitrag von jwulfes »

Hallo zusammen,

ich poste die frage noch einmal, vielleicht kann mir ja jemand helfen!

Danke!

Gruß
Jörg
Gruß
Jörg

www.tower-hill.de
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Versuche Dich doch an dem vorhandenen Code zu orientieren. Die Verwendung von mysql_query ist nicht erforderlich.

Das ist z.B. eine Abfrage aus dem vorhanden Code:

Code: Alles auswählen

$sql = "SELECT DISTINCT 
   dirname 
   FROM 
   ".$cfg["tab"]["upl"]." 
   WHERE 
   idclient='$client' AND 
   filetype IN ('jpeg','jpg','gif','png') 
   ORDER BY 
   dirname"; 

$db->query($sql); 

while ($db->next_record()) { 
// ... mach was
}
Wenn Du da Dein SQL-Statement reinzauberst und noch die idart reinbastelst ...

Code: Alles auswählen

"SELECT con_art_lang.pagetitle AS PageTitle FROM con_art_lang WHERE con_art_lang.idart = '".$idart."'"
... solltest Du Deinen Titel bekommen (und nicht alle Artikel der DB, wie in deinem Skript :wink: ).

Ob idart in der Tabelle überhaupt verfügbar ist, weiss ich gerade nicht, das sagt Dir dann phpmyadmin (und wenn die Tabelle noch ein idlang enthält, solltest Du

Code: Alles auswählen

"SELECT con_art_lang.pagetitle AS PageTitle FROM con_art_lang WHERE con_art_lang.idart = '".$idart."' AND con_art_lang.idlang='".$lang."'"
verwenden...
Wie müsste denn so eine switch Anweisung aussehen?

Code: Alles auswählen

switch (urldecode($db->f("PageTitle"))) { 
   case "Graue Wolken ueber Stuttgart": 
      //Abfrage Titel "Graue Wolken ueber Stuttgart" 
     $background = "Graue Wolken ueber Stuttgart"; 
     break; 
   case "Sonne ueber Hamburg": 
      //Abfrage Titel "Graue Wolken ueber Stuttgart" 
     $background= "Sonne ueber Hamburg"; 
     break;
   default:
      // hier sollte auch was gesetzt werden...
}
Wobei Du Dir die Titel mal ausgeben solltest, Sonderzeichen werden u.U. kodiert in der DB gespeichert.

Gruß
HerrB
Zuletzt geändert von HerrB am Do 19. Jan 2006, 13:40, insgesamt 1-mal geändert.
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
jwulfes
Beiträge: 60
Registriert: Mo 8. Sep 2003, 20:35
Kontaktdaten:

Beitrag von jwulfes »

Hallo HerrB,

danke für Deinen Tipp!

Also ich habe folgenden Code eingegeben:
$query_title = "SELECT con_art_lang.pagetitle AS PageTitle FROM con_art_lang WHERE con_art_lang.idart = '".$idart."' AND con_art_lang.idlang='".$lang."'";
$title = mysql_query($query_title);
echo $title;

switch (urldecode($db->f("PageTitle"))) {
case "Graue Wolken ueber Stuttgart":
//Abfrage Titel "Graue Wolken ueber Stuttgart"
$background = "Graue Wolken ueber Stuttgart";
break;
case "Sonne ueber Hamburg":
//Abfrage Titel "Graue Wolken ueber Stuttgart"
$background= "Sonne ueber Hamburg";
break;
default:
// hier sollte auch was gesetzt werden...
echo "<br><br>Sehr geehrter Besucher,<br>die Eintäge die Sie hier sehen<br>sind temporär<br>und nur zu Versuchzwecken!";
}
Was "raus kommt sind Zahlen und vor den Zahlen "Resource id #".

Kann ich jetzt, aber das liegt daran, das ich keine Ahnung habe, nichts mit anfangen. :cry: :)
Wenn Du auf http://www.tower-hill.de/cms gehst, kannst Du den output sehen.

Vielleicht kannst Du mir noch man ein wenig auf die Sprünge helfen - Daaaaanke.

Dir noch einen schönen Abend!
Gruß
Jörg

www.tower-hill.de
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

@jwulfes
HerrB hat geschrieben:Versuche Dich doch an dem vorhandenen Code zu orientieren. Die Verwendung von mysql_query ist nicht erforderlich.
darin liegt auch dein problem dass dort nun eine zahl liegt. HerrB hat dir oben schon eine Datenbank Query hingeschrieben nach dem in Contenido verwendeten Schema (über die Klasseensintanz $db)

auf deutsch:
so muss es lauten:

Code: Alles auswählen

$query_title = "SELECT con_art_lang.pagetitle AS PageTitle FROM con_art_lang WHERE con_art_lang.idart = '".$idart."' AND con_art_lang.idlang='".$lang."'";
$db->query($query_title);
while ( $db->next_record() ) {

switch (urldecode($db->f("PageTitle"))) {
case "Graue Wolken ueber Stuttgart":
//Abfrage Titel "Graue Wolken ueber Stuttgart"
$background = "Graue Wolken ueber Stuttgart";
break;
case "Sonne ueber Hamburg":
//Abfrage Titel "Graue Wolken ueber Stuttgart"
$background= "Sonne ueber Hamburg";
break;
default:
// hier sollte auch was gesetzt werden...
echo "<br><br>Sehr geehrter Besucher,<br>die Eintäge die Sie hier sehen<br>sind temporär<br>und nur zu Versuchzwecken!";
} 

}
jwulfes
Beiträge: 60
Registriert: Mo 8. Sep 2003, 20:35
Kontaktdaten:

Beitrag von jwulfes »

Hallo Strese,
hallo herrB,

Euch ein ganz dickes Danke für Eure Tipps.

Also ich habe die Sache ausprobiert und es funktioniert.
Ich werde die ganze Sache noch ein klein wenig ummodeln.
Wenn es ferig ist (komme bestimmt erst am Wochenende dazu), werde ich noch einmal posten - vielleicht interessiert das ja noch jemanden.

Danke Nochmal :lol: :lol: :lol:
Gruß
Jörg

www.tower-hill.de
Gesperrt