Antworten auf deine Fragen:
Neues Thema erstellen

Eigenes Menü für eigenes Template - Wie?

MainAngler

Excel (SVERWEIS...)

Habe schon Bücher über Joomla, aber irgendwie wird das wohl nicht wirklich erklärt was ich wissen möchte.:rolleyes:

Mit Joomla 2.5 hat sich vll. auch einiges getan.:)

Es geht um folgendes:
Ich habe ein Menü, welches ich ganz in xHTML und CSS gebaut habe.
Nun muss ich ja irgendwelche Joomla-Core-Dateien mit in meinen eigenen Template-Ordner, in welches mein Template liegt - in einen Unterordner - kopieren und darin dann wohl das Menü anpassen bzw. den Code einbinden so wie ich ihn haben möchte.
Somit nutze ich einen Override.;)

Soweit mir klar!:D

2 Probleme:
1. Welche Ordner und Dateien benötige ich denn jetzt für das Menü-Override?:uhm:
2. Mir erschließt sich nicht wie ich das eigens erstellte Menü dann für Joomla bekannt mache, so dass ich in Joomla erstellte Beiträge mit dem Menü verlinken kann.:uhm:

Bin am Verzweifeln und brauche Hilfe von Profis!

PS: Ich nutze 2.5.x (aktuellste Version). Zudem habe ich es nur lokal (XAMPP) installiert.
 

mapegele

Täglich anwesend

AW: Eigenes Menü für eigenes Template - Wie?

Da Dir der Override ja klar zu seien scheint, gehe ich da nicht weiter drauf ein.
Die entsprechenden Dateien findest Du im Root-Verzeichnis -> modules -> mod_menu.

Evtl. noch die language-Dateien anpassen.

So solltest Du weiterkommen. Vielleicht hat ja noch jemand eine Idee?

Verpixelte Grüße
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Mir ist klar, dass ich mit einem Override arbeiten muss.:)
Dennoch sind die 2 Fragen offen!

Zu Frage Nr.1 hast du ja schon was geschrieben, nur wie muss das in meinem Template-Ordner dann genau aussehen?:uhm:
Also welche Ordner und welche Dateien sind von Nöten?
Ordnerstruktur?!

Frage Nr.2 bleibt leider komplett offen.:rolleyes:
 

mapegele

Täglich anwesend

AW: Eigenes Menü für eigenes Template - Wie?

Ok, da ich nicht genau weiß, wie der Code Deines Menu aussieht hier der Tipp für eine Mögliche Lösung.

In Deinem Template legst Du einen Ordner html an. In diesem Ordner legst Du einen Ordner mod_menu an. Und in diesen Ordner kopierst Du die default.php aus dem mod_menu-Ordner des Root-Verzeichnisses.
Diese default.php passt Du Dir dann mit Deinem Menu-Code an, so das es Dein Menu wird. Mehr ist es eigentlich nicht. Evtl. mußt Du noch weitere mod_menu-Dateien kopieren und anpassen. Oder sogar eine eigene Datei schreiben, je nachdem, wie Dein Menu aussieht. Dann brauchst Du aber auch fundierte PHP-Kenntnisse.
Wenn Du noch tiefer in diese Materie eintauchen möchtest, kann ich Dir die Trainings von Video2Brain empfehlen.
Ich hoffe, Du kommst damit einigermaßen klar.

Verpixelte Grüße
 
Zuletzt bearbeitet:

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Danke, das hilft mir doch schon mal bei Frage Nr.1 weiter.:)
Eine default.php liegt aber allerhöchstens in modules\mod_menu\tmpl, meinst du diese Datei?

Frage Nr.2 bleibt aber noch offen!
Wie bekomme ich in Joomla erstellte Beiträge dann mit meinem persönlichen Menü verlinkt?:uhm:

V2B weiß ich ;), die haben wirklich gute Sachen, hilft mir dabei aber auch irgendwie nicht.:(
Das wird wohl nicht behandelt.:rolleyes:
 
Zuletzt bearbeitet:

mapegele

Täglich anwesend

AW: Eigenes Menü für eigenes Template - Wie?

Stimmt, da hab ich einen Step vergessen. :) Natürlich liegt die Datei im Ordner tmpl.

Die Sache bedarf glaube ich eines eigenen Tutorials, da es doch etwas umfangreicher ist, das im einzelnen zu erklären. Dafür ist ein Thread eher nicht geeignet.

Noch zu Frage 2:
Du mußt eigentlich nur Dein Menü in Joomla einbinden, so das Du es als Position usw. im Backend ansteuern kannst. Das machst Du durch die Anpassung der entsprechenden Dateien aus dem Ordner mod_menu.
Du mußt ja die Dateien nur entsprechend anpassen, das heißt natürlich auch alle Dateien, die damit in Verbindung stehen wie z.B. die css-Dateien usw. Wenn Du alles richtig angepasst hast, sollte Dein Menü auch funktionieren und Du kannst im Backend Deine Beiträge wie gewohnt Deinem Menü zuordnen. Da ändert sich eigentlich nichts dran.

Versuch doch mal folgendes:

Nimm Dir ein oder zwei freie Templates, die ein ähnlich angelegtes Menü haben, wie Deines.
Installiere die auf Deinem local und untersuche die Menüstruktur ( also welche Dateien haben die in ihrer html->mod_menu-> im Template geändert, damit das Menü so angezeigt wird ) und wie die Dateien dort verändert wurden. Vielleicht kommst Du dann auf eine Idee, wie Du Dein Menü in Dein Template einbinden kannst.

Ich glaube Daniel Koch wäre da der richtige Mann für ein ausfühliches Tutorial. :)

Auch wenn ich Dir jetzt keine ausführliche Anleitung geben konnte, hoffe ich, das Du ein Stück weiterkommst damit.

Verpixelte Grüße
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

So wie es aussieht wurde wenigstens mein Anliegen richtig erkannt.;)

Da jetzt viele freie Templates zu vergleichen... da habe ich für mich nicht die Zeit dazu :(, da dann auch noch genau die Unterschiede rauszupicken.
Zudem müsste ich erstmal ein Template finden was ggf. die selbe Menüstruktur aufweist.

Tja, so ein Tutorial dazu wäre natürlich nicht verkehrt.:D
Vll. könnte ja jemand eines schreiben und dazu ein CSS-Menü von Stu Nicholls nutzen?:uhm:
Dann wird das bestimmt eher verstanden.
 

mapegele

Täglich anwesend

AW: Eigenes Menü für eigenes Template - Wie?

Hi, ich nochmal ;-)

Nach Deinem Hinweis auf Stu hab ich Tante G mal befragt und folgenden Link gefunden:



Vielleicht kommst Du ja damit noch ein Stück weiter.

Verpixelte Grüße
 

tr4ze

Mod | Forum

Teammitglied
PSD Beta Team
AW: Eigenes Menü für eigenes Template - Wie?

An denn Overrides hat sich seit der version 1.5 eigentlich nix geändert.

Wie die Struktur aussehen muss steht sogar in der offiziellen Doc.


Sobald du denn overide eingerichtet hast wird joomla diesen als default view verwenden.
Wenn du jetzt gerade keine Ahnung hast wovon ich hier rede, frag mal die die Tante G nach dem MVC-Entwurfsmuster(mvc design pattern). ;)
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Wenn du dich damit auskennst und mir das an Hand eines CSS-Menüs von Stu Nicholls zeigen würdest, wie ich das als eigenes Menü dann in Joomla samt Override nutzen kann, dann würde ich es ggf. auch verstehen, denn dann könnte ich mir den Code ja einmal näher ansehen.;)

Ich hab noch das Problem, dass ich nicht kapiere, wenn ich ein CSS-Menü von Stu nutzen möchte und den Menü-Override nutze, wie ich Joomla dann klar machen kann das es den Beitrag X mit dem Menüpunkt XY verlinken soll.:uhm:
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Ich möchte es noch einmal anders formulieren in der Hoffung, dass mir dann jemand helfen kann!:)

Wenn ich das Menü per Override so verändere, dass ich z.B. ein CSS-Menü von Stu Nicholls nehme, wie kann ich dann im Backend von Joomla den einzelnen Menüpunkten die einzelnen Beiträge zuweisen?:uhm:

Woher soll bitte Joomla wissen welchen Beitrag es mit dem Menüpunkt XY verlinken soll, wenn ich das CSS-Menü direkt in den Override einfüge? :uhm:
 

tr4ze

Mod | Forum

Teammitglied
PSD Beta Team
AW: Eigenes Menü für eigenes Template - Wie?

Hmmmm.... ok um welches Menü vom Stu handelt es sich denn genau? :)
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Ist nur ein Beispiel, es könnte sich um jedes CSS-Menü von Stu etc. handeln.
Mir geht es nur darum zu verstehen wie genau ich das umsetze was ich möchte.:)
 

tr4ze

Mod | Forum

Teammitglied
PSD Beta Team
AW: Eigenes Menü für eigenes Template - Wie?

Ok, dann versuche ich mal zu erklären.

Also.... Joomla trennt seit der Version 1.5 die Programmlogik von der Ausgabe.
Hierzu wird das MVC Entwurfsmuster genutzt, wobei MVC für Model,View und Controller steht.

Wenn nun in Joomla ein Modul oder eine Komponente aufgerufen wird passiert folgendes.
Joomla ruft als erstes den Controller auf, dieser anlaysiert die an ihm übergebenen Tasks(URL oder GET/POST usw.).
Diesen Task gibt der Contoller an das Model weiter, welches denn Task auswertet und die relevanten Daten an denn Controller zurückgibt.
Als letztes ruft der Controller denn View auf, und übergibt die gesammelten Daten, woraus dann die Ausgabe generiert wird.

Mit einem Override kann man nun an diesem letzten Punkt eingreifen und die Ausgabe der Daten anpassen ohne dabei die Programmlogik(Controller/Model) zu verändern.

Ok soweit die allgm. Theorie, jetzt zu deinem speziellem Problem.
Wir wissen nun das wir nur denn View überschreiben können, aber wo finden wir denn?
Menüs im Frontend werden vom Modul mod_menu generiert.
Wenn du das Verzeichnis öffnest findest du:

das model -> helper.php
denn Controller -> mod_menu.php
eine Konfigurations datei -> mod_menu.xml

und ein tmpl Verzeichnis in dem sich die Views befinden.
In diesem Verzeichnis befindet sich unter anderen der Standard View mit dem Namen default.php.

So sieht er aus:
PHP:
<?php
/**
 * @package        Joomla.Site
 * @subpackage    mod_menu
 * @copyright    Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license        GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access.
defined('_JEXEC') or die;

// Note. It is important to remove spaces between elements.
?>

<ul class="menu<?php echo $class_sfx;?>"<?php
    $tag = '';
    if ($params->get('tag_id')!=NULL) {
        $tag = $params->get('tag_id').'';
        echo ' id="'.$tag.'"';
    }
?>>
<?php
foreach ($list as $i => &$item) :
    $class = 'item-'.$item->id;
    if ($item->id == $active_id) {
        $class .= ' current';
    }

    if (in_array($item->id, $path)) {
        $class .= ' active';
    }
    elseif ($item->type == 'alias') {
        $aliasToId = $item->params->get('aliasoptions');
        if (count($path) > 0 && $aliasToId == $path[count($path)-1]) {
            $class .= ' active';
        }
        elseif (in_array($aliasToId, $path)) {
            $class .= ' alias-parent-active';
        }
    }

    if ($item->deeper) {
        $class .= ' deeper';
    }

    if ($item->parent) {
        $class .= ' parent';
    }

    if (!empty($class)) {
        $class = ' class="'.trim($class) .'"';
    }

    echo '<li'.$class.'>';

    // Render the menu item.
    switch ($item->type) :
        case 'separator':
        case 'url':
        case 'component':
            require JModuleHelper::getLayoutPath('mod_menu', 'default_'.$item->type);
            break;

        default:
            require JModuleHelper::getLayoutPath('mod_menu', 'default_url');
            break;
    endswitch;

    // The next item is deeper.
    if ($item->deeper) {
        echo '<ul>';
    }
    // The next item is shallower.
    elseif ($item->shallower) {
        echo '</li>';
        echo str_repeat('</ul></li>', $item->level_diff);
    }
    // The next item is on the same level.
    else {
        echo '</li>';
    }
endforeach;
?></ul>
Der geübte PHP-Coder erkennt sofort: Hier wird eine <UL> Liste mit Class und ID Attributen zusammengebaut.

Wir kopieren also diese Datei in unser Template-Verzeichnis:
DEIN_TEMPLATE/html/mod_menu/default.php

Wir könnten nun alles mögliche in diese neue Datei reinschreiben und Joomla würde es ohne zu murren einfach ausgeben. Wollen wir aber ja nicht! :D

Wir wollen ja mit denn Daten aus dem Backend weiterarbeiten, also müssen wir wissen welche das sind und wo diese herkommen.

Um das heraus zu finden müssen wir wieder in denn Controller von mod_menu schauen: mod_menu/mod_menu.php

da steht dann folgendes:

PHP:
<?php
/**
 * @package        Joomla.Site
 * @subpackage    mod_menu
 * @copyright    Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license        GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;

// Include the syndicate functions only once
require_once dirname(__FILE__).'/helper.php';

$list    = modMenuHelper::getList($params);
$app    = JFactory::getApplication();
$menu    = $app->getMenu();
$active    = $menu->getActive();
$active_id = isset($active) ? $active->id : $menu->getDefault()->id;
$path    = isset($active) ? $active->tree : array();
$showAll    = $params->get('showAllChildren');
$class_sfx    = htmlspecialchars($params->get('class_sfx'));

if(count($list)) {
    require JModuleHelper::getLayoutPath('mod_menu', $params->get('layout', 'default'));
}
Hier wird die helper Klasse eingebunden und aufgerufen sowie verschiedene Modul Parameter initailisiert. Alles zu erklären würde hier zu weit gehen und ich verweise hier mal auf auf die Doku -> http://docs.joomla.org/Module_Development

Für uns am wichtigsten ist dieser Methoden Aufruf:

PHP:
$list    = modMenuHelper::getList($params);
Hier wird das eigentliche Menü-Objekt erzeugt, welches wir uns über var_dump() anzeigen lassen können, es steuert die foreach-schleife im View und erzeugt die menü Items.

Um jetzt ein Menü von Stu Nicolls zu verwenden brauchen wir aber eigentlich gar nicht viel verändern.
Stu benutzt meisten Menüs die auf standard <ul> listen aufbauen, genau wie Joomla das auch macht. Alles was anders ist sind die CSS-Klassen und ID´s.
Joomlas CSS-Klassen für verschieden Menü-Ebenen sind 'hard-coded'.
z.B.:
PHP:
$class .= ' active';
$class = 'item-'.$item->id;
Wir müssen also diese Klassen nur an das CSS von Stu anpassen(Die CSS Coder werden jetzt aufschreien und behaupten das geht auch umgekehrt... und sie haben damit natürlich absolut recht :lol:).

So ich hoffe das war soweit verständlich und hilft dir weiter.
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Danke erstmal.
Den ersten Teil deiner Ausführung hättest du, da nur Theorie und somit für mich erstmal unwichtig, ruhig weglassen können.;)
Der zweite Teil beinhaltet den Override, da weiß ich ja mittlerweile welche Datei ich dafür benötige.
Zum dritten Teil hätte ich mir jetzt ein Beispiel gewünscht...;)

Also muss ich mich doch nochmal bei Gelegenheit hinsetzen, da mir wohl doch das Verständnis erstmal fehlt oder ich mein Anliegen nicht wirklich rüberbringen kann.:rolleyes:
Besser beschreiben kann ich es nicht was genau ich möchte.:(
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Da ist genau der Fehler, du verstehst erstmal garnicht was ich meine :p oder aber du hast Ahnung:uhm: und kannst dich nicht in meine Lage versetzen.:rolleyes:

Ich schau mir das am Wochenende an...

Ein normales Menü im Backend mit Joomla bekomme ich hin, nur eben noch nicht so "formatiert" wie ich es haben möchte.
Anscheinend habe ich da nur ein Verständnisproblem.:(
Also werde ich das Menü im Backend normal anlegen und dann weiter per CSS "behandeln".
 

Samuelll

Aktives Mitglied

AW: Eigenes Menü für eigenes Template - Wie?

Scheint als hast du Dich nicht dentlich genug ausgedrückt, damit ich Dich verstehen konnte.
Denn die Beiträge werden im BE in das Menü "verlinkt".
Wenn es nur darum geht ein CSS auf ein Menü anzuwenden, kannst Du den Modul doch eine Klasse geben.

Alternativ kann man eine Div-Box erstellen und eine Modulposition hineinsetzen oder per Overwrites einen neuen Style erstellen, den die Modulposition statt zx "xhtml" bekommt.

Hast Du vielleicht eine Beispielsseite wo man das FE sieht und anhand derer Du beschreiben kannst was nicht geht ?
 

MainAngler

Excel (SVERWEIS...)

AW: Eigenes Menü für eigenes Template - Wie?

Habe das nur lokal weil ich ja nur damit herumteste.;)

Auch habe ich schon mehrmals probiert das ausführlich genug rüberzubringen.
Wie gesagt werde ich wohl nur ein Verständnisproblem haben und das am WE (hoffentlich:rolleyes:) ausprobieren und vll. sogar nur mit CSS lösen können.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.359
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben