ynamite's Navigation Factory :)

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

Beitragvon ynamite » 22. Nov 2010, 16:17

kein problem, geht mir auch oft so. freut mich wenns nun passt ;)

viel spass!
y
BLUEMOUSE | BlueMouse GmbH
Benutzeravatar
ynamite
 
Beiträge: 118
Registriert: 26. Jan 2007, 13:59
Wohnort: baden

Beitragvon darwin » 23. Nov 2010, 11:04

HI,
soweit läuft das Script. Danke.
Ich versuch es gerade auch ein wenig zu erweitern, nur häng ich da grad
n bisschen. Ich versuche die Optionen um den Punkt "rendern der Unterpunkte Ja/Nein" zu erweitern, nur bin ich mir ned ganz schlüssig
wo ich dies dann unterscheiden muss...

Code: Alles auswählen
'renderSubNav' => false // {boolean} Soll die SubNavigation auch gerendert werden


Code: Alles auswählen
if($options['renderImages'] && OOAddon::isAvailable('sleightofhand'))
                  {
                  if(!$options['renderSubNav'])
                     
                     if(in_array($article->getId(),$path))
                        $out['nav'] .= a561_sleightofhand(array(
                                    'text' => $article->getName(),
                                    'font' => $options['renderFontfile'],
                                    'color' => $options['renderFontactivecolor'],
                                    'size' => $options['renderFontsize'],
                                    'spacing' => $options['renderFontspacing']
                                 ));
                     else
                        $out['nav'] .= a561_sleightofhand(array(
                                    'text' => $article->getName(),
                                    'font' => $options['renderFontfile'],
                                    'color' => $options['renderFontcolor'],
                                    'mouseover' => $options['renderFontactivecolor'],
                                    'size' => $options['renderFontsize'],
                                    'spacing' => $options['renderFontspacing']
                                 ));
                  else
                     // Hier? "nur" die Hauptkats rendern, rest normal
                        
                  }
               else
                  $out['nav'] .= htmlspecialchars($article->getName());
               $out['nav'] .= '</a>';


Jemand eine Idee.
Danke. schonmal.
grz. Chris
Benutzeravatar
darwin
 
Beiträge: 1261
Registriert: 2. Jan 2007, 16:10
Wohnort: LA

Beitragvon ynamite » 23. Nov 2010, 11:12

hey Chris

Das ist genau das was ich als nächstes einbauen möchte, bisher aber die Zeit noch nicht gefunden habe.

Eine notlösung die funktioniere müsste wäre die folgende (ca. Zeile 136 im Skript):

Code: Alles auswählen
                        
$options['renderImages'] = 0;
$subnav = createNav($instance,$options);
$options['renderImages'] = 1;


ist halt eher ein hack, bevor die subnavigation ausgegeben wird schaltet man die gerenderten headlines ab und gleich danach wieder an. müsste gehen habs aber so nicht getestet, so ähnlich aber schon mal irgendwo eingebaut :)

viel glück, hoffe es klappt!
gruss
y
BLUEMOUSE | BlueMouse GmbH
Benutzeravatar
ynamite
 
Beiträge: 118
Registriert: 26. Jan 2007, 13:59
Wohnort: baden

Beitragvon darwin » 23. Nov 2010, 11:15

Joa funtz ... Danke...
werd mich trotzdem mal durchs Script kämpfen und evtl
komm ich ja auf die Lösung ;)

Danke. grz. Chris
Benutzeravatar
darwin
 
Beiträge: 1261
Registriert: 2. Jan 2007, 16:10
Wohnort: LA

Beitragvon ynamite » 23. Nov 2010, 11:23

falls du sinnvolle erweiterungen einbaust kannst du die gerne hier posten und ich nehm sie dann ins skript auf.

das problem am skript bzw. am generieren der subnavi ist meiner meinung nach das sowohl hauptnavi als auch subnavi in der selben funktion ausgegeben werden, was die flexibilität stark einschränkt. ich mag allzu grosse funktionen nicht so sehr :)

zur erklärung, um die subnavi auszugeben wird einfach das skript createNav nochmals aufgerufen mit dem unterschied das die aktuelle kategorie-ID mit der option "parentId" weitergegeben wird, das hat zur folge dass das skript die kinder kategorien von der kategorie mit "parentId" ausgibt, usw.

wie gesagt, ich denke in der jetzigen form müssten zuviele unnötige IF abfragen eingebaut werden um alles zu berücksichtigen daher würde eine zweite funktion wohl am meisten sinn machen, oder gleich ne klasse.

das skript ist auf jedenfall sehr optimierungsbedürftig ;) ... was hältsts du denn von der rex nav factory?
BLUEMOUSE | BlueMouse GmbH
Benutzeravatar
ynamite
 
Beiträge: 118
Registriert: 26. Jan 2007, 13:59
Wohnort: baden

Beitragvon darwin » 23. Nov 2010, 14:30

was hältsts du denn von der rex nav factory?

stümmt, da wäre schon einges onBoard... man müsst die Class
erweitern ...*HILFE* ... nur leide rist das nich grad meine Stärke ... :oops:

Hat wer Lust und Zeit?

ich fang mal an:
Code: Alles auswählen
class my_rex_navigation extends rex_navigation {
   
   var $render;
   var $render_sub;
   
   /*public*/ function get($category_id = 0,$depth = 3,$open = FALSE, $ignore_offlines = FALSE, $render = FALSE)
   {
      $this->render = $render;
      return $this->_getNavigation($category_id,$this->ignore_offlines, $this->render);
   }
   
   /*protected*/ function _getNavigation($category_id, $ignore_offlines = TRUE, $render = FALSE)
   {
     static $depth = 0;
    
    if($category_id < 1)
        $nav_obj = OOCategory::getRootCategories($ignore_offlines);
      else
        $nav_obj = OOCategory::getChildrenById($category_id, $ignore_offlines);
      
      
      
   $return = "";
   
   if(count($nav_obj)>0)
      

      foreach($nav_obj as $nav)
      {
         $return .= '<a href="'.$nav->getUrl().'">';
         
         if($render) {
            $return .= a561_sleightofhand(array(
                                       'text' => htmlspecialchars($nav->getName()),
                                       'font' => "Dax.ttf",
                                       'color' => array(192,192,192),
                                       'size' => 11,
                                       'spacing' => 1
                                    ));
         } else {
            $return .= htmlspecialchars($nav->getName());
         }
         
         $return .= '</a>';
      }


      return $return;
   }
   
}

$my_rex_nav = new my_rex_navigation();
echo $my_rex_nav->get(0,3,FALSE,TRUE,TRUE);



:oops:
Benutzeravatar
darwin
 
Beiträge: 1261
Registriert: 2. Jan 2007, 16:10
Wohnort: LA

Beitragvon ynamite » 23. Nov 2010, 14:51

:D

würde gerne helfen aber hab momentan echt keine zeit, tut mir leid.

mit der ynav gehts nicht?
BLUEMOUSE | BlueMouse GmbH
Benutzeravatar
ynamite
 
Beiträge: 118
Registriert: 26. Jan 2007, 13:59
Wohnort: baden

Beitragvon darwin » 23. Nov 2010, 15:01

HI...
mit der yNav lief es bereits, nur hatte ich Probleme den Code zu verstehen bzw. zu erweitern. Und mich hat das Thema die rex_nav zu erweitern eh schon lange mal interessiert ;)

hier mal mein erster Versuch eine Class zu erweitern:
Code: Alles auswählen
class my_rex_navigation extends rex_navigation {
   
   var $render;
   var $render_sub;
   
   
   function get($category_id = 0,$depth = 3,$open = FALSE, $ignore_offlines = FALSE, $render = FALSE, $render_sub = FALSE)
   {
      if(!$this->_setActivePath()) return FALSE;
      
      $this->depth = $depth;
      $this->open = $open;
      $this->ignore_offlines = $ignore_offlines;
      $this->render = $render;
      $this->render_sub = $render_sub;
    
      return $this->_getNavigation($category_id,$this->ignore_offlines,$this->render,$this->render_sub);
   }
   
   function _getNavigation($category_id, $ignore_offlines = TRUE, $render = FALSE, $render_sub = FALSE)
   {
      
      static $depth = 0;
      
      if($category_id < 1)
         $nav_obj = OOCategory::getRootCategories($ignore_offlines);
      else
         $nav_obj = OOCategory::getChildrenById($category_id, $ignore_offlines);
         
      
      $return = "";
      if(count($nav_obj)>0)
         $return .= '<ul>';
         
      foreach($nav_obj as $nav)
      {
         
         $return .= '<li>';
         $return .= '<a href="'.$nav->getUrl().'">';
         
         if($render) {
            $return .= a561_sleightofhand(array(
                                       'text' => htmlspecialchars($nav->getName()),
                                       'font' => "Dax.ttf",
                                       'color' => array(192,192,192),
                                       'size' => 11,
                                       'spacing' => 1
                                    ));
         } else {
            $return .= htmlspecialchars($nav->getName());
         }
         
         
         
         $return .= '</a>';
         
         $depth++;
         if(($this->open
            || $nav->getId() == $this->current_category_id
            || in_array($nav->getId(),$this->path) )
            &&
            ($this->depth > $depth
            || $this->depth < 0))
         {
            if($render_sub)
               $return .= $this->_getNavigation($nav->getId(),$ignore_offlines, $render_sub = TRUE);
            else
               $return .= $this->_getNavigation($nav->getId(),$ignore_offlines);
         }
         $depth--;

         $return .= '</li>';
      }
      
      if(count($nav_obj)>0)
         $return .= '</ul>';
      
      return $return;
   }
   
}

$my_rex_nav = new my_rex_navigation();
echo $my_rex_nav->get(0,3, FALSE, TRUE, $render = TRUE, $render_sub = TRUE);


Im Prinzip ist es nichts anderes als der Hack von ynamite für die yNav.
;) äh.. und es funzt sogar schonmal soweit ...
bitte testen ... Danke

grz. Chris
Benutzeravatar
darwin
 
Beiträge: 1261
Registriert: 2. Jan 2007, 16:10
Wohnort: LA

Vorherige

Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast