Neues Modul: vpNavigation

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von xmurrix » Do 6. Dez 2012, 12:09

Nakoda hat geschrieben:...ich wurde gerne die Erste Menüebene mit Grafiken der jeweiligen Kategorien versehen.
Ist das machbar und wenn ja, wie?...
Hallo Nakoda,

kenne das Modul auch nicht, aber probier mal folgende Version:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :       vpNavigation 0.2
* Author      :     Ingo van Peeren
* Copyright   :     Ingo van Peeren (ingo@van-peeren.de)
* Created     :     30-03-2005
* Modified    :     16-07-2005
************************************************/


#Includes
cInclude("frontend", "includes/functions.navigation.php");
cInclude("classes", "class.frontend.permissions.php");
cInclude("classes", "class.frontend.groups.php");
cInclude("classes", "class.frontend.users.php");


$hauptkategorie = "CMS_VALUE[0]";

$navitems = array();

function nav_feld ($cat) {
global $client, $lang, $cfg, $idcat;

        if (!is_object($db)) {
            $db = new DB_Contenido;
        }
        $sql = "SELECT
                     A.idcat,
                     B.parentid,
                     C.name,
                     C.public,
                     C.idcatlang
                   FROM
                     ".$cfg["tab"]["cat_tree"]." AS A,
                     ".$cfg["tab"]["cat"]." AS B,
                     ".$cfg["tab"]["cat_lang"]." AS C
                   WHERE
                     A.idcat     = B.idcat   AND
                     B.idcat     = C.idcat   AND
                     B.idclient  = '$client' AND
                     C.idlang    = '$lang'   AND
                     C.visible   = '1'       AND
                     B.parentid  = '$cat'
                  ORDER BY
                     A.idtree";

         $db->query($sql);

         while ( $db->next_record() ) {
                     $visible = checkCatPermission($db->f("idcatlang"),$db->f("public"));
      if ($visible) {
            $aktiv = "";
            $sub_feld = nav_feld($db->f("idcat"));
            if ($db->f("idcat") == $idcat) $aktiv = "active";
            elseif ($sub_feld["activepath"]) $aktiv = "activepath";
            $nav_feld[] = array("idcat"      => $db->f("idcat"),
                                "name"       => $db->f("name"),
                                "active"     => $aktiv,
                                "sub"        => $sub_feld);
            if ($aktiv != "") $activepath = $aktiv;

         }
         }
         $rv = array("feld"          => $nav_feld,
                     "activepath"    => $activepath);

         return $rv;

}

function liste ($array, $indent = "  ", $level = 1)
{

global $first;

      $pos = 1;
        
       if (is_array($array["feld"])) {
         if ($first) {
           echo $indent . "<ul id=\"nav\">\n";
           $first = 0;
         }
         else echo $indent . "<ul>\n";
         foreach ($array["feld"] as $menupunkt) {
           if (1 == $level) {
             $cssclass = "navitem_" . $level . "_" . $pos++;
           } else {
             $cssclass = "";
           }

           if ($menupunkt["active"] == "active") echo $indent . $indent . "<li id=\"active " . $cssclass . "\">\n";
           elseif ($menupunkt["active"] == "activepath") echo $indent . $indent . "<li class=\"activepath " . $cssclass . "\">\n";
           else echo $indent . $indent . "<li class=\"" . $cssclass . "\">\n";
           if (is_array($menupunkt["sub"]["feld"])) {
             echo $indent . $indent . $indent . "<a class=\"daddy\" href=\"front_content.php?idcat=" . $menupunkt["idcat"] . "\">" . $menupunkt["name"] . "</a>\n";
             liste($menupunkt["sub"], $indent."    ", ++$level);
           }
           else echo $indent . $indent . $indent . "<a href=\"front_content.php?idcat=" . $menupunkt["idcat"] . "\">" . $menupunkt["name"] . "</a>\n";
           echo $indent . $indent . "</li>\n";

         }
         echo $indent . "</ul>\n";
       }
}

/* Create Navigation Array */
$navitems = nav_feld($hauptkategorie);

$first = 1;

liste($navitems, "  ", 1);

?>
Diese gibt die erste Ebene der Listenelemente in der Navigation immer mit einer CSS-Klasse aus, mit folgendem Format:

Code: Alles auswählen

// {level} = Die Navigationsebene, is 1 für die erste Ebene
// {position} = Die POosition der Kategorie in der Navigationsebene
navitem_{level}_{position}
Dann kannst du per CSS die Navigation nach belieben anpassen, z. B.:

Code: Alles auswählen

#nav .navitem_1_1 {background: transparent url('pfad/zum/bild/fuer/erste/kategorie');}
#nav .navitem_1_2 {background: transparent url('pfad/zum/bild/fuer/zweite/kategorie');}
Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Nakoda
Beiträge: 219
Registriert: Fr 2. Jul 2004, 23:50
Wohnort: Hamburg
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von Nakoda » Do 6. Dez 2012, 14:42

Moin xmurrix,

danke für Deine Antwort.
Habe also den output ausgetauscht und in das Stylesheet für die Navigation habe ich folgendes geschrieben:

Code: Alles auswählen

#vpnavigation .navitem_1_1 {background: transparent url('../upload/Images_Header/1.jpg');}
Das hat mich aber leider nicht zum Ziel geführt.
Oder hab ich da was falsch verstanden?
Gruß aus HH

Armin
http://sig.sysprofile.de/quicksys/sysp-102592.png
Contenido 4.8.18

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von xmurrix » Do 6. Dez 2012, 15:45

Nakoda hat geschrieben:...

Code: Alles auswählen

#vpnavigation .navitem_1_1 {background: transparent url('../upload/Images_Header/1.jpg');}
Das hat mich aber leider nicht zum Ziel geführt...
Wenn die Navigation die ID #vpnavigation hat und innerhalb der Navigation die Listenelemente die rictige CSS-Klasse (z. B. .navitem_1_1) haben, und der Pfad zum Hintergrundbild korrekt ist, sollte es funktionieren. Allerdings kann es sein, dass eine andere Formatangabe dies überschreibt, oder der anker, also der a-Tag, in der Liste den ganzen Bereich für sich beansprucht, so dass es die Liste "überdeckt".

Die genaue Formatierung hängt immer ganz von den Anforderungen ab, und von deiner jetzigen CSS-Struktur. Gehe davon aus, dass das mit etwas Anpassungen an CSS zu lösen ist...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Neues Modul: vpNavigation

Beitrag von Spider IT » Do 6. Dez 2012, 17:32

Hallo Armin,

schick mir die Zugangsdaten, dann schaue ich mal.
Ach ja, wie immer per PN ;)

Gruß
René

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von xmurrix » Fr 7. Dez 2012, 15:53

Hallo zusammen,

habt ihr das Problem nun lösen können oder nicht?

Falls ja, dann würden sich bestimmt andere Forenuser über die Beschreibung der Lösung freuen. Denkt daran, da Forum hier davon lebt davon, dass User sich gegenseitig helfen...

Danke und ein schönes Wochenende.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Neues Modul: vpNavigation

Beitrag von Spider IT » Fr 7. Dez 2012, 18:02

Also, Murat, das weiß ich auch.
Und bisher habe ich immer, wenn ein im Forum angesprochenes Problem außerhalb gelöst wurde, dies auch im Forum bekannt gegeben (oder bekannt geben lassen).
Und da das auch bereits bei Armin der Fall war (den hab ich schon öfter geholfen), und du das mit Sicherheit auch mitgekriegt hast, verstehe ich nun wirklich nicht, warum du jetzt nach gerade mal 21,5 Stunden einen derartigen Beitrag posten musst.

Gruß
René

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von xmurrix » Fr 7. Dez 2012, 18:15

Spider IT hat geschrieben:...Und da das auch bereits bei Armin der Fall war (den hab ich schon öfter geholfen), und du das mit Sicherheit auch mitgekriegt hast, verstehe ich nun wirklich nicht, warum du jetzt nach gerade mal 21,5 Stunden einen derartigen Beitrag posten musst...
Bitte nicht persönlich nehmen, habe beide damit gemeint und dachte mir halt, dass der Fall innerhalb eines Tages gelöst sein sollte. Nakoda hat hier um Hilfe gefragt, ich habe ihm eine fertige Lösung angeboten und du ihm die Option, dass er sich bei dir per PM melden kann, das sollte doch nicht so zeitintensiv sein.

Egal, wie auch immer, bitte die Lösung einfach hier posten, wenn es soweit ist. Danke!
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Neues Modul: vpNavigation

Beitrag von Spider IT » Mo 10. Dez 2012, 11:25

Problem gelöst :)
Ich habe im Modul folgendes geändert:
  • In Zeile 72 habe ich id=\"active\" geändert in class=\"active\"
  • In Zeile 72-74 habe ich <li geändert in <li id=\"Cat" . str_replace(' ', '_', capiStrReplaceDiacritics($menupunkt["name"])) . "\"
Im Stylesheet habe ich dann die Angabe #vpnavigation li#active in #vpnavigation li.active geändert (wegen der Änderung von id= zu class= im Modul).
Hier (im Stylesheet) kann man nun zusätzliche Angaben machen (wie #vpnavigation #CatHome, IDs findet man im Quelltext) und darin z.B. den Text per padding versetzen und links ein Hintergrundbild einfügen:

Code: Alles auswählen

#vpnavigation #CatHome {
    padding: 2px 0px 2px 20px;
    background-image: url('images/Navigation/Home.png');
    background-position: left top; /* oder Koordinaten */
    background-repeat: no-repeat;
}
Jedes li erhält jetzt eine ID, also ist die individuelle Formatierung nicht auf die oberste Ebene begrenzt ;)

Gruß
René

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von xmurrix » Mo 10. Dez 2012, 23:56

Das hast du super gelöst René, danke für das Posten der Lösung.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Tonmischer
Beiträge: 9
Registriert: So 29. Jan 2012, 16:23
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von Tonmischer » Sa 26. Jan 2013, 13:19

Erstmal super Modul! Danke!

Ich habe ein Problem mit dem Modul:

Die Navigation wird nicht horizontal dargestellt, sondern vertikal untereinander.


Wo kann der Fehler liegen?

Kann mir da jemand helfen?


Danke im Voraus!


Gruß

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Neues Modul: vpNavigation

Beitrag von Spider IT » So 27. Jan 2013, 10:54

Moin,

klar, mit CSS formatieren.
Wichtig ist da die Angabe float: left; bei den lis.
Und nach dem Berech musst du dann ein clear: left; oder clear: both: machen (bei CSS3 geht das sogar per ul:after { clear: left; })

Gruß
René

dops_ab
Beiträge: 11
Registriert: Mo 12. Nov 2007, 09:52
Wohnort: Aschaffenburg
Kontaktdaten:

Re: vpNavigation mit nur einem Kategorie-Baum

Beitrag von dops_ab » Mo 22. Sep 2014, 17:54

robert087 hat geschrieben:Habe folgendes Problem mit dem vpnavigations Modul:

Als Hauptmenüpunkte werden mir alle Bäume angegeben

Hauptnavigation
Subnavigation
Systemseiten
Loginnavigation

aber ich will natürlich nür die unterpunkte von dem Baum Hauptnavigation ausgegeben bekommen.

Kann mir da irgentwer helfen?
Ich habe das gleiche Problem. Ich bekomme die Hauptnavigation, die Metanavigation und die Systemseiten-Navigation eingeblendet und möchte aber nur die Hauptnavigation über das Modul vpNavigation anzeigen lassen. Wer kann mir sagen wie ich das mache? Über eine schnelle Hilfe würde ich mich sehr freuen.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von homtata » Di 23. Sep 2014, 06:57

Die Lösung scheint Seite 4 weiter unten zu stehen . Bitte solche Beiträge komplett gehen oder genauer beschreiben, welche Einstellungen wo vorgenommen wurden und was dann trotzdem nicht klappt. LG

dops_ab
Beiträge: 11
Registriert: Mo 12. Nov 2007, 09:52
Wohnort: Aschaffenburg
Kontaktdaten:

Re: Neues Modul: vpNavigation

Beitrag von dops_ab » Di 23. Sep 2014, 07:39

Ich habe es jetzt selbst herausgefunden. Man muss im Grunde zuerst das Modul installieren. Danach baut man den Container in das Layout ein und legt ein Template an. Im Template kann man auch schon die Vorkonfiguration nutzen (obwohl ich nicht weiß ob das so viel bringt ;o)

Der wichtigste Punkt - also die Auswahl des Kategorie-Baumes kommt dann im Anschluss über den Punkt "Contenido / Kategorien". Dort muss man auf das Stifte-Symbol der jeweiligen Kategorie klicken um an den Befehl "Kategorie konfigurieren" zu kommen.

Wenn die Kategorie mit dem Template (in der vpNavigation enthalten ist) verbunden ist, dann kann man dort den Navigationsbaum auswählen. Also z.B. Hauptnavigation, wenn man den Beispielmandanten mit -inhalten installiert hat. Bei mir funktioniert es nun einwandfrei und ich kann mich auf die CSS-Anpassung konzentrieren.

Gesperrt