Modul :: NavigationUniversell

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von idea-tec » Mi 23. Jun 2010, 20:21

Poste bitte mal den Modul-Output, wie soll man das beantworten, wenn man nicht sehen kann, was getan wird?
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

thilo
Beiträge: 73
Registriert: Mo 22. Mär 2004, 13:41
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von thilo » Do 24. Jun 2010, 09:19

sorry - klingt logisch ;-)

Also hier der Code des Modules Hauptnavi:

Code: Alles auswählen

<?php

cInclude('classes', 'atelierq.navigation.class.inc.php');

$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat-home', '1'));

$aQnavigation->between(0, '');
$aQnavigation->maskNormal(0, '<div id="button"><div id="buttontext"><a class="navi" target="_self" href="{link}">{name1}</a></div></div>');
$aQnavigation->maskNormalSub(0, '<div id="button"><div id="buttontext"><a class="navi" target="_self" href="{link}">{name1}</a></div></div>');
$aQnavigation->maskSelected(0, '<div id="buttonaktiv"><div id="buttontextaktiv"><a class="active" target="_self" href="{link}">{name1}</a></div></div>');
$aQnavigation->maskSelectedSub(0, '<div id="buttonaktiv"><div id="buttontextaktiv"><a class="active" target="_self" href="{link}">{name1}</a></div></div>');

echo $aQnavigation->showNavigation(0);
?>
und hier der Code des Modules Subnavi:

Code: Alles auswählen

<?php

$aQnavigation->between(2, '');
$aQnavigation->maskNormal(2, '<div><a target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(2, '<div><a target="_self" href="{link}">›{name1}</a></div>');
$aQnavigation->maskNormalSub(2, '<div><a target="_self" href="{link}">{name1}</a>{sub}</div>');
$aQnavigation->maskSelectedSub(2, '<div><a target="_self" href="{link}">›{name1}</a>{sub}</div>');

$aQnavigation->between(1, '');
$aQnavigation->maskNormal(1, '<div id="subnavibutton"><div id="subnavibuttontext"><a class="sub" target="_self" href="{link}">{name1}</a></div></div>');
$aQnavigation->maskNormalSub(1, '<div id="subnavibutton"><div id="subnavibuttontext"><a class="sub" target="_self" href="{link}">{name1}</a></div></div>{sub}');
$aQnavigation->maskSelected(1, '<div id="subnavibuttonaktiv"><div id="subnavibuttontextaktiv"><a class="subactive" target="_self" href="{link}">{name1}</a></div></div>');
$aQnavigation->maskSelectedSub(1, '<div id="subnavibuttonaktiv"><div id="subnavibuttontextaktiv"><a class="subactive" target="_self" href="{link}">{name1}</a></div></div>{sub}');

$aQnavigation->setSub(1, $aQnavigation->showNavigation(2));

echo $aQnavigation->showNavigation(1);
?>

schnueffel
Beiträge: 7
Registriert: Di 17. Aug 2010, 10:22
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von schnueffel » Mo 23. Aug 2010, 07:00

Hallo Kummer,

ich verwende die Navigation Universell, habe aber das Problem, das unter der ersten Ebene #END# angezeigt wird. Wenn ich auf einen Menüpunkt klicke soll eigentlich die zweite Ebene erscheinen, tut sie aber leider nicht.

Hier ist der Code aus dem Modul:

Code: Alles auswählen

<?php

cInclude('classes', 'atelierq.navigation.class.inc.php');

$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_subnavigation'));

$aQnavigation->between(3, ''); 
$aQnavigation->maskNormal(3, '<li><a href="{link}">{name1}</a></li>'); 
$aQnavigation->maskSelected(3, '<li class="selected"><a href="{link}">{name1}</a></li>'); 

$aQnavigation->between(2, ''); 
$aQnavigation->maskNormal(2, '<li><a href="{link}">{name1}</a></li>'); 
$aQnavigation->maskSelected(2, '<li class="selected"><a href="{link}">{name1}</a></li>'); 
$aQnavigation->maskSelectedSub(2, '<li class="selected"><a href="{link}">{name1}</a><ul>{sub}</ul></li>'); 
$aQnavigation->setSub(2, $aQnavigation->showNavigation(3));

$aQnavigation->between(1, ''); 
$aQnavigation->maskNormal(1, '<li><a href="{link}">{name1}</a></li>'); 
$aQnavigation->maskSelected(1, '<li class="selected"><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelectedSub(1, '<li class="selected"><a href="{link}">{name1}</a><ul id="subnavi">{sub}</ul></li>');
$aQnavigation->setSub(1, $aQnavigation->showNavigation(2));

$aQnavigation->between(0, ''); 
$aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>'); 
$aQnavigation->maskSelected(0, '<li class="selected"><a href="{link}">{name1}</a></li>');


echo '<ul id="navi">';
echo $aQnavigation->showNavigation(0);
echo '</ul>';

?>
Kann es sein, dass das Problem aus der Datei "atelierq.navigation.class.inc.php" kommt? Ich habe Sie mir angesehn und dort #END# gefunden, leider habe ich kaum Erfahrung in PHP und weiss nicht, an welcher Stelle es genau hängt.

Code: Alles auswählen

<?php


/**
 * navigationUniversell (aQnavigation)
 * @version $Id: atelierq.navigation.class.inc.php 9572 2009-03-02 17:47:08Z akm $
 * @author Andreas Kummer, w3concepts AG
 * @copyright Copyright &copy; 2009, w3concepts AG
 */

class aQnavigation {

	/**
	 * Konstruktor der Klasse.
	 * @param Integer  Primärschlüssel der Startkategorie.
	 */
	function aQnavigation($startId) {

		global $client, $lang, $idcat, $db;

		$this->startId = $startId;

		$this->client = $client;
		$this->lang = $lang;

		$this->idcat = (isset ($_GET['pretend'])) ? ($_GET['pretend']) : ($idcat);

		$this->before = '';
		$this->beforeEach = '';
		$this->between = '';
		$this->after = '';

		$this->excludeItemsStartingWith = '__';

		$this->db = $db;

		$this->setStartIds();

		$this->getNavigation();
	}

	/**
	 * Auslesen der Navigationsstruktur aus der Datenbank.
	 */
	function getNavigation() {

		global $cfg, $auth;

		if ($this->startId != $this->id[0]) {
			/*
			 * Wenn die StartId nicht identisch ist mit der höchsten Ebene der
			 * aktuell selektierten Kategorie, dann liegt die gewählte Kategorie
			 * folgerichtig ausserhalb des für die Navigation gewählten Baumes.
			 * In diesem Fall ist nur die Hauptnavigation einzublenden.
			 */
			$this->id[0] = $this->startId;
			for ($i = 1; $i <= 4; $i++) {
				$this->id[$i] = -1;
			}
		}

		if ($auth->auth['uid'] == '' || !$this->isNumeric($auth->auth['uid'])) {
			/*
			 * Login nicht erfolgt
			 */
			$user = 0;
		} else {
			/*
			 * Benutzer ist eingeloggt
			 */
			$user = $auth->auth['uid'];
		}

		$this->db->query("" .
		"SELECT DISTINCT " .
		"a.idcat, " .
		"a.parentid, " .
		"a.preid, " .
		"a.postid, " .
		"a.parentid, " .
		"b.name, " .
		"b.idlang, " .
		"IF (b.visible = 1 && (b.public = 1 || d.idfrontenduser IS NOT NULL), 1, 0) AS visible " .
		"FROM {$cfg['tab']['cat']} AS a " .
		"LEFT JOIN {$cfg['tab']['cat_lang']} AS b ON a.idcat = b.idcat " .
		"LEFT JOIN {$cfg['tab']['frontendpermissions']} AS c ON ((c.item = b.idcatlang OR c.item = '__GLOBAL__') AND c.idlang = b.idlang AND plugin ='category') " .
		"LEFT JOIN {$cfg['tab']['frontendgroupmembers']} AS d ON c.idfrontendgroup = d.idfrontendgroup AND d.idfrontenduser = {$user} " .
		"WHERE " .
		"   a.idclient = {$this->client} " .
		"   AND (" .
		"      a.parentid = {$this->id[0]} " .
		"      OR a.parentid = {$this->id[1]} " .
		"      OR a.parentid = {$this->id[2]} " .
		"      OR a.parentid = {$this->id[3]} " .
		"      OR a.parentid = {$this->id[4]} " .
		"   ) " .
		"");

		$this->navigationTree = array ();

		$this->firstId[0] = 0;
		$this->firstId[1] = 0;
		$this->firstId[2] = 0;
		$this->firstId[3] = 0;
		$this->firstId[4] = 0;

		while ($this->db->next_record()) {

			for ($i = 0; $i <= 4; $i++) {
				if (($this->firstId[$i] == 0 && $this->db->f('parentid') == $this->id[$i] && $this->db->f('preid') == 0 && $this->db->f('idlang') == $this->lang) || ($this->firstId[$i] == 0 && $this->db->f('parentid') == $this->id[$i] && $this->db->f('preid') == 0 && $this->db->f('idlang') == null)) {
					$this->firstId[$i] = $this->db->f('idcat');
				}
			}
			/*
			 * Das Einfügen in den Navigationsbaum darf nur erfolgen, wenn noch kein Eintrag existiert
			 * oder - wenn bereits einer existiert - der neue Eintrag der aktuell gewählten Sprache
			 * entspricht.
			 */
			if (!isset ($this->navigationTree[$this->db->f('parentid')][$this->db->f('idcat')]) || $this->db->f('idlang') == $this->lang) {
				$this->navigationTree[$this->db->f('parentid')][$this->db->f('idcat')] = array (
					'preid' => $this->db->f('preid'
				), 'postid' => $this->db->f('postid'), 'visible' => $this->db->f('visible'), 'name' => $this->db->f('name'), 'idlang' => $this->db->f('idlang'));
			}
		}

	}

	/**
	 * Ausgabe der Navigation an die Standardausgabe.
	 * @param String  Navigationstyp
	 */
	function showNavigation($type, $next = -1) {

		static $first;
		static $output = array (
			false,
			false,
			false,
			false,
			false,
			false,
			false
		);
		
		$returnValue = "";

		if ($next == 0) {
			if ($output[$type]) {
				return '#END#' . $this->after[$type];
			} else {
				return false;
			}
		}

		if ($next == -1) {
			$returnValue .= $this->before[$type] . '#START#';
			$next = $this->firstId[$type];
			$first[$type] = true;
		}

		$parentId = $this->id[$type];
		
		$link = 'front_content.php?idcat=' . $next;

		if ($this->navigationTree[$parentId][$next]['visible'] == 1 && $this->navigationTree[$parentId][$next]['idlang'] == $this->lang && $this->isVisble($this->navigationTree[$parentId][$next]['name'])) {
			if (!$first[$type]) {
				$returnValue .= $this->between[$type];
			}

			if (strstr($this->navigationTree[$parentId][$next]['name'], '$$$') == true) {
				$name = explode('$$$', $this->navigationTree[$parentId][$next]['name']);
				$name1 = $name[0];
				$name2 = $name[1];
			} else {
				$name1 = $this->navigationTree[$parentId][$next]['name'];
				$name2 = '';
			}

			$sub = (isset ($this->sub[$type])) ? ($this->sub[$type]) : ('');

			if ($this->isActive($next) & !empty ($this->maskActive[$type]) & !empty ($this->maskActive[$type])) {
				$returnValue .= $this->beforeSelected[$type];
				$returnValue .= str_replace('{sub}', $sub, str_replace('{name2}', $name2, str_replace('{name1}', $name1, str_replace('{link}', $link, ($sub == '') ? ($this->maskActive[$type]) : ($this->maskActiveSub[$type])))));
			}
			elseif ($this->isSelected($next)) {
				$returnValue .= $this->beforeSelected[$type];
				$returnValue .= str_replace('{sub}', $sub, str_replace('{name2}', $name2, str_replace('{name1}', $name1, str_replace('{link}', $link, ($sub == '') ? ($this->maskSelected[$type]) : ($this->maskSelectedSub[$type])))));
			} else {
				$returnValue .= $this->beforeEach[$type];
				$returnValue .= str_replace('{sub}', $sub, str_replace('{name2}', $name2, str_replace('{name1}', $name1, str_replace('{link}', $link, $this->maskNormal[$type]))));
			}

			$first[$type] = false;
			$output[$type] = true;
						
		}
		elseif (!$output && $this->navigationTree[$parentId][$next]['postid'] == 0) {
			/*
			 * Die Navigation enthält nichts.
			 */
		}
		
		$returnValue = $returnValue . $this->showNavigation($type, $this->navigationTree[$parentId][$next]['postid']);

		$returnValue = preg_replace('/#START#(.*?)\\{iffirst:(.*?)\\}/', "$1$2", $returnValue);
		$returnValue = preg_replace('/\\{iffirst:(.*?)\\}/', "", $returnValue);
		
		$returnValue = preg_replace('/\\{iflast:(.*?)\\}(.*?)#END#/', "$1$2", $returnValue);
		$returnValue = preg_replace('/\\{iflast:(.*?)\\}/', "", $returnValue);
		
		$returnValue = preg_replace('/#START#/', "", $returnValue);

		return $returnValue;
	}

	function setExcludeStart($start) {
		$this->excludeItemsStartingWith = $start;
	}

	function isVisble($name) {
		if (substr($name, 0, strlen($this->excludeItemsStartingWith)) == $this->excludeItemsStartingWith) {
			return false;
		}
		return true;
	}

	/**
	 * Ausgabe vor der Navigation
	 * @param String  Ausgabe vor der Navigation.
	 */
	function before($level, $text) {
		$this->before[$level] = $text;
	}

	/**
	 * Ausgabe vor jedem Eintrag
	 * @param String  Ausgabe vor jedem Eintrag.
	 */
	function beforeEach($level, $text) {
		$this->beforeEach[$level] = $text;
	}

	/**
	 * Ausgabe vor jedem selektierten Menueintrag
	 * @param String  Ausgabe vor jedem selektierten Menueintrag.
	 */
	function beforeSelected($level, $text) {
		$this->beforeSelected[$level] = $text;
	}

	/**
	 * Ausgabe zwischen zwei Hauptmenupunkten
	 * @param String  Ausgabe zwischen zwei Hauptmenupunkten.
	 */
	function between($level, $text) {
		$this->between[$level] = $text;
	}

	/**
	 * Ausgabe nach der Navigation
	 * @param String  Ausgabe nach der Navigation.
	 */
	function after($level, $text) {
		$this->after[$level] = $text;
	}

	function maskNormal($level, $text) {
		$this->maskNormal[$level] = $text;
	}

	function maskNormalSub($level, $text) {
		$this->maskNormalSub[$level] = $text;
	}

	function maskSelected($level, $text) {
		$this->maskSelected[$level] = $text;
	}

	function maskSelectedSub($level, $text) {
		$this->maskSelectedSub[$level] = $text;
	}

	function maskActive($level, $text) {
		$this->maskActive[$level] = $text;
	}

	function maskActiveSub($level, $text) {
		$this->maskActiveSub[$level] = $text;
	}

	function setSub($level, $content) {
		$this->sub[$level] = $content;
	}

	/**
	 * Gibt das Level der Kategorie zurück.
	 * @param Integer  Primärschlüssel der Kategorie.
	 * @return Integer Level der spezifizierten Kategorie.
	 */
	function getLevel($idcat) {

		global $cfg;

		if (empty ($idcat)) {
			return 0;
		}

		$this->db->query("" .
		"SELECT level FROM {$cfg['tab']['cat_tree']} " .
		"WHERE " .
		"   idcat = $idcat" .
		"");
		if ($this->db->next_record()) {
			return $this->db->f('level');
		} else {
			return 0;
		}
	}

	/**
	 * Gib die Tiefe relativ zum Hauptmenu an.
	 * @param Integer  Primärschlüssel der Kategorie
	 * @return Integer Level relativ zum Hauptmenu
	 */
	function getNetLevel($idcat) {

		return $this->getLevel($idcat) - $this->getLevel($this->startId);
	}

	/**
	 * Ermittlung des jeweils ersten Kategorieeintrages jeder Ebene. Die
	 * Speicherung dieser Daten erfolgt in das Klassenattribut id.
	 */
	function setStartIds() {

		$id = $this->idcat;

		$level = $this->getNetLevel($id);
		$this->id[$level] = $id;

		while ($level > 0) {
			$this->id[$level -1] = $this->getParentId($id);
			$id = $this->id[$level -1];
			$level = $this->getNetLevel($id);
		}

		if (empty ($this->id)) {
			$this->id[0] = $this->startId;
		}
		for ($i = 1; $i <= 4; $i++) {
			if (empty ($this->id[$i])) {
				$this->id[$i] = -1;
			}
		}
		ksort($this->id);
	}

	/**
	 * Ermittlung des Elternelementes der Kategorie mit dem Primärschlüssel
	 * idcat
	 * @param Integer  Primärschlüssel des Kindelementes, dessen Elternelement
	 * ermittelt werden soll.
	 * @return Integer Primärschlüssel des Elternelementes.
	 */
	function getParentId($idcat) {

		global $cfg;

		$this->db->query("" .
		"SELECT parentid FROM {$cfg['tab']['cat']} " .
		"WHERE " .
		"   idcat = $idcat " .
		"");
		if ($this->db->next_record()) {
			return $this->db->f('parentid');
		} else {
			return 0;
		}
	}

	/**
	 * Anzeige, ob eine Navigationsebene Elemente enthält oder nicht.
	 * @param Integer  Navigationsstufe.
	 * @return Boolean True, wenn die Navigationsstufe leer ist (keine Elemente
	 * enhält). Sonst false.
	 */
	function navigationEmpty($level) {

		if ($this->firstId[$level] == 0) {
			return true;
		}

		return false;
	}

	/**
	 * Anzeige, ob eine Kategorie selektiert ist oder nicht. Eine Kategorie gilt
	 * als selektiert, wenn sie die aktuelle Kategorie ist oder ein direktes
	 * oder indirektes Elternelement der aktuellen Kategorie.
	 * @param Integer  Primärschlüssel der Kategorie, deren Status gefragt ist.
	 * @return Boolean True, wenn die gefragte Kategorie mit der aktuellen
	 * Kategorie übereinstimmt oder ein direktes oder indirektes Elternelement
	 * der aktuellen Kategorie darstellt.
	 */
	function isSelected($idcat) {

		return in_array($idcat, $this->id);
	}

	/**
	 * Anzeige, ob es sich bei der Kategorie um die aktive Kategorie handelt oder nicht.
	 * @param Integer Primärschlüssel der Kategorie, deren Status gefragt ist.
	 * @return Boolean True, wenn die gefragte Kategorie aktiv ist.
	 */
	function isActive($idcat) {

		return $idcat == $GLOBALS['idcat'];
	}

	/**
	 * Die Funktion gibt true zurück, wenn der übergene String ausschliesslich aus nummerischen Ziffern besteht.
	 * @param String parameter String, der geprüft werden soll.
	 * @return Boolean True, wenn der übergebene String ausschliesslich aus nummerischen Ziffern besteht.
	 */
	function isNumeric($parameter) {
		return !preg_match("/[^0-9]/", $parameter);
	}
}
?>
Haben Sie eine Idee, welche Einstellungen bei mir falsch sind?
Bild 7.png
Bild 7.png (15.49 KiB) 5202 mal betrachtet
Vielen Dank für die Hilfe,
Schnueffel

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von idea-tec » Di 24. Aug 2010, 05:49

@#END#:
In der class-Datei einfach folgendes ändern:
Zeil 149 in:

Code: Alles auswählen

//                return '#END#' . $this->after[$type];
                return $this->after[$type];
Zeile 208 in:

Code: Alles auswählen

//          $returnValue = preg_replace('/\\{iflast:(.*?)\\}(.*?)#END#/', "$1$2", $returnValue);
          $returnValue = preg_replace('/\\{iflast:(.*?)\\}(.*?)/', "$1$2", $returnValue);
@Unternavigation:
Da fehlt schlicht das setzen der Subnavigation. Hätte man bei aufmerksamem ansehen der Blöcke durchaus sehr einfach erkennen können ;-)

Code: Alles auswählen

    $aQnavigation->between(0, '');
    $aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>');
    $aQnavigation->maskSelected(0, '<li class="selected"><a href="{link}">{name1}</a></li>');
//-- Die  beiden nachfolgenden Zeilen müssen unterhalb der 3 oberen Zeilen NOCH eingefügt werden.
//-- Auf html habe ich nun nicht geachtet, es geht ums "setSub", "{sub}" und "maskSelectedSub"
    $aQnavigation->maskSelectedSub(0, '<li class="selected"><a href="{link}">{name1}</a><ul id="subnavi">{sub}</ul></li>');
    $aQnavigation->setSub(0, $aQnavigation->showNavigation(1));
?>
Zuletzt geändert von idea-tec am Di 24. Aug 2010, 07:28, insgesamt 1-mal geändert.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

schnueffel
Beiträge: 7
Registriert: Di 17. Aug 2010, 10:22
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von schnueffel » Di 24. Aug 2010, 07:12

Guten Morgen Karsten,

vielen Dank für die Hilfe, jetzt funktioniert alles!

Ich bin leider noch ziemlicher Contenido-Neuling und habe deshalb auch den Fehler im Modul nicht erkannt, tut mir Leid.

Viele Grüße
Schnueffel

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von idea-tec » Di 24. Aug 2010, 07:29

schnueffel hat geschrieben:vielen Dank für die Hilfe, jetzt funktioniert alles!
Das ist schön :-) So soll es sein
schnueffel hat geschrieben:Ich bin leider noch ziemlicher Contenido-Neuling und habe deshalb auch den Fehler im Modul nicht erkannt, tut mir Leid.
Schon in Ordnung ... ;-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Dalamar
Beiträge: 298
Registriert: Di 16. Nov 2004, 15:43
Wohnort: Arnstadt / Thüringen
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von Dalamar » Mi 8. Sep 2010, 13:46

Hallo Leute,

ich stehe gerade tierisch auf dem Schlauch.

Für unsere kleine Butze möchte während mein Geschäftspartner im Urlaub ist, die Website neu aufbauen, da die alte bereits in die Jahre gekommen ist, sowohl layout-technisch als auch von den Texten.

Für mich ist die "NavigationUniversell" eines der flexibelsten und in der Anwendung einfachsten Module für Contenido, daher musste ich nicht lange überlegen, welches Navigationsmodul ich nun benutzen soll. Obwohl sich das Modul wie gesagt recht einfach verwenden lässt, stoße ich jetzt an meine Grenzen. Ich weiß ehrlich gesagt nicht, ob der Fehler bei mir oder in der PHP-Klasse liegt.

Folgendes Problem:

Ich habe eine horizontale Navigation aufgebaut. In dieser Navigation werden alle Level 0-Kategorien in einer unsortierten Liste dargestellt. Hat eine Level-0-Kategorie Kindelemente sollten diese ebenfalls in einer Liste innerhalb des Eltern-Listenelementes abgebildet werden. Die Navigation basiert auf dem JQuery Plugin Superfish, wobei das nicht relevant sein sollte. Rufe ich die neue Seite (EDIT: URL wieder entfernt) auf werden alle Elternelemente OHNE die Kindelemente ausgegeben. Erst nach einem Klick, z.B. auf "Unternehmen", werden die Kinder gerendert.

Anbei der Code:

Code: Alles auswählen

<?php

cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');

$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('mainnavigation', 'idcat_nav'));

/* Level 1 */
$aQnavigation->before(1, '<ul>');
$aQnavigation->after(1, '</ul>');
$aQnavigation->between(1, '');
$aQnavigation->maskNormal(1, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskNormalSub(1, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelected(1, '<li class="current"><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelectedSub(1, '<li class="current"><a href="{link}">{name1}</a></li>');

/* Level 0 */
$aQnavigation->before(0, '<div id="nav"><ul class="sf-menu">');
$aQnavigation->after(0, '</ul></div>');
$aQnavigation->between(0, '');
$aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskNormalSub(0, '<li><a href="{link}">{name1}</a>{sub}</li>');
$aQnavigation->maskSelected(0, '<li class="current"><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li class="current"><a href="{link}">{name1}</a>{sub}</li>');
$aQnavigation->setSub(0, $aQnavigation->showNavigation(1));

/* Ausgabe */
echo $aQnavigation->showNavigation(0);

?>
Meiner Meinung nach ist doch folgende Zeile

Code: Alles auswählen

$aQnavigation->maskNormalSub(0, '<li><a href="{link}">{name1}</a>{sub}</li>');
dafür zuständig, dass die Kindelemente auch angezeigt werden, wenn das Elternelement NICHT "selected" wurde.

Ich nutze Version 1.2.2 der Klasse "atelierq.navigation.class.inc.php"
Contenido wird in der Version 4.8.13 eingesetzt.
PHP -> Version 5.2.4-2ubuntu5.10

Kann mir jemand erklären, wie ich die Kindelemente auch ohne Klick auf das Elternelement angezeigt bekomme ?

Viele Dank und beste Grüße,
Christian
Zuletzt geändert von Dalamar am Do 9. Sep 2010, 08:48, insgesamt 1-mal geändert.
Beruflich: eComradeGroup und Media Atoll
Privat: Fantasybuch.net ;)

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von idea-tec » Mi 8. Sep 2010, 15:13

Dalamar hat geschrieben:Rufe ich die neue Seite (http://www.....) auf werden alle Elternelemente OHNE die Kindelemente ausgegeben. Erst nach einem Klick, z.B. auf "Unternehmen", werden die Kinder gerendert.
<gekürzt>
Kann mir jemand erklären, wie ich die Kindelemente auch ohne Klick auf das Elternelement angezeigt bekomme ?
Geht nicht ... es wird immer nur das nächste level der aktuell selektierten kategorie ausgegeben

ich bastel gerade eine neue, basierend auf dieser.
die letzte version hat auch einen Bug in bezug auf geschützte Kategorien, den ich bereits beseitigt habe (ist aber noch Beta)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Dalamar
Beiträge: 298
Registriert: Di 16. Nov 2004, 15:43
Wohnort: Arnstadt / Thüringen
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von Dalamar » Mi 8. Sep 2010, 15:32

Ok, Danke für die Information idea-tec. Ich habe jetzt kurzfristig auf die vpNavigation umgeschwenkt, mit der funktioniert es. Aber an einer Lösung, basierend auf der NavigationUniversell bin ich stark interessiert.
Beruflich: eComradeGroup und Media Atoll
Privat: Fantasybuch.net ;)

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von idea-tec » Mi 8. Sep 2010, 16:25

Dalamar hat geschrieben:Aber an einer Lösung, basierend auf der NavigationUniversell bin ich stark interessiert.
Jupp, ich auch ;-)
Ernsthaft, ich bin da dran, ist nur eine Frage der Zeit (was ich am allerwenigsten habe)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

matthiasschnueriger
Beiträge: 60
Registriert: Mo 28. Nov 2005, 16:01
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von matthiasschnueriger » So 12. Sep 2010, 18:24

Puuhh.... das NavigationUniversell Modul macht mich gerade total fertig und ich brauche Unterstützung.
Und zwar möchte ich die Navi zweimal auf der selben Website verwenden. Ist das technisch möglich?

Tree 1 (Hauptnavigation, startet bei idcat=1) läuft soweit.
Tree 2 (Extranet, startet bei idcat=56) zeigt leider gar nichts an.

Zur Erklärung. Ich habe das Modul einfach kopiert, damit ich im zweiten die property auf "idcat_extranet" ändern konnte. Beim Original-Modul habe ich dort "idcat_mainnavigation" drin.

In den Mandanteneinstellungen habe ich beide erfasst:

navigation, idcat_mainnavigation, 1
navigation, idcat_extranet, 56

Was mache ich falsch?
PS: Ausgabe-Level startet bei "0", also erste Ebene. An dem wird's also nicht liegen...

Danke für die Unterstützung.

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von idea-tec » Mo 13. Sep 2010, 06:21

Ja, das geht, die Navigation ist mehrfach verwendbar.

Alla ... bei mir sieht das, der Einfachheit halber und weil ich es ein Quatsch finde, das in Settings zu schreiben (verursacht zudem einen zusätzlichen DB-Zugriff), so aus:

Code: Alles auswählen

cInclude('classes', 'atelierq.navigation.class.inc.php');
$aQnavigation1 = new aQnavigation(27);
Die Zahl in der Klammer ist die idcat der PARENTkategorie!!!
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

barni
Beiträge: 127
Registriert: Fr 28. Okt 2005, 20:54
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von barni » Mi 13. Okt 2010, 10:54

Hi Leute,
der Downloadlink für die neueste Version ist down. Hat die jemand? Kann die jemand hochladen?

Vielen Dank
Barni
ich bin genauso hilflos wie ich tu ;)

peko
Beiträge: 32
Registriert: Mo 22. Dez 2008, 13:26
Wohnort: Wien
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von peko » Mi 27. Okt 2010, 20:44

Hi, Leute!

Ich habe da ein Problem mit der NavigationUniversell (no, na, sonst würde ich hier kaum schreiben).
Ich habe eine prinzipielle Kategorie(Baum)struktur wie folgt:
content
... diverse contentkategorien (auch geschützten Bereich) für Haupt- und Seitennavigation
footer
... einige kategorien für die footer-navi
system
... Seiten, mit speziellen Funktionen, teilweise zum Debuggen, aber auch Suche, Newsletter etc. Die direkten Links sollen *nicht* in Haupt- und Seitennavigation angezeigt werden, daher eigener Dateibaum.
Allerdings möchte ich, dass bei Footer- und Systemseiten die Seitennavigation mit der ersten Hauptkategorie des content-Baums ausgegeben werden, quasi so, als würden sie zu dieser Kategorie gehören.

Wie bekomme ich das hin? Wie kann man die Navigationausgabe auf einen anderen Kategoriebaum umleiten? Oder geht das mit diesem Modul gar nicht?
Ich habe jetzt zwei Tage alles mögliche ausprobiert. I.d.R erhalte ich bei den Footer- und Systemseiten gar keine Navigation. Habe zwei Instanzen des Navimoduls laufen:

Navigation-Left
beginnt mit

<?php
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');

$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat-left'));
...
?>

Navigation-Left-System:
<?php

cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');

// $cApiClient = new cApiClient($client);
$aQnavigation1 = new aQnavigation(36);

...
?>

ansonsten ist es im wesentlichen zweimal der selbe Quellcode (ausser, dass im zweiten Modul überall $aQnavigation[b]1[/b] steht).

Grundsätzlich würde es sogar funktionieren, denn wenn ich im zweiten Modul statt der idcat 36 (id von Contentbaum) die idcat 81 (id von Systembaum) einsetze, bekomme ich die Struktur des Systembaums - detto wenn ich die idcat des footerbaumes verwende - dann aber der footerbaum. Hm, ich brauche aber den *Content*baum bei Footer- und Systemseiten.

Zu sehen unter http://www.ipnetcom.at/front_content.php?idcat=40 , dann zum Beispiel "suche" starten. Beim Suchergebnis (das noch nicht funktioniert, zuerst mal die Navi hinkriegen sollte die gleiche Navi wie bei "Unternehmen" ausgegebene werden. Genauso wie beispielsweise bei Impressum in der Footernavi.

Hat jemand einen Tipp?

lg p

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von idea-tec » Do 28. Okt 2010, 05:41

Wenn ich dich nicht falsch verstanden habe, was du vorhast, dann muss ich sagen, dass dies mit dieser Navigation nicht ohne weiteres geht.
Der Weg über/mit 2 Modulen der Navigation ist jedoch schon der richtige

Rückfrage:
- die idcat 36 ist schon eine Unterkategorie mit den anzuzeigenden unterkategorien?
also in der Art:
system
- unterkategorie 36
- - Unterkategorie a
- - Unterkategorie b
- - Unterkategorie c
- - Unterkategorie ....
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Gesperrt