Modul :: NavigationUniversell
absolut. ich habe es in gebrauch.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Hallo Kummer,
ich komme leider mit meinem Ansinnen nicht weiter.
Ob Du mal so nett bist, da drauf zu schauen?
idcat für Start ist '1'.
Das Modul erzeugt keine Ausgabe.
Die Klasse liegt richtig in /includes als 'class.navigation.inc.php'
Hier der Modulcode (eigentlich auch korrekt?):
<?php
cInclude('frontend', 'includes/class.navigation.inc.php');
$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_servicenavigation'));
$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><a target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskNormalSub(1, '<div><a target="_self" href="{link}">{name1}</a></div>{sub}');
$aQnavigation->maskSelected(1, '<div><a target="_self" href="{link}">›{name1}</a></div>');
$aQnavigation->maskSelectedSub(1, '<div><a target="_self" href="{link}">›{name1}</a></div>{sub}');
$aQnavigation->setSub(1, $aQnavigation->showNavigation(1));
echo $aQnavigation->showNavigation(1);
?>
Hier das errorlog:[03-Sep-2008 10:38:10] /cms/front_content.php?idart=93 MySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR a.parentid = -1OR a.parentid = -1OR a.parentid = -1 ) AND ( d.idfro' at line 1
SELECT DISTINCT a.idcat, a.parentid, a.preid, a.postid, a.parentid, b.name, b.idlang, IF (b.visible = 1 && (b.public = 1 || c.idfrontendpermission IS NOT NULL), 1, 0) AS visible FROM nrwd_cat AS a LEFT JOIN nrwd_cat_lang AS b ON a.idcat = b.idcat LEFT JOIN nrwd_frontendpermissions AS c ON (c.item = b.idcatlang AND c.idlang = b.idlang AND plugin ='category') LEFT JOIN nrwd_frontendgroupmembers AS d ON c.idfrontendgroup = d.idfrontendgroup WHERE a.idclient = 1 AND ( a.parentid = OR a.parentid = -1OR a.parentid = -1OR a.parentid = -1 ) AND ( d.idfrontenduser = 0 OR d.idfrontenduser IS NULL )
[03-Sep-2008 10:38:10] /cms/front_content.php?idart=93 next_record called with no query pending in Module ID 27.
ich komme leider mit meinem Ansinnen nicht weiter.
Ob Du mal so nett bist, da drauf zu schauen?
idcat für Start ist '1'.
Das Modul erzeugt keine Ausgabe.
Die Klasse liegt richtig in /includes als 'class.navigation.inc.php'
Hier der Modulcode (eigentlich auch korrekt?):
<?php
cInclude('frontend', 'includes/class.navigation.inc.php');
$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_servicenavigation'));
$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><a target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskNormalSub(1, '<div><a target="_self" href="{link}">{name1}</a></div>{sub}');
$aQnavigation->maskSelected(1, '<div><a target="_self" href="{link}">›{name1}</a></div>');
$aQnavigation->maskSelectedSub(1, '<div><a target="_self" href="{link}">›{name1}</a></div>{sub}');
$aQnavigation->setSub(1, $aQnavigation->showNavigation(1));
echo $aQnavigation->showNavigation(1);
?>
Hier das errorlog:[03-Sep-2008 10:38:10] /cms/front_content.php?idart=93 MySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR a.parentid = -1OR a.parentid = -1OR a.parentid = -1 ) AND ( d.idfro' at line 1
SELECT DISTINCT a.idcat, a.parentid, a.preid, a.postid, a.parentid, b.name, b.idlang, IF (b.visible = 1 && (b.public = 1 || c.idfrontendpermission IS NOT NULL), 1, 0) AS visible FROM nrwd_cat AS a LEFT JOIN nrwd_cat_lang AS b ON a.idcat = b.idcat LEFT JOIN nrwd_frontendpermissions AS c ON (c.item = b.idcatlang AND c.idlang = b.idlang AND plugin ='category') LEFT JOIN nrwd_frontendgroupmembers AS d ON c.idfrontendgroup = d.idfrontendgroup WHERE a.idclient = 1 AND ( a.parentid = OR a.parentid = -1OR a.parentid = -1OR a.parentid = -1 ) AND ( d.idfrontenduser = 0 OR d.idfrontenduser IS NULL )
[03-Sep-2008 10:38:10] /cms/front_content.php?idart=93 next_record called with no query pending in Module ID 27.
-
- Beiträge: 59
- Registriert: Mi 18. Apr 2007, 18:43
- Kontaktdaten:
Reiternavigation
Hallo zusammen,
erst einmal ein dickes Lob an den Entwickler für dieses tolle Modul, das ich super zum laufen gebracht habe.
Nun meine Frage, ist es möglich mit diesem Modul eine Reiternavigation so wie hier http://clagnut.com/sandbox/csstabs/?writingtext=csstabs zu realisieren?
Bin leider noch nicht soweit mit css und php das ich so etwas alleine schaffe.
Kann mir hier jemand helfen? Wäre super.
erst einmal ein dickes Lob an den Entwickler für dieses tolle Modul, das ich super zum laufen gebracht habe.
Nun meine Frage, ist es möglich mit diesem Modul eine Reiternavigation so wie hier http://clagnut.com/sandbox/csstabs/?writingtext=csstabs zu realisieren?
Bin leider noch nicht soweit mit css und php das ich so etwas alleine schaffe.
Kann mir hier jemand helfen? Wäre super.
Hallo speedmaster,
ja, das geht. Im Output des Moduls steht sowas hier:
ja, das geht. Im Output des Moduls steht sowas hier:
Da machst Du dann anstelle der divs eben Deine Listenverschachtelungen. Die 0 in der Klammer ist die oberste Navigationsebene, die 1 die nächste, usw...$aQnavigation->between(1, '');
$aQnavigation->maskNormal(1, '<div><a target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(1, '<div><a target="_self" href="{link}">›{name1}</a></div>');
$aQnavigation->between(0, '');
$aQnavigation->maskNormal(0, '<div><a target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskNormalSub(0, '<div><a target="_self" href="{link}">{name1}</a></div>{sub}');
$aQnavigation->maskSelected(0, '<div><a target="_self" href="{link}">›{name1}</a></div>');
$aQnavigation->maskSelectedSub(0, '<div><a target="_self" href="{link}">›{name1}</a></div>{sub}');
-
- Beiträge: 59
- Registriert: Mi 18. Apr 2007, 18:43
- Kontaktdaten:
Hallo MyAccount,
danke für die rasche Antwort. Wenn ich es richtig verstehe, sollte das ganze also so aussehen:
Ist das korrekt? Falls ja, wie steure ich jetzt das Aussehen korrekt per CSS?
danke für die rasche Antwort. Wenn ich es richtig verstehe, sollte das ganze also so aussehen:
Code: Alles auswählen
$aQnavigation->between(1, '');
$aQnavigation->maskNormal(1, '<li><a target="_self" href="{link}">{name1}</a></li>');
$aQnavigation->maskSelected(1, '<li><a target="_self" href="{link}">›{name1}</a></li>');
$aQnavigation->between(0, '');
$aQnavigation->maskNormal(0, '<li><a target="_self" href="{link}">{name1}</a></li>');
$aQnavigation->maskNormalSub(0, '<li><a target="_self" href="{link}">{name1}</a></li>{sub}');
$aQnavigation->maskSelected(0, '<li><a target="_self" href="{link}">›{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li><a target="_self" href="{link}">›{name1}</a></li>{sub}');
Ne, leider nicht korrekt. Du musst Dir mal ansehen, wie Listen aufgebaut sind. Bei selfhtml z.B.
In etwa so, aber ohne Garantie:
Dann kannst Du den Rest mit class="" und CSS machen.
In etwa so, aber ohne Garantie:
Code: Alles auswählen
$aQnavigation->between(2, '');
$aQnavigation->maskNormal(2, '<li class="closedfolder"><a href="{link}">{name1}</a></li>' . "\n");
$aQnavigation->maskNormalSub(2, '<li class="openedfolder"><a href="{link}">{name1}</a><ul>{sub}</ul></li>' . "\n");
$aQnavigation->maskSelected(2, '<li class="openedfolder active"><a href="{link}">{name1}</a></li>' . "\n");
$aQnavigation->maskSelectedSub(2, '<li class="openedfolder"><a href="{link}">{name1}</a><ul>{sub}</ul></li>' . "\n");
$aQnavigation->between(1, '');
$aQnavigation->maskNormal(1, '<li class="closedfolder"><a href="{link}">{name1}</a></li>' . "\n");
$aQnavigation->maskNormalSub(1, '<li class="openedfolder"><a href="{link}">{name1}</a><ul>{sub}</ul></li>' . "\n");
$aQnavigation->maskSelected(1, '<li class="openedfolder"><a href="{link}">{name1}</a></li>' . "\n");
$aQnavigation->maskSelectedSub(1, '<li class="openedfolder"><a href="{link}">{name1}</a><ul>{sub}</ul></li>' . "\n");
$aQnavigation->setSub(1, $aQnavigation->showNavigation(2));
Code: Alles auswählen
ul li {blalbla}
ul li li {blablab}
Hallo miteinander, hallo Andreas.
Ich bin neu hier und habe gleich ein Problemchen: bei dieser Zweifelsohne genialen Navigation bekomme ich leider nur eine Ausgabe bis zur Ebene 4. Danach tut sich leider nichts mehr, wird einfach nicht angezeigt. Hier mal der Modulcode:
Vielleich kann mir da jemand unter die Arme greifen? ich danke Euch schonmal allen ganz herzlich.
Lieber Gruß
KAT
Ich bin neu hier und habe gleich ein Problemchen: bei dieser Zweifelsohne genialen Navigation bekomme ich leider nur eine Ausgabe bis zur Ebene 4. Danach tut sich leider nichts mehr, wird einfach nicht angezeigt. Hier mal der Modulcode:
Code: Alles auswählen
<?php
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_mainnavigation'));
/*
* Ausgabe 6. Navigationsebene
*/
$aQnavigation->between(5, '');
$aQnavigation->maskNormal(5, '<div class="navi"><a class="navileft_passive" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(5, '<div class="navi"><a class="navileft_active" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelectedSub(5, '<div class="navi"><a class="navileft_open" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
/*
* Ausgabe 5. Navigationsebene
*/
$aQnavigation->between(4, '');
$aQnavigation->maskNormal(4, '<div class="navi"><a class="navileft_passive" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(4, '<div class="navi"><a class="navileft_active" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelectedSub(4, '<div class="navi"><a class="navileft_open" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>{sub}');
$aQnavigation->setSub(4, $aQnavigation->showNavigation(5));
/*
* Ausgabe 4. Navigationsebene
*/
$aQnavigation->between(3, '');
$aQnavigation->maskNormal(3, '<div class="navi"><a class="navileft_passive" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(3, '<div class="navi"><a class="navileft_active" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelectedSub(3, '<div class="navi"><a class="navileft_open" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>{sub}');
$aQnavigation->setSub(3, $aQnavigation->showNavigation(4));
/*
* Ausgabe 3. Navigationsebene
*/
$aQnavigation->between(2, '');
$aQnavigation->maskNormal(2, '<div class="navi"><a class="navileft_passive" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(2, '<div class="navi"><a class="navileft_active" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelectedSub(2, '<div class="navi"><a class="navileft_open" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>{sub}');
$aQnavigation->setSub(2, $aQnavigation->showNavigation(3));
/*
* Ausgabe 2. Navigationsebene
*/
$aQnavigation->between(1, '');
$aQnavigation->maskNormal(1, '<div class="navi"><a class="navileft_passive" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(1, '<div class="navi"><a class="navileft_active" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelectedSub(1, '<div class="navi"><a class="navileft_open" style="padding-left:10px;" target="_self" href="{link}">{name1}</a></div>{sub}');
$aQnavigation->setSub(1, $aQnavigation->showNavigation(2));
echo $aQnavigation->showNavigation(1);
?>
Lieber Gruß
KAT
Gelöst: Anzeige von mehr als x Nvigationsebenen
Hallo nochmal.
Ich habe Hilfe von jemandem erhalten, der das Problem scheinbar auch hatte. - Und es funktioniert: alle Ebenen werden jetzt angezeigt.
Die Lösung stammt wohl von Kummer selbst, wurde hier aber nicht gepostet.
Somit will ich das mal nachholen, das Problem scheinen ja mehrere Leute zu haben. (Admins: falls nicht gewünscht, bitte löschen)
Mein Modulcode von oben war korrekt, die atelierq.navigation.class.inc.php musste folgendermaßen aussehen:
Lieber Gruß an alle und danke an Pepe G. für die Hilfe.
KAT
Ich habe Hilfe von jemandem erhalten, der das Problem scheinbar auch hatte. - Und es funktioniert: alle Ebenen werden jetzt angezeigt.
Die Lösung stammt wohl von Kummer selbst, wurde hier aber nicht gepostet.
Somit will ich das mal nachholen, das Problem scheinen ja mehrere Leute zu haben. (Admins: falls nicht gewünscht, bitte löschen)
Mein Modulcode von oben war korrekt, die atelierq.navigation.class.inc.php musste folgendermaßen aussehen:
Code: Alles auswählen
<?php
/**
* navigationUniversell (aQnavigation)
* @version $Id: atelierq.navigation.class.inc.php 617 2008-03-07 15:13:46Z atelierq $
* @author Andreas Kummer
* @copyright Copyright © 2007 atelierQ
*/
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 $this->after[$type];
} else {
return false;
}
}
if ($next == -1) {
$returnValue .= $this->before[$type];
$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 = '';
}
if ($name1 == "Tabelle" || $name1 == "Spiepläne" )
$link .= "\" target=\"_blank";
#$name1 = $name1."\" target=\"_blank";
$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.
*/
}
return $returnValue . $this->showNavigation($type, $this->navigationTree[$parentId][$next]['postid']);
}
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);
}
}
/**
* externalContent (atqExternalContent)
*
* @version 1.0.0
* @author Andreas Kummer
* @copyright Copyright © 2007, atelierQ kummer
*/
class atqExternalContent {
function atqExternalContent($content, & $db) {
global $lang;
if (!is_object($db)) {
$this->db = new DB_Contenido();
} else {
$this->db = $db;
}
$this->content = $content;
$this->lang = $lang;
}
function getHTML($index, $idart) {
global $cfg;
$this->db->query("" .
"SELECT c.value FROM {$cfg['tab']['art_lang']} AS b " .
"LEFT JOIN {$cfg['tab']['content']} AS c ON b.idartlang = c.idartlang " .
"LEFT JOIN {$cfg['tab']['type']} AS d ON c.idtype = d.idtype " .
"WHERE " .
" b.idart = {$idart} " .
" AND b.idlang = {$this->lang} " .
" AND d.type = 'CMS_HTML' " .
" AND c.typeid = $index " .
"");
if ($this->db->next_record()) {
return urldecode($this->db->f('value'));
}
return '';
}
function getOutput() {
$pattern = "|<a[\w\s]*href\s*=\s*\"[^\"]*idart=([0-9]*)[^>]*>\s*foreignContent\s*([0-9]*)\s*</a>|i";
preg_match_all($pattern, $this->content, $match, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($match[0]); $i++) {
$idart = (int) $match[1][$i];
$index = (int) $match[2][$i];
if ($match[2][$i] == '') {
$index = 1;
}
if ($idart > 0 && $index > 0) {
$this->content = str_replace($match[0][$i], $this->getHTML($index, $idart), $this->content);
}
}
return $this->content;
}
}
?>
KAT
Hallo Community,
super tolles Modul!
Ich habe eine Frage.
Wie kann ich das erste und das letzte Element herausfinden?
Mein Menu hat am Anfang und am Ende runde Ecken und somit brauche ich da jeweils andere CSS Klassen für aktiv und inaktiv um ein anderes BG Bild zu laden wie für die anderen Elemente.
Wäre klasse wenn mir da jemand helfen könnte.
Vielen Dank!
super tolles Modul!
Ich habe eine Frage.
Wie kann ich das erste und das letzte Element herausfinden?
Mein Menu hat am Anfang und am Ende runde Ecken und somit brauche ich da jeweils andere CSS Klassen für aktiv und inaktiv um ein anderes BG Bild zu laden wie für die anderen Elemente.
Wäre klasse wenn mir da jemand helfen könnte.
Vielen Dank!
gelöst. (hoffe ich mindestens...)
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Keine Submenüs
Hallo,
ich hab gerade das Modul ausprobiert, weil ich eine Listennavigation mit
Dropdown-Menüs erstellen will.
Nun funktioniert die Anzeige der Hauptpunkte wunderbar, aber leider werden die Submenüs nicht eingebunden.
Der Quelltext zeigt nur
<div id="navi">
<ul id="main_nav">
<li><a class="active" href="front_content.php?idcat=2">Unternehmen</a</li>
<li><a href="front_content.php?idcat=44">Aktuelles</a></li>
<li><a href="front_content.php?idcat=3">QS-Politik</a></li>
<li><a href="front_content.php?idcat=4">Wärmebehandlung</a></li>
<li><a href="front_content.php?idcat=5">Werkstoffprüfung</a></li>
<li><a href="front_content.php?idcat=6">Zusatzangebote</a></li>
</ul>
</div>
Mein Outputcode sieht so aus:
<?php
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_hauptnavigation'));
// Ausgabe 1. Stufe
$aQnavigation->before( 1, '\n<ul id="sub_nav">\n');
$aQnavigation->after( 1, '\n</ul>\n');
$aQnavigation->between( 1, '');
$aQnavigation->maskNormal( 1, '\n<li><a href="{link}">{name1}</a></li>' );
$aQnavigation->maskSelectedSub(1, '\n<li class="more open"><a href="{link}" class="active">{name1}</a>{sub}</li>' );
$aQnavigation->before(0,'<ul id="main_nav">');
$aQnavigation->between(0, '');
$aQnavigation->after(0,'</ul>');
$aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskNormalSub(0, '<li><a href="{link}" class="sub">{name1}</a></li>');
$aQnavigation->maskSelected(0, '<li><a href="{link}" class="activ">{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li><a href="{link}" class="activ">{name1}</a></li>');
/*
* hier erfolgt die ausgabe an den browser
*/
$aQnavigation->setSub(0, $aQnavigation->showNavigation(1));
echo $aQnavigation->showNavigation(0);
?>
Ich hab in der Datenbank nachgeschaut, und die Oberpunkte haben idcat 1 und die Submenüs idcat2.
Im HTML-Code steht:
<div id="navi">
<container id="1" name="Navigation" types="Navigation" mode="optional" default="Hauptnavigation">Hauptnavigation</container>
</div>
Und dem Mandanten habe ich die Hauptnavigation mit idcat 1 zugewiesen.
Warum findet er die Untermenüs nicht?
Ich hoffe auf Hilfe.
Ninerian
ich hab gerade das Modul ausprobiert, weil ich eine Listennavigation mit
Dropdown-Menüs erstellen will.
Nun funktioniert die Anzeige der Hauptpunkte wunderbar, aber leider werden die Submenüs nicht eingebunden.
Der Quelltext zeigt nur
<div id="navi">
<ul id="main_nav">
<li><a class="active" href="front_content.php?idcat=2">Unternehmen</a</li>
<li><a href="front_content.php?idcat=44">Aktuelles</a></li>
<li><a href="front_content.php?idcat=3">QS-Politik</a></li>
<li><a href="front_content.php?idcat=4">Wärmebehandlung</a></li>
<li><a href="front_content.php?idcat=5">Werkstoffprüfung</a></li>
<li><a href="front_content.php?idcat=6">Zusatzangebote</a></li>
</ul>
</div>
Mein Outputcode sieht so aus:
<?php
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_hauptnavigation'));
// Ausgabe 1. Stufe
$aQnavigation->before( 1, '\n<ul id="sub_nav">\n');
$aQnavigation->after( 1, '\n</ul>\n');
$aQnavigation->between( 1, '');
$aQnavigation->maskNormal( 1, '\n<li><a href="{link}">{name1}</a></li>' );
$aQnavigation->maskSelectedSub(1, '\n<li class="more open"><a href="{link}" class="active">{name1}</a>{sub}</li>' );
$aQnavigation->before(0,'<ul id="main_nav">');
$aQnavigation->between(0, '');
$aQnavigation->after(0,'</ul>');
$aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskNormalSub(0, '<li><a href="{link}" class="sub">{name1}</a></li>');
$aQnavigation->maskSelected(0, '<li><a href="{link}" class="activ">{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li><a href="{link}" class="activ">{name1}</a></li>');
/*
* hier erfolgt die ausgabe an den browser
*/
$aQnavigation->setSub(0, $aQnavigation->showNavigation(1));
echo $aQnavigation->showNavigation(0);
?>
Ich hab in der Datenbank nachgeschaut, und die Oberpunkte haben idcat 1 und die Submenüs idcat2.
Im HTML-Code steht:
<div id="navi">
<container id="1" name="Navigation" types="Navigation" mode="optional" default="Hauptnavigation">Hauptnavigation</container>
</div>
Und dem Mandanten habe ich die Hauptnavigation mit idcat 1 zugewiesen.
Warum findet er die Untermenüs nicht?
Ich hoffe auf Hilfe.
Ninerian
dieses modul ist auch nicht für dropdowns geschaffen worden. bei dropdowns ist der ansatz komplett anders. dazu kannst du z.b. eine sitemap verwenden.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Aber ich kann doch mit dem Modul die Links als Liste ausgeben lassen oder?
Dementsprechende Beispiele sind in diesem Thread ja schon genannt worden.
Ich will ja nur das, die Ausgabe so aussieht:
<ul>
<li>menupunkt1</li>
<ul>
<li>untermenupunkt1</li>
<li>untermenupunkt2</li>
<li>untermenupunkt3</li>
<li>untermenupunkt4</li>
</ul>
<li>menupunkt2</li>
<li>menupunkt3</li>
<li>menupunkt4</li>
</ul>
Alles andere kann ich ja dann mit dem CSS lösen.
Ich kann mir nicht vorstellen, das sowas nicht gehen soll.
Auf jedenfall, schreibt der bei meinem Code nicht die Untermenüs als html-code raus. Also was habe ich vergessen?
Dementsprechende Beispiele sind in diesem Thread ja schon genannt worden.
Ich will ja nur das, die Ausgabe so aussieht:
<ul>
<li>menupunkt1</li>
<ul>
<li>untermenupunkt1</li>
<li>untermenupunkt2</li>
<li>untermenupunkt3</li>
<li>untermenupunkt4</li>
</ul>
<li>menupunkt2</li>
<li>menupunkt3</li>
<li>menupunkt4</li>
</ul>
Alles andere kann ich ja dann mit dem CSS lösen.
Ich kann mir nicht vorstellen, das sowas nicht gehen soll.
Auf jedenfall, schreibt der bei meinem Code nicht die Untermenüs als html-code raus. Also was habe ich vergessen?