[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 :) - 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

ynamite's Navigation Factory :)

4. Aug 2010, 15:34

Hallo Leute

Wollte hier kurz meine Navigations-Skripts präsentieren.

Vor allem würde mich interessieren wie euch diese gefallen (und natürlich ob sie richtig funktionieren) und ob die Verwendung leichter von der Hand geht als andere ähnliche Funktionen/Addons/Klassen. Was fehlt eurer Meinung nach noch?

Der Grund wieso ich mir diese Skripts gebastelt habe, war einfach das ich mit der rex_navigation::factory irgendwie nie so richtig zufrieden war/bin (muss aber zugeben das ich mich nicht so sehr damit auseinandergesetzt habe, also ist die Aussage ein bisschen gewagt), vor allem dann nicht wenn man am eigentlichen Code etwas rumschrauben/ändern möchte.

Die Idee ist nicht eine Funktion zu bauen die alle möglichen Navigation darstellen kann, aber einfach ein im Masse sehr flexibles Skript. ist natürlich immer subjektiv, aber ich setze die Skripts bei 90% unserer Websites unverändert ein.

Eigentlich handelt es sich hierbei um 3 verschiedene Skripts:

yNav
Funktion/Template um Redaxo Navigation auszugeben
http://www.redaxo.de/168-0-templatedeta ... ate_id=150

yLangNav
Funktion/Template um Redaxo Sprach-Navigation auszugeben
http://www.redaxo.de/168-0-templatedeta ... ate_id=151

yBreadCrumb
Funktion/Template um Redaxo Breadcrumb-Navigation auszugeben
http://www.redaxo.de/168-0-templatedeta ... ate_id=152

so, hoffe ihr könnt die funktionen irgendwie gebrauchen, steht euch natürlich frei änderungen vorzunehmen etc.

falls es jedoch nennenswerte weiterentwicklungen gibt, wäre ich natürlich um feedback froh ;) viel spass!

liebe grüsse
y
Zuletzt geändert von ynamite am 12. Aug 2010, 18:53, insgesamt 4-mal geändert.
MASSIF Webdesign Studio

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

5. Aug 2010, 20:11

Sind denn alle in den ferien? :D

Hallöchen?
MASSIF Webdesign Studio

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

5. Aug 2010, 20:47

Hallo,
nö :O).

habe es vorhin mal Probiert wurde aber nichts Angezeigt.
Werde es Morgen noch mal in ruhe Versuchen.

Cheffchen

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

5. Aug 2010, 20:56

Hey

Danke fürs ausprobieren. Hab den Code oben nochmals aktualisiert, am besten nochmal kopieren.

Versuchs einfach mal so:

Code: Alles auswählen

$navs = createNav($this,array('addSubNav'=>1));
echo $navs['nav'];
MASSIF Webdesign Studio

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

5. Aug 2010, 22:34

Diese if-isset-Monsterabfrage in der function createNav kann man deutlich übersichtlicher und wartbarer schreiben. Nutze ein Array um die Defaultwerte der Option zu hinterlegen:

Code: Alles auswählen

// Array mit allen option-Defaultwerte
$options_vorgabe = array (
'parentId' => 0, // 0: Von welcher Kategorie (ID) aus die Navigation erstellen, zum Beispiel wenn man nur Subnavigation will 
'addSubNav' => false, // 0: Subnavigation hinzufügen? 
'renderFontfile' => 'univers.ttf'  // 1: schrift 
);

foreach ($options_vorgabe as $opt => $value) {
  if (!isset ($option[$opt]) ) {
    $option[$opt] = $value;
  }
}
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

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

5. Aug 2010, 23:11

Koala hat geschrieben:Diese if-isset-Monsterabfrage in der function createNav kann man deutlich übersichtlicher und wartbarer schreiben.
stimmt! wird angepasst. danke! ;)

edit: mir ist sogar noch eine bessere variante in den sinn gekommen, ist eingebaut.
Zuletzt geändert von ynamite am 12. Aug 2010, 17:54, insgesamt 1-mal geändert.
MASSIF Webdesign Studio

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

update

12. Aug 2010, 17:51

hallo

habe das mit den optionen nun vereinfach und die funktionen/templates nun auch im Redaxo download bereich eingefugt. folgend die links zu den überarbeiteten versionen:

yNav
http://www.redaxo.de/168-0-templatedeta ... ate_id=150

yLangNav
http://www.redaxo.de/168-0-templatedeta ... ate_id=151

yBreadCrumb
http://www.redaxo.de/168-0-templatedeta ... ate_id=152

bin auf feedback gespannt! viel spass damit ;)

gruss
y
MASSIF Webdesign Studio

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

12. Aug 2010, 22:13

Schreibe bitte anstelle von $options[parentId] dies: $options['parentId'] (und das bei allen $options-Array Zugriffen).
Es hagelt sonst ne Menge Fehlermeldungen.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

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

13. Aug 2010, 11:22

hallo koala

danke für den tipp! ist erledigt! ;)

war mir nicht bewusst das bei dieser schreibweise fehlermeldungen ausgespuckt werden, ich dachte dies sei völlig legitim.

gruss
y :wink:
MASSIF Webdesign Studio

steffus
Beiträge: 30
Registriert: 17. Aug 2009, 22:49

Frage

29. Aug 2010, 15:54

Schön, aber wie genau binde ich das in Redaxo ein?
Habe ein Template erstellt und dort die function hinein kopiert.
Dann habe ich in dem navi div folgendes hinein kopiert:

Code: Alles auswählen

<div class="navi">
<php
$options = array('showLangCodeOnly'=>1, 'separatorTag'=>'span');
echo createLangNav($options);
?>      </div>
geht aber nicht, wie funktioniert das denn?

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

Re: Frage

30. Aug 2010, 11:38

steffus hat geschrieben:Schön, aber wie genau binde ich das in Redaxo ein?
Habe ein Template erstellt und dort die function hinein kopiert.
Dann habe ich in dem navi div folgendes hinein kopiert:

geht aber nicht, wie funktioniert das denn?
Hallo Steffus

Was genau passiert denn? Kriegst du eine Fehlermeldung oder passier gar nichts? Bindest du denn das Template wo die Funktion drin ist auch im Haupt-Template ein?

Gruss
y
MASSIF Webdesign Studio

steffus
Beiträge: 30
Registriert: 17. Aug 2009, 22:49

30. Aug 2010, 14:12

er zeigt mir dann komische zeichen an, ober besser gesagt schreibt er mir die function in ein div. also, was habe ich gemacht. template erstellt, die funktion dort hinein kopiert. im default template dann wie folgt eingebunden:

Code: Alles auswählen

<div class="head-bottom-center">

REX_TEMPLATE[4]
<php
$options = array('showLangCodeOnly'=>1, 'separatorTag'=>'span');
echo createLangNav($options);
?>
    </div>
wobei REX_TEMPLATE[4] sich die function verbirgt.

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

30. Aug 2010, 16:20

steffus hat geschrieben:er zeigt mir dann komische zeichen an, ober besser gesagt schreibt er mir die function in ein div
Du musst die Funktion im REX_TEMPLATE[4] noch in PHP-Tags setzen:

Code: Alles auswählen


<?php

function createLangNav ...

?>

Falls du nicht sicher bist wie das gemeint ist, kopier die gesamte Funktion nochmals von hier http://www.redaxo.de/168-0-templatedeta ... ate_id=151 und ersetze deinen Code im Template 4.

Müsste so klappen, habs eben getestet.

Gruss
y
MASSIF Webdesign Studio

steffus
Beiträge: 30
Registriert: 17. Aug 2009, 22:49

31. Aug 2010, 15:28

no keine chance, nun zeigt er mir das an:

1, 'separatorTag'=>'span'); echo createLangNav($options); ?>

bin mir sicher das ich nun das template richtig kopiert habe. und es so im div eingebunden habe:

Code: Alles auswählen

<div class="navi">
        REX_TEMPLATE[4] 
<php 
$options = array('showLangCodeOnly'=>1, 'separatorTag'=>'span'); 
echo createLangNav($options); 
?> 
      </div>

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

31. Aug 2010, 15:38

steffus hat geschrieben:no keine chance, nun zeigt er mir das an:

1, 'separatorTag'=>'span'); echo createLangNav($options); ?>

bin mir sicher das ich nun das template richtig kopiert habe. und es so im div eingebunden habe:

Code: Alles auswählen

<div class="navi">
        REX_TEMPLATE[4] 
<php 
$options = array('showLangCodeOnly'=>1, 'separatorTag'=>'span'); 
echo createLangNav($options); 
?> 
      </div>
Komisch, kann mir gerade nicht erklären wieso das nicht funktionieren soll ... Habs wie gesagt mit dem genau gleichen Template, aus dem downloadbereich, getestet. kannst du mir eventuell einen eingeschränkten benutzer im redaxo einrichten und mir eine PM mit den Zugangsdaten schicken? dann schau ichs mir mal direkt an, weil bei mir funzts einwandfrei.

edit: werde auch nichts kaputt machen ;)
aber falls dir das zu heikel ist, kannst du mir wenigstens beide Templates vollständig posten bzw. pm'n? oder einen link zur seite schicken? nimmt mich selber wunder wieso's nicht gehen soll.
MASSIF Webdesign Studio

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

31. Aug 2010, 16:31

hab deinen Fehler soeben gefunden, dir fehlt im Template wo du die Navigation ausgiebst ein "?" (Fragezeichen)

müsste so aussehen (3. Zeile):

Code: Alles auswählen

<div class="navi">
        REX_TEMPLATE[4]
<?php
$options = array('showLangCodeOnly'=>1, 'separatorTag'=>'span');
echo createLangNav($options);
?>
      </div>
MASSIF Webdesign Studio

steffus
Beiträge: 30
Registriert: 17. Aug 2009, 22:49

1. Sep 2010, 23:42

Ok versuche es mal hier zu posten.

hier das navi id= 4

Code: Alles auswählen

<?php

function createLangNav($options_user='')
	{
	if(!is_array($options_user))
		$options_user=array();

	$options = array(
		'showLangCodeOnly'		=>		false,					// {boolean}			Soll nur die Abgekürzte Version angezeigt werden, zBsp. 'De', 'Fr' usw.
		'showDescription'		=>		false,					// {boolean}			Soll für die Sprachnavigation eine Beschreibung ausgegeben werden? zBsp: Sprache
		'description'			=>		'Sprache',				// {string}				String der als die Beschreibung ausgegeben wird
		'addSeparator'			=>		false,					// {boolean}			Soll zwischen jedem Navigationselement ein Trennzeichen angezeigt werden? (Nur falls 'displayAsList'=> false
		'separatorChar'			=>		'|',					// {string}				Trennzeichen
		'separatorTag'			=>		'span',					// {string}				Tag welches das Trennzeichen umschliesst
		'separatorTagClass'		=>		'',						// {string}				Klasse für das Trennzeichen-Tag

		'renderImages'			=>		false,					// {boolean}			Soll Navigation mit dem Schriftersetzungs-Addon SleightOfHand von Dave Holloway ausgegebn werden?
		'renderFontfile'		=>		'univers.ttf',			// {string}				Name der zu verwendenden Schrift-Datei (schaue Dokumentation SleightOfHand)
		'renderFontsize'		=>		12,						// {int}				Schriftgrösse (nicht pixelgenau!)
		'renderFontspacing'		=>		1,						// {int}				Zeilenabstand
		'renderFontcolor'		=>		array(42,41,46),		// {array(R,G,B)}		RGB-Farbwert der Schrift
		'renderFontactivecolor'	=>		array(255,255,255)		// {array(R,G,B)}		RGB-Farbwert der Schrift bei einem mouseover-Event
		);

	// Extending defaults array with user options
	foreach ($options_user as $key => $val) 
		if(isset($options[$key]))$options[$key] = $val;
	
	$invalidGets = array('clang','article_id');
	foreach($_GET as $key=>$val)
		{
		if(!in_array($key,$invalidGets))
			$string .= ($string=="") ? $key."=".$val : "&".$key."=".$val;
		}	

	global $REX;
	foreach($REX['CLANG'] as $key=>$lang)
		{
		if($options['showDescription'] && $out!="") $out .= '<span class="langtitle">'.$options['description'].'</span> ';
		if($options['addSeparator'] && $out!="")
			{
			$out .= ' <'.$options['separatorTag'];
			if($options['separatorTagClass'])
				$out .= ' class="'.$options['separatorTagClass'].'"';
			$out .= '>'.$options['separatorChar'].'</'.$options['separatorTag'].'> ';
			}
		$text = ($options['showLangCodeOnly']) ? substr($lang,0,2) : $lang ;
		if($options['renderImages'] && OOAddon::isAvailable('sleightofhand'))
			{
			if($REX['CUR_CLANG']==$key)
				$out .= a561_sleightofhand(array(
								'text' => $text,
								'link' => rex_getUrl($curArtId,$key),
								'font' => $options['renderFontfile'],
								'color' => $options['renderFontactivecolor'],
								'size' => $options['renderFontsize'],
								'spacing' => $options['renderFontspacing']
							));
			else
				$out .= a561_sleightofhand(array(
								'text' => $text,
								'link' => rex_getUrl($curArtId,$key),
								'font' => $options['renderFontfile'],
								'color' => $options['renderFontcolor'],
								'mouseover' => $options['renderFontactivecolor'],
								'size' => $options['renderFontsize'],
								'spacing' => $options['renderFontspacing']
							));				
			}
		else
			{
			$out .= '<a href="'.rex_getUrl($curArtId,$key). '?' .$string. '" title="'.$lang.'" id="lang'.$key.'"';
			if($REX['CUR_CLANG']==$key) $out .= ' class="active"';
			$out .= '>'.$text.'</a>';
			}
		}
	return $out;
	}

?>
hier nun der ausschnitt aus dem default, mehr habe ich nicht gemacht.


Code: Alles auswählen

<div id="head-navigation">
     REX_TEMPLATE[4]
        <php 
$options = array('showLangCodeOnly'=>1, 'separatorTag'=>'span'); 
echo createLangNav($options); 
?>   
wenn ich das nun mache, steht folgendes in meinem navi div:




1, 'separatorTag'=>'span'); echo createLangNav($options); ?>

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

1. Sep 2010, 23:45

Abend Steffus

Bitte die vorherigen Beiträge lesen!

Hab dein Fehler gefunden, dir fehlt in deinem default Template beim ersten PHP Tag ein Fragezeichen, wie oben schon geschrieben.

Gruss
y
MASSIF Webdesign Studio

steffus
Beiträge: 30
Registriert: 17. Aug 2009, 22:49

1. Sep 2010, 23:51

ja.. sehr gut.. noch eine frage.. nun zeigt er mir nur de oder en an.. aber kein richtiges navi... also das was ich in struktur angelegt habe.

dann solltest du, wenn du einfluss hast das im download bereich hier ändern
Beispiel Ausgabe:
<php
$options = array('showLangCodeOnly'=>1, 'separatorTag'=>'span');
echo createLangNav($options);
?>

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

1. Sep 2010, 23:55

Dazu verwendest du die falsche Funktion. Die "yLangNav", wie der Name schon andeutet, generiert eine Sprachnavigation. Um die Struktur auszugeben verwenden bitte die "yNav" unter (4. Download):
http://www.redaxo.de/19-0-templates.htm ... t=&x=0&y=0

Viel Glück
y
MASSIF Webdesign Studio

matze
Beiträge: 7
Registriert: 18. Nov 2009, 01:03

bring es leider nicht zusammen

21. Okt 2010, 15:31

Hi

hab gerade das template ynav ausprobiert.
ich finde die funktionen echt super und hut ab vor dem der das geschrieben hat.

leider hab ich das problem, dass es jeden menüpunkt mit der artikel id 1 verlinkt!
hab zwar schon einiges ausprobiert aber will einfach net funktionieren!!

hat jemand vielleicht eine lösung?
wäre euch echt dankbar.

lg Matthias

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

Re: bring es leider nicht zusammen

21. Okt 2010, 15:37

matze hat geschrieben:Hi

hab gerade das template ynav ausprobiert.
ich finde die funktionen echt super und hut ab vor dem der das geschrieben hat.

leider hab ich das problem, dass es jeden menüpunkt mit der artikel id 1 verlinkt!
hab zwar schon einiges ausprobiert aber will einfach net funktionieren!!

hat jemand vielleicht eine lösung?
wäre euch echt dankbar.

lg Matthias
hallo matze

vielen dank für das kompliment ;) sobald ich mal ein bisschen mehr zeit habe und gerade lust habe werde ich die letzten bugs noch ausmerzen bzw. die funktionen etwas erweitern.

zu deinem problem, hmm, ich kann mir gerade nicht erklären wieso das passiert. hast du die möglichkeit mir per pm einen link auf die seite zu schicken damit ich mal reinschauen kann? redaxo zugang wäre auch toll, aber vorerst sollte ein link auf die seite reichen.

kannst du zusätzlich noch angeben wie und mit welchen optionen du die funktion aufrufst?

danke!

gruss
y
MASSIF Webdesign Studio

matze
Beiträge: 7
Registriert: 18. Nov 2009, 01:03

Re: bring es leider nicht zusammen

21. Okt 2010, 15:45

hab dir gerade eine pn gesendet!

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

21. Okt 2010, 15:53

hab den fehler gefunden, lag an der funktion selber.

bitte kopier das gesamte ynav skript nochmals von der template download seite und versuchs nochmal damit. sollte klappen.

gib doch kurz bescheid obs nun funktioniert.

gruss
y
MASSIF Webdesign Studio

matze
Beiträge: 7
Registriert: 18. Nov 2009, 01:03

Super

21. Okt 2010, 15:57

Super
Danke, Danke, Danke

Funktioniert perfekt

Lg Matthias

Zurück zu „Allgemeines [R4]“