[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
ynamite's Navigation Factory :) - Seite 2 - 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/
Benutzeravatar
ynamite
Beiträge: 143
Registriert: 26. Jan 2007, 14:59
Wohnort: baden
Kontaktdaten: Website

21. Okt 2010, 15:58

super, freut mich das es klappt! ;)

wegen dem Ü welches nicht angezeigt wird, ich glaube das liegt an der verwendeten Schrift-Datei, wahrscheinlich enthält diese keine Umlaute.

gruss
y
MASSIF Webdesign Studio

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

22. Nov 2010, 16:51

Hi ynamite...
hab grad mal versucht die yNav 1:1 vom Downloadbereich in eine REX 4.3
zu testen. Hier wirfts mir ettliche Fehler:

Code: Alles auswählen

Notice: Undefined index: nav in htdocs/redaxo/include/generated/templates/8.template on line 55
Notice: Undefined variable: subNavCounter in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined variable: subNavCounter in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 1 in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 2 in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined index: 2 in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 3 in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined index: 3 in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 4 in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined index: 4 in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 7 in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined index: 7 in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 8 in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined index: 8 in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 9 in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined index: 9 in htdocs/redaxo/include/generated/templates/8.template on line 139
Notice: Undefined index: 10 in htdocs/redaxo/include/generated/templates/8.template on line 128
Notice: Undefined index: 10 in htdocs/redaxo/include/generated/templates/8.template on line 139
Script 1:1 ausm Downloadbereich in ein Template kopiert, "yNav Template" in Ausgabe Template included und
mit folgender Ausgabe getestet:

Code: Alles auswählen

<?php
$options = array('addSubNav'=>1, 'dropDown'=>1, 'addItemId'=>1, 'useArticleId'=>1);
$navs = createNav($this,$options);
echo $navs[nav];
echo $navs[subnav];
?>
grz. Chris

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

22. Nov 2010, 17:06

hmm... sry ...
ok in einer blanken REX 43 Demo funktioniert es...

werd mal auf Fehlersuche gehen... sry.

grz. Chris

Benutzeravatar
ynamite
Beiträge: 143
Registriert: 26. Jan 2007, 14:59
Wohnort: baden
Kontaktdaten: Website

22. Nov 2010, 17:09

darwin hat geschrieben: hab grad mal versucht die yNav 1:1 vom Downloadbereich in eine REX 4.3
zu testen. Hier wirfts mir ettliche Fehler
edit: schon OK ;) im besten Fall sollte es imo auch keine notices geben.

Hi Chris

Danke fürs testen ;) Aber ich muss dich enttäuschen, das sind keine Fehler sondern Hinweise, daher steht auch bei jeder Zeile "notice" und nicht "error". Du hast das PHP error reporting etwas zu aggressiv eingestellt.

Such mal nach dem PHP-Befehl error_reporting und ändere den zum Beispiel in "error_reporting(E_ALL ^ E_NOTICE);" um. Für weitere Infos siehe: http://php.net/manual/de/function.error-reporting.php

Ich hoffe das hilft, ansonsten einfach nochmal melden!

Gruss ;)
y
MASSIF Webdesign Studio

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

22. Nov 2010, 17:16

eieiei ...
Danke... steh heut irgendwie daneben... hatte das error_reporting
in einem testAddOn mit drin... sry und danke für den tipp

grz. Chris

Benutzeravatar
ynamite
Beiträge: 143
Registriert: 26. Jan 2007, 14:59
Wohnort: baden
Kontaktdaten: Website

22. Nov 2010, 17:17

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

viel spass!
y
MASSIF Webdesign Studio

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

23. Nov 2010, 12: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
ynamite
Beiträge: 143
Registriert: 26. Jan 2007, 14:59
Wohnort: baden
Kontaktdaten: Website

23. Nov 2010, 12: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
MASSIF Webdesign Studio

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

23. Nov 2010, 12: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
ynamite
Beiträge: 143
Registriert: 26. Jan 2007, 14:59
Wohnort: baden
Kontaktdaten: Website

23. Nov 2010, 12: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?
MASSIF Webdesign Studio

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

23. Nov 2010, 15: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
ynamite
Beiträge: 143
Registriert: 26. Jan 2007, 14:59
Wohnort: baden
Kontaktdaten: Website

23. Nov 2010, 15:51

:D

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

mit der ynav gehts nicht?
MASSIF Webdesign Studio

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

23. Nov 2010, 16: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

Zurück zu „Allgemeines [R4]“