Farbleitsystem

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

Farbleitsystem

Beitragvon sueshi » 5. Jun 2008, 12:16

Ich möchte auf einer Site eine Art Farbleitsystem einsetzen, d.h. der Hintergrund der Navigation und des Contentbereichs und noch ein paar Dinge, die hier nicht so wichtig sind, sollen nach dem Anklicken einer Kategorie gewechselt werden.
Das soll mit verschiedenen Stylesheets passieren, ich komme aber nicht drauf (und finde im Forum auch nix Passendes. Es handelt sich um 4 Hauptkategorien. Wenn ich die KatId habe, muss es doch möglich sein, jeder einzelnen ein Stylesheet zuzuweisen. Aber wie und wo?

lg,sue
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich

Beitragvon raybeam » 6. Jun 2008, 17:30

Hallo Sue,

mein Lösungsweg:

Erstelle ein "Grundtemplate" in dem Seitenaufbau, Navigation etc. abgebildet werden.
Im HTML-Bereich erfolgt die Zuordnung des Seitenstylesheets z. B. durch

Code: Alles auswählen
<link href="<? echo $REX['HTDOCS_PATH'].$stylesheet ?>" rel="stylesheet" type="text/css"/>


Für jedes Seitendesign erstellst Du dann ein Template nach folgendem Schema:

Code: Alles auswählen
<?php

// Hier die ID des Grundlayout Template eintragen
$layoutId = '1';

// Einzubindende Stylesheets
$stylesheet       = 'files/css/farbkombi1.css';

if($layoutId)
{
   // redaxo 4.x
   if($REX['VERSION']>"3")
   {
      $layout = new rex_template($layoutId);
      include $layout->getFile();
   }
   else
   {
      // redaxo 3.x
      include $REX['INCLUDE_PATH']."/generated/templates/$layoutId.template";
   }
}
?>

Dies ist dann das Template, welches du im Backend deinen Artikeln zuordnest. Für jede weitere Kombination kopierst du den Code, bennenst ihn entsprechend und änderst nur den Namen der einzubindenen .css - Datei. Die if(layoutId ... - Geschichte kannst Du natürlich noch entsprechend deiner redaxo-Version kürzen.

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon sueshi » 7. Jun 2008, 20:30

Erst mal, vielen Dank für die kurzfristige Antwort. Aber da sieht man wieder: Was einem selber verständlich vorkommt, klingt für den unbefangenen Beobachter ganz anders.

Mein Problem liegt irgendwie anders, mir erscheint´s jedenfalls noch viel komplizierter: Im Navigationsmenü soll schon der li-Tag die jeweilige Hintergrundfarbe und Schriftfarbe seines Bereichs anzeigen, nicht nur im ausgewählten Zustand. Also der erste Menüpunkt in Orange, der zweite in Grau usw. Die verschachtelten li-Tags sollen die Parentfarbe haben, der geöffnete Maintext die gleiche Farbe im Hintergrund.

Ich hab schon mal sowas Ähnliches mit verschiedensprachigen Bildern im Banner gehabt ("files/<?php echo $REX["CUR_CLANG"]; ?>_banner_02_1.gif"). Ich dachte, sowas müsste für die Navigation auch mit der catId möglich sein. Also wenn die catId zb 20 wäre, müsste die Stilklasse eben ".navi20" oder so heißen können. Aber wann und wo frage ich die catId ab und wie schreibe ich die Variable in das Tag (<li class="mainnav???">)? Oder stell ich mir das ganz falsch vor?

lg,sue
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich

Beitragvon raybeam » 8. Jun 2008, 13:33

Es ist durchaus möglich anhand der Kategorie-ID's unterschiedliche CSS-Klassen bzw. CSS-ID's zu benennen. Das müsste dann im jeweiligen Navigationstemplate geschehen.

Wie und wo genau Du den Quelltext im einzelnen anpassen musst, hängt natürlich von dem Navigationstemplate ab, dass Du nutzt.

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon sueshi » 8. Jun 2008, 13:46

Die aus dem Downloadbereich mit ID 14 von T. Blum, die Stilklassen heißen nur anders bei mir, bzw. es gibt mehr.
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich

Beitragvon raybeam » 8. Jun 2008, 14:49

Wenn Du vielleicht mal folgende Abänderung des Quelltextes versuchst?

Code: Alles auswählen
...

/* START 1st level categories */
$nav .= '<ul class="nav1st">';
foreach (OOCategory::getRootCategories() as $lev1) {
   $rootCatCss='cat'.$lev1->getId();   
   if ($lev1->isOnline(true)):
      if ($lev1->getId() == $path1) {
         $nav .= '<li class="active '. $rootCatCss. '"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
      }
      // 2nd level - no active link
      else {
         $nav .= '<li class="'. $rootCatCss .'"><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
      }

...



Durch $rootCatCss sollten die li-Tags der root-Kategorien um eine CSS-Klasse "cat.." mit ID der entsprechenden Kategorie erweitert werden. Ich hab's aber nicht getestet.
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon sueshi » 10. Jun 2008, 13:43

Dankedankedanke! Kann´s gar nicht oft genug sagen!
Funktioniert so wie ich es wollte, und mit dem Muster konnte ich auch ins Maintemplate den Code für den Contenthintergrund selber erstellen. Hat zwar ein Weilchen gedauert, bis ich die Syntax ganz korrekt hatte, aber jetzt haut alles hin.

lg,sue
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich

Teilnavigation

Beitragvon sueshi » 10. Jun 2008, 15:32

Was Anderes, ist mir eh peinlich, aber bei der ganzen Forumsucherei habe ich nicht das gefunden, was ich brauche:

Ich will die Subkategorien einer expliziten Kategorie (die 1, die in der normalen Navi nicht angezeigt werden soll) anzeigen, und zwar nur diese und immer, auch wenn sie nicht gerade angeklickt wurde. Subsubs dürfen nicht angezeigt werden. Die Elternkategorie selber darf nicht angezeigt werden und ist offline. Nur die Subs sind online.
Hatte das bisher immer mit direkten Links gemacht, aber ohne Scripts kann ich nicht den aktiven Link formatieren.
Gibt´s das auch in einer schlanken Form, ohne dass ich gleich ein komplettes Navigationstemplate einbauen muss?

Muss noch dazu sagen: Ich liebe dieses CMS buchstäblich, weiß gar nicht mehr, wie oft ich es schon eingesetzt habe! Und das Forum ist spitzenmäßig.
:D
lg,sue
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich

Beitragvon raybeam » 10. Jun 2008, 16:24

Hi Sue,

ich hoffe ich habe verstanden :wink:

Vielleicht so?:

Code: Alles auswählen
<?php
$cats = OOCategory::GetChildrenById(1,true);

foreach($cats as $cat)
{
    echo '<p><a href="'.$cat->getUrl().'">'.$cat->getName()."</a></p>\n";
  }
?>


Übrigens findest Du unter

http://www.webbude.com/89-0-oof-uebersicht.html

eine Übersicht der Redaxo-"Objektfunktionalität" für die Version 3.x und unter

http://www.webbude.com/120-0-redaxo-cheatsheet-4-1.html ähnliches für Version 4.1

Mein Rat: Ausdrucken und immer griffbereit haben :)

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon sueshi » 10. Jun 2008, 16:56

Ja, nur was ich nicht zusammengebracht habe, war die Unterscheidung zwischen aktivem und inaktivem Link, wie es in den ganzen Navigationstemplates ist. Schaffe keine gerade PHP-Anweisungskette. Mit der Syntax ist es echt ein Kreuz bei mir! :roll:
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich

Beitragvon raybeam » 10. Jun 2008, 17:45

Wenn Du mit aktivem Link "nur Kategorie/Artikel = online anzeigen" meinst, dann so

Code: Alles auswählen
$cats = OOCategory::GetChildrenById(1,true);


egal ob Kategorie/Artikel online oder offline, alle anzeigen:

Code: Alles auswählen
$cats = OOCategory::GetChildrenById(1);


Komplizierter wird's beim Einsatz des SimpleUser Addon mit geschützten Bereichen.
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon sueshi » 11. Jun 2008, 07:34

Das war mir schon klar. Mein Problem ist die Kennzeichnung der aktiven Seite mittels CSS, wie in einem Navigationstemplate. Der Kunde will, dass man sieht, wo man steht, es sind aber im Layout keine Breadcrumbs vorgesehen. Daher muss der aktive Link deutlicher rauskommen.
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich

Beitragvon raybeam » 11. Jun 2008, 09:06

Versuch es mal damit:

Code: Alles auswählen
<?php
$cats = OOCategory::GetChildrenById(1,true);
$catCss = '';

foreach($cats as $cat)
{
    $catCss='cat'.$cat->getId();
    if(REX_ARTICLE_ID==$cat->getId()) $catCss = $catCss.' active';
    echo '<p><a href="'.$cat->getUrl().'" class="'.$catCss.'">'.$cat->getName()."</a></p>\n";
  }
?>


Die Vorgehensweise ist ähnlich wie oben.
Zunächst wird in $catCss eine CSS-Klasse "cat.." mit der ID der soeben in der Schleife durchlaufenen Kategorie erstellt. Die CSS-KLasse lauten dann z. B. "cat1"

Ist die ID des gerade angezeigten Artikels (REX_ARTICLE_ID) identisch mit der soeben in der Schleife durchlaufenen Kategorie ($cat->getId()), dann wird der CSS-Klasse noch das Attribut " active" hinzugefügt. Die CSS-Klasse würde dann z. B. "cat1 active" lauten.

Zum Schluss wird diese Klasse dann innerhalb des echo-Befehls dem Link hinzugefügt.
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon sueshi » 11. Jun 2008, 14:39

Super, das kann ja schon wieder mehr als nötig. Aber weniger machen kann ich immer viel besser als umgekehrt ;-)

Jetzt passt´s überall, vielen Dank!
sueshi
 
Beiträge: 63
Registriert: 6. Feb 2007, 12:37
Wohnort: Österreich


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron