[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
[Gelöst] Bereichsbezogene Fotos im Kopfteil - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
stellaris

[Gelöst] Bereichsbezogene Fotos im Kopfteil

4. Jul 2007, 09:10

Hallo,

ich möchte in Redaxo 3.2 für die unterschiedlichen Bereiche einer Website jeweils ein bestimmtes Foto im Kopfteil angezeigt wissen. Kein zufällig wechselndes Foto, Bereich 1 soll immer Foto1 im Kopfteil haben, Bereich 2 immer Foto2, etc. Die einzelnen Menüpunkte der Website bestehen aus dem Startartikel einer Kategorie, ich benötige nur die erste Ebene der Navigation.

Meine Idee war nun, im Template im Kopfteil eine switch-Anweisung zu nutzen und z.B. die Artikel-ID auszulesen:

Code: Alles auswählen

<?php

$articleId = $this->getValue("id");
switch ($articleId) {
case 0:
    echo "<img src='images/header-bilder/Home.jpg' width='550' height='145' />";
    break;
case 1:
    echo "<img src='images/header-bilder/Beispiel.jpg' width='550' height='145' />";
    break;
case 22:
    echo "<img src='images/header-bilder/Aktuelles.jpg' width='550' height='145' />";
    break;
}
?> 
Ich bin recht neu in der PHP-Programmierung und die switch-Anweisung funktioniert bislang nur bei "case 0" (Standardwert, nehme ich an). Ich kann die Artikel-ID auch nicht testweise anstelle des Fotos anzeigen lassen, da funkt der Zugriff anscheinend nicht. Momentan nutze ich noch kein mod_rewrite, könnte das später Probleme geben, wenn die Artikel-ID nicht mehr in der URL ausgegeben wird?

Kann mir jemand einen Hinweis geben, wo es haken könnte oder wie Ihr die bereichsbezogenen Kopfteilfotos implementieren würdet?

Freue mich über konstruktive Antwort,

- Thorsten
Zuletzt geändert von stellaris am 4. Jul 2007, 11:34, insgesamt 1-mal geändert.

TomHH
Beiträge: 379
Registriert: 7. Nov 2005, 17:57
Wohnort: Hamburg

4. Jul 2007, 10:05

Hi Thorsten,

ich habe es folgendermaßen gemacht. In den Metadaten eines Artikels wird unter 'Metafile/Bild' die anzuzeigende Grafik gesetzt. Im Seiten-Template mache ich dann folgendes

Code: Alles auswählen

<?php
	// Bild des Startatikels als DFEAULT-Bild setzen
	$start_article = OOArticle::getArticleById(1);
	$def_mediafile = $start_article->getFile();
	$def_media     = OOMedia::getMediaByName($def_mediafile);
	$default_banner = $def_media->getFullPath();

	// hat akt. Artikel ein Metafile/Bild gesetzt?
	$art = OOArticle::getArticleById(REX_ARTICLE_ID);
	$metaFile = $art->getFile();
	// ist akt. Artikel in einer Kategorie aufgehängt?
	// NEIN, dann Schleife verlassen
	if ( $metaFile == '') {
		$cat = OOCategory::getCategoryById( $art->getCategoryId());
		while ( $metaFile == '') {
			if ($cat == null)
			{
				break;
			}
			$metaFile = $cat->getFile();
			$cat = $cat->getParent();
		} 
	}

	// haben wir ein Metafile/Bild?
	// JA, dann als Background-Image im Style setzen
	if ( $metaFile != '')
	{
		$media = OOMedia::getMediaByName( $metaFile);
		$path = $media->getFullPath();
		print '			<STYLE type="text/css">
		<!--
			#h-top 
			{
				margin-left: 2px;
				padding: 0;
				width : 906px;
				height : 152px;
				overflow: auto;
				background-color : #DA3614;
				border-bottom : 1px solid #FFFFFF;
				background : url('.$path.') top left;
			}

			#s-top 
			{
				margin-left: 2px;
				padding: 0;
				width : 906px;
				height : 152px;
				overflow: auto;
				background-color : #DA3614;
				border-bottom : 1px solid #FFFFFF;
				background : url('.$path.') top left;
			}
	   -->
		</STYLE>';
	}
	else
	{
		print '			<STYLE type="text/css">
		<!--
			#h-top 
			{
				margin-left: 2px;
				padding: 0;
				width : 906px;
				height : 152px;
				overflow: auto;
				background-color : #DA3614;
				border-bottom : 1px solid #FFFFFF;
				background : url('.$default_banner.') top left;
			}

			#s-top 
			{
				margin-left: 2px;
				padding: 0;
				width : 906px;
				height : 152px;
				overflow: auto;
				background-color : #DA3614;
				border-bottom : 1px solid #FFFFFF;
				background : url('.$default_banner.') top left;
			}
	   -->
		</STYLE>';

	}
?>
Man kann so allen Kategorien und Unterkategorien versch. Bilder setzen. Hat eine Unterkategorie kein Bild, dann wird das der Übergeordneten genommen.

Ciao, Tom

Benutzeravatar
uwe
Beiträge: 264
Registriert: 21. Dez 2005, 18:39
Wohnort: Hamburg
Kontaktdaten: Website

4. Jul 2007, 10:12

moin moin,

du kannst in den Metadaten zu jedem Artikel unter 'Metafile/Bild' aus dem Medienpool ein Bild auswählen.

Im Template (dort wo das Bild stehen soll) fügst du ein:

Code: Alles auswählen

// Einfügung Metafile Bild im Header
$art = OOArticle::getArticleById( REX_ARTICLE_ID);
$metaFile = $art->getFile();

if ( $metaFile == '') {
  $cat = OOCategory::getCategoryById( $art->getCategoryId());
  while ( $metaFile == '') {
     if ($cat == null) {
       break;
     }
     $metaFile = $cat->getFile();
     $cat = $cat->getParent();
  } 
}

if ( $metaFile == '') 
{ 
// dies musste selbst ändern: (wenn kein MetaFile definiert ist.
// auch nicht in den übergeordneten Kategorien)
$metaFile = 'standardlogoheader.jpg';
}

if ( $metaFile != '') {
  $media = OOMedia::getMediaByName( $metaFile);
  $path = $media->getFullPath();
  $desc = htmlentities( $media->getDescription());
  $width = $media->getWidth();
  $height = $media->getHeight();
}
// Einfügung Metafile Bild im Header ENDE -----------------
Es wird immer das Bild des Artikel genommen, wenn Keins eingetragen ist, wird nach oben gesucht, ob in einer übergeordneten Kategorie ein Bild definiert ist. Wenn nicht, musst du dir eins in
$metaFile= 'standardlogoheader.jpg' definieren.

Alles klar?

Mfg
Uwe

Dr KillerJoe
Beiträge: 1711
Registriert: 24. Nov 2005, 22:29
Kontaktdaten: ICQ Website Yahoo Messenger

4. Jul 2007, 10:12

Hi.

Warum nimmst du nicht einfach das Metafile? Und wenn keins gesetzt ist lädst Du eins von einem "Standard"-Artikel.

>Seitenspezifische Bilder<

mfg
Flo
Die Doku und Wiki sind Deine Freunde!!!

TomHH
Beiträge: 379
Registriert: 7. Nov 2005, 17:57
Wohnort: Hamburg

4. Jul 2007, 10:29

Dr KillerJoe hat geschrieben:Warum nimmst du nicht einfach das Metafile? Und wenn keins gesetzt ist lädst Du eins von einem "Standard"-Artikel.
Das mach ich ja (Bild des Startartikels als default). Das ist dann erstmal für alle Artikel gültig, die kein Bild explizit gesetzt haben. Und: eine Unterkategorie/Artikle einer Unterkategorie verwendet immer das Bild der übergeordneten Kategorie, es sei den es wurde für diese Kategorie/Artikel ein Bild gesetzt.

In der Praxis bedeutet das, ich muß nur das Bild des ersten Artkels setzen und alle Unterbereiche sind mit einem Bild versorgt!

Ciao, Tom

Dr KillerJoe
Beiträge: 1711
Registriert: 24. Nov 2005, 22:29
Kontaktdaten: ICQ Website Yahoo Messenger

4. Jul 2007, 10:44

hi tom.

Ich hatte den Thread aufgerufen, als noch niemand was dazu gepostet hatte^^ Was kann ich dazu wenn ihr zwischenzeitlich was schreibt? ;)

mfg
Flo
Die Doku und Wiki sind Deine Freunde!!!

TomHH
Beiträge: 379
Registriert: 7. Nov 2005, 17:57
Wohnort: Hamburg

4. Jul 2007, 11:02

Dr KillerJoe hat geschrieben:hi tom.

Ich hatte den Thread aufgerufen, als noch niemand was dazu gepostet hatte^^ Was kann ich dazu wenn ihr zwischenzeitlich was schreibt? ;)

mfg
Flo
Na, dann lass ich das nochma durchgehen! ;-D

Grüße, Tom

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

4. Jul 2007, 11:03

Hi,

um das ganze an Lösungen zu komplettieren:
http://www.redaxo.de/165-Moduldetails.html?module_id=29

Gruß,
Markus

stellaris

4. Jul 2007, 11:08

Danke für die Antworten,

ich hab' alle drei Varianten mal ausprobiert, der Bereich, wo das Foto erscheinen soll, bleibt jedoch leer, obwohl für die Kategorien/Artikel ein "Metadatenbild" in den Eigenschaften ausgewählt ist.

Ich habe das Gefühl, dass es an etwas anderem liegt, da ich zum Beispiel für den Fall, dass kein Metadatenbild vorhanden ist, nicht mal einen Fehlertext ausgegeben bekomme.

Irgendeine Idee?
Zuletzt geändert von stellaris am 4. Jul 2007, 11:32, insgesamt 3-mal geändert.

TomHH
Beiträge: 379
Registriert: 7. Nov 2005, 17:57
Wohnort: Hamburg

4. Jul 2007, 11:12

stellaris hat geschrieben:Danke für die Antworten,

ich hab' alle drei Varianten mal ausprobiert, der Bereich, wo das Foto erscheinen soll, bleibt jedoch leer, obwohl für die Artikel ein "Metadatenbild" in den Eigenschaften ausgewählt ist.

Ich habe das Gefühl, dass es an etwas anderem liegt, da ich zum Beispiel für den Fall, dass kein Metadatenbild vorhanden ist, nicht mal einen Fehlertext ausgegeben bekomme.

Irgendeine Idee?

Edit: Lösung Nummer vier probiere ich gerade aus; danke, dass Ihr so freundlich, ausführlich und zahlreich helfen wollt! :D
Ohne Quellcode sagen wir garnix mehr! ;-)

Ciao, Tom

stellaris

4. Jul 2007, 11:33

Es lag an der Formatierung der PHP-Ausgabe des Fotos:

Code: Alles auswählen

print "<img src='$path' />" ;
funktioniert, vorher hatte ich

Code: Alles auswählen

print '<img src="$path" />' ;
Nun läuft's, danke für Eure Hinweise! :D

barbe
Beiträge: 239
Registriert: 17. Mai 2006, 13:09

11. Dez 2007, 20:33

Habe mir bei Euch ein bisschen was abgeschaut und versucht, eine eigene Lösung zu basteln.

Bekomme aber den Fehler:
Fatal error: Call to a member function getValue() on a non-object
Wundert mich eigentlich, denn ich habe die Variable $art doch mit allen Informationen gefüllt ...

Code: Alles auswählen

<?
   // KOPFGRAFIK
   // Default-Kategorie festlegen
   $def_cat = OOCategory::getCategoryById(8);
   $def_topbanner = $def_cat->getValue("cat_kopfgrafik");

   // hat Kategorie des aktuellen Artikels eine Kopfgrafik gesetzt?
   $art = OOArticle::getArticleById(REX_ARTICLE_ID);
   $cat = OOCategory::getCategoryById($art->getCategoryById());
   $topbanner = $cat->getValue("cat_kopfgrafik");
   
   // Wert vorhanden oder default?
   if ($topbanner == '') {
   $topbanner = $def_topbanner;
   }

?>

Code: Alles auswählen

[quote][/quote][quote][/quote]

barbe
Beiträge: 239
Registriert: 17. Mai 2006, 13:09

12. Dez 2007, 15:49

Lösung von Dagmer für mein Problem hier:

http://forum.redaxo.de/viewtopic.php?p=46297

Zurück zu „Sonstiges“