Hintergrundbild wechseln bei Seiten bzw. Kategorien

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Hintergrundbild wechseln bei Seiten bzw. Kategorien

Beitragvon maja340 » 9. Mär 2008, 16:19

Hallo,

nachdem ich die Demo installiert habe, würde ich noch wissen wollen, wie ich unter verschiedenen Kategorien oder Seiten verschiedene Hintergrundbilder verwenden kann.
Also jeder Kategorie oder jeder Seite soll ein anderes Hintergrundbild zugewiesen werden, es soll auch die Option berücksichtigt werden, dass es auch ein allgemeines Hintergundbild existiert.

besteht grundsätzlich die Möglichkeit, dass der Redakteur im Backend die Hintergrundbilder selber auswählen kann, oder muss der Webmaster das vorher festlegen, und somit also fix.?

Viele Grüße
g.maja
maja340
 
Beiträge: 39
Registriert: 8. Mär 2008, 22:05

Beitragvon TomHH » 9. Mär 2008, 23:09

Hi Maja,

das sollte kein Problem darstellen. Zu jedem Artikel kann unter Metadaten/Sonstige ein Bild abgelegt werden, z.B. um es im Header-Bereich einer Seite zu verwenden. Hat die aktuelle Kategorie kein Bild geht man zur nächst höheren und verwendet das Bild.

Wenn Du weitere Fragen dazu hast, melde Dich. auch ein Code Beispiel kann ich Dir geben.

Gruß, Tom
TomHH
 
Beiträge: 392
Registriert: 7. Nov 2005, 16:57
Wohnort: Hamburg

Bitte um Code für Bild unter Metadaten

Beitragvon maja340 » 10. Mär 2008, 00:43

Hallo Tom,

ich habe unter Metadaten nicht die Option zum Einfügen eines Bildes gefunden. Könntest du bitte freundlicherweise mir den Code zusenden, wie ich für einzelne Seiten Hintergrundbilder definieren kann!

bytheway; was kann ich noch in den Metadaten machen??


Viele grüße

g.maja
maja340
 
Beiträge: 39
Registriert: 8. Mär 2008, 22:05

Re: Bitte um Code für Bild unter Metadaten

Beitragvon Thomas.Blum » 10. Mär 2008, 09:45

Hej,

maja340 hat geschrieben:ich habe unter Metadaten nicht die Option zum Einfügen eines Bildes gefunden. Könntest du bitte freundlicherweise mir den Code zusenden, wie ich für einzelne Seiten Hintergrundbilder definieren kann!


Dann hast du aber nicht die Installation von Redaxo genau durchgeführt. Normalerweise sollte ein Feld "Metafile/Bild" erscheinen, welches du dann mit

Code: Alles auswählen
$this->getValue('art_file')

im tempalte ausgeben kannst.

maja340 hat geschrieben:bytheway; was kann ich noch in den Metadaten machen??

Alles was Artikelspezifisch ist. Schau auch einmal bitte in die Doku. Dort wird einiges bereits erklärt.

vg Thomas
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4670
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden

Beitragvon TomHH » 10. Mär 2008, 09:50

Hi Maja,

das Bild kannst Du unter 'Metadaten/Sonstiges -> Metafile/Bild' setzen (bei Version 3.3, sollte aber bei der 4er gleich sein).

Mit folgendem Code kannst Du für jede Kategorie ein Bild setzen:

Code: Alles auswählen
# hier kommt das Bild für die Hauptkategorie = DEFAULT-Bild, wenn
# kein Bild zu finden ist!
$start_article = OOArticle::getArticleById(1);
$def_mediafile = $start_article->getFile();
$def_media     = OOMedia::getMediaByName($def_mediafile);
$default_banner = $def_media->getFullPath();
$art = OOArticle::getArticleById(REX_ARTICLE_ID);
$metaFile = $art->getFile();

# kein Bild gesetzt? Dann das Bild der übergeordneten nehmen
if ( $metaFile == '') {
   $cat = OOCategory::getCategoryById( $art->getCategoryId());
   while ( $metaFile == '') {
      if ($cat == null)
      {
         break;
      }
      $metaFile = $cat->getFile();
      $cat = $cat->getParent();
   }
}

# wir haben ein Bild!
if ( $metaFile != '')
{
   $media = OOMedia::getMediaByName( $metaFile);
   $path = $media->getFullPath();
   # einbauen des Bildes ins CSS
   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
{
   # immer noch kein Bild? Dann das DEFAULT-Bild setzen... (das muß natürlich gesetzt sein!))
   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>';
}


Anmerkung: das Bild wird ins CSS eingebaut und deswegen ist der CSS-Code nicht ausgelagert sondern im Template. Man kann das Bild natürlich auch anders verwenden.

In den Metadaten kannst Du KEYWORDS, DESCRIPTION, METAFILE (Bild), ONLINE_FROM/ONLINE_TILL (das muß aber in den Templates explizit abgefragt werden sonst hat es keine Wirkung) und den Artikel-Typ setzen. Der Artikel-Typ wird z.B. verwendet um Zugangsrechte in Verbindung mit Login-Funktionalität zu setzen (der Artkel-Typ wird unter 'Specials' gesetzt).

Ich hoffe ich konnte Dir weiterhelfen. Die Umsetzung mit dem Bild kannst Du unter http://www.kuenzel.de sehen.


Grüße, Tom[/url]
TomHH
 
Beiträge: 392
Registriert: 7. Nov 2005, 16:57
Wohnort: Hamburg

Beitragvon Achim » 19. Mai 2009, 00:24

Hallo Tom,

genau so etwas möchte ich gerne bei mir einbauen - mit den Metadaten geht das leider nicht. Es findet kein Bildwechsel statt.
Deinen Code habe ich noch nicht verwendet.

Könntest du mir weiterhelfen?

Herzliche Grüße
Achim
Achim
 
Beiträge: 12
Registriert: 15. Mai 2009, 21:23

Beitragvon TomHH » 19. Mai 2009, 08:41

Hi Achim,

nur mit dem Setzen des Bildes in den Metadaten ist es nicht getan! Du mußt schon explizit das Bild aus den Metadaten im Code ansprechen.
Wie Du auf das Bild zugreifst sollte aus dem Code ersichtlich sein...

Gruß, Tom
TomHH
 
Beiträge: 392
Registriert: 7. Nov 2005, 16:57
Wohnort: Hamburg

Beitragvon Achim » 19. Mai 2009, 08:55

Hallo Tom,

das habe ich mir schon gedacht :roll: .... So wie ich das in deinem Code verstehe ist die Bezeichnung für das Bild _banner_ . Ich stricke mir die Demo für meine Zwecke um und bei mir ist das Bild im Teaser Bereich gesetzt.

Ich habe jetzt einen Umweg über die CSS Datei probiert und da klappt es. Eleganter ist das natürlich über den Medienpool.

Aber um das in mein Template zu übernehmen bi ich einfach zu unwissend...

Herzliche Dank

Achim
Achim
 
Beiträge: 12
Registriert: 15. Mai 2009, 21:23

Beitragvon TomHH » 19. Mai 2009, 09:01

Sag bescheid, wenn Du nicht weiter kommst (Link bzw. Code posten nicht vergessen! :wink: ) ...

Gruß, Tom
TomHH
 
Beiträge: 392
Registriert: 7. Nov 2005, 16:57
Wohnort: Hamburg

Beitragvon Achim » 19. Mai 2009, 09:18

Hi Tom,

ok, hier mein Code:

Code: Alles auswählen
********************************************************
<?php

// Notices ausschalten
// error_reporting(E_ALL ^ E_NOTICE);

//   Setting
////////////////////////////////////////////////////////////////////////////////

// Navigation Startseite im vertikalen Block
if ($REX['START_ARTICLE_ID'] == $this->getValue("article_id")) {
   $navTemplateId = "3";
}
// Navigation Inhaltsseiten horizontal / vertikale   
else {
   $navTemplateId = "2";
}

//   Code
////////////////////////////////////////////////////////////////////////////////

$article = OOArticle::getArticleById($REX['START_ARTICLE_ID'], $REX['CUR_CLANG']);
$articleK = $article->getValue("_keywords");
$articleD = $article->getDescription();

$navHeader = '';
$navTemplate = new rex_template($navTemplateId);   
include $navTemplate->getFile();
   
if($this->getValue("description") != "") {
   $meta_beschreibung = htmlspecialchars($this->getValue("description"));
} else {
   $meta_beschreibung = htmlspecialchars($articleD);
}
   
if($this->getValue("keywords")!= "") {
   $meta_suchbegriffe = htmlspecialchars($this->getValue("keywords"));
} else {
   $meta_suchbegriffe = htmlspecialchars($articleK);
}

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

   <title><?php print $REX['SERVERNAME'].' | '.$this->getValue("name"); ?></title>
   <meta name="keywords" content="<?php print $meta_suchbegriffe; ?>" />
   <meta name="description" content="<?php print $meta_beschreibung; ?>" />

   <link rel="stylesheet" type="text/css" href="<?php echo $REX['HTDOCS_PATH'] ?>files/main.css" media="screen" />
   <link rel="stylesheet" type="text/css" href="<?php echo $REX['HTDOCS_PATH'] ?>files/navigation.css" media="screen" />
   <link rel="stylesheet" type="text/css" href="<?php echo $REX['HTDOCS_PATH'] ?>files/content.css" media="screen" />
   
<?php

// Definierte Unterschiede Startseite - Inhaltsseiten

if ($REX['START_ARTICLE_ID'] == $this->getValue("article_id")) {
   print '<link rel="stylesheet" type="text/css" href="'.$REX['HTDOCS_PATH'].'files/start.css" media="screen" />';
} else {
   print '<link rel="stylesheet" type="text/css" href="'.$REX['HTDOCS_PATH'].'files/inhalt_treffen.css" media="screen" />';
}

?>

</head>

<body class="mainPage">
   <div>
      <a name="top" id="top"></a>
   </div>

   <div id="site-content">
      <div id="column">
         
         <!-- start header -->
         <div id="header">
            <div id="logo">
               <a href="<?php echo $REX['HTDOCS_PATH'] ?>index.php" title="Zur&uuml;ck zur Startseite">REDAXO Demo</a>
            </div>
            <?php
               if ($navHeader != "") {
                  print '<div id="nav-header">'.$navHeader.'</div>';
               }
            ?>
         </div><!-- end header -->
         
         <!-- start content -->
         <div id="content">
            <div id="main-content">
               <div id="nav">
               <?php print $navLeftCol; ?>
                  
                  <div id="donate">
                     
                     <fieldset>
                     <input type="hidden" name="cmd" value="_s-xclick" />
                     
                     <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
                     " />
                     </fieldset>
                     
                  </div>

                  
               </div>

               <div id="main">
                  <div id="main-block">
                     <div id="main-teaser">
                        Slogan: Einfach, flexibel, sinnvoll
                     </div>

                     <div id="main-content-block">
                        <?php
                           print '<p id="breadcrumb">'.$breadcrumb.'</p>';

                           print $this->getArticle();
                        ?>
                     </div>
                  </div>
               </div>
               <br class="clear" />
            </div>
         </div><!-- end content -->

         <div id="footer">
            <p class="floatRight"><a href="http://www.redaxo.de">REDAXO CMS</a> - SIMPLE DEMO | XHTML 1.0 Strict | pictures by <a href="http://www.photocase.com">photocase.com</a></p>
            
            <br class="clear" />
         </div>
      </div>
   </div>
<div style="display:none;">Eigene Templates sind besser - REDAXO</div>
</body>
</html>

**********************************************************

im Moment steuere ich den Bilderwechsel über dieses "fette" CSS:

/ Definierte Unterschiede Startseite - Inhaltsseiten

if ($REX['START_ARTICLE_ID'] == $this->getValue("article_id")) {
   print '<link rel="stylesheet" type="text/css" href="'.$REX['HTDOCS_PATH'].'files/start.css" media="screen" />';
} else {
   print '<link rel="stylesheet" type="text/css" href="'.$REX['HTDOCS_PATH'].'[b]files/inhalt_treffen.css[/b]" media="screen" />';
}

?>

***********************************************


Gruß&Dank
Achim
Zuletzt geändert von Achim am 22. Mai 2009, 22:52, insgesamt 1-mal geändert.
Achim
 
Beiträge: 12
Registriert: 15. Mai 2009, 21:23

Beitragvon TomHH » 19. Mai 2009, 09:43

So, und Du möchtest den Kategorien das Bild im Header über den Medienpool setzen und nicht fest im CSS haben? Dann pack den CSS-Code für den Header-Bereich direkt ins Seiten-Template und nimm ihn aus der CSS raus.
Bei Deinem Startartikel setzt Du ein Bild aus dem Medienpool in den Metadaten (das ist das DEFAULT Bild und muss natürlich da sein!).

Ich habe bei dieser Lösung einen hierarischen Ansatz. Oberstes Element ist das Bild im Startartikel. Wird ein beliebiger Artikel aufgerufen, wird geschaut ob er ein Metafile gesetzt hat.

akt. Artikel -> Kategorie -> Startartikel/oberste Kategorie

Willst Du für jede Kategorie ein Bild setzen oder unterscheidest Du nur zwischen Startartikel/Inhalt?


Tom
TomHH
 
Beiträge: 392
Registriert: 7. Nov 2005, 16:57
Wohnort: Hamburg

Beitragvon Achim » 19. Mai 2009, 10:04

Hallo Tom,

herzlichen Dank, habe einen Test gemacht, und den Code für den Unterschied Startseite/Inhaltsseiten (der die unterschiedlichen CSS Dateien läd) raus gelöscht und deinen an diese Stelle eingebaut.

Hat aber nicht gefunzt - gab eine Fehlermeldung beim Seitenaufruf. Ich probier es erst einmal mit eigenen CSS Dateien für jede Seite, das habe ich zumindest schon einmal kapiert.

Für das coden im PHP brauch ich einfach noch mehr Erfahrung....

Herzliche Grüße
Achim
Achim
 
Beiträge: 12
Registriert: 15. Mai 2009, 21:23


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste