Ressourcen richtig einbinden

  • Hallo,


    wie binde ich Ressourcen richtig ein. Beispielsweise eine CSS-Datei aus dem Ordner "./css". Ich mache es aktuell so, aber es kommt mir falsch vor:


    In der ersten Zeile der "index.php" schreibe ich diesen Code:


    <?php defined( '_JEXEC') or die( 'Restricted access'); $this->template_url = JUri::base() . "templates/mein-template/"; ?>


    Durch habe ich dann später die Variable "$this->template_url" als Basepath und kann dann folgendes schreiben:


    <link href="<?php echo $this->template_url; ?>css/bootstrap.min.css" rel="stylesheet">


    Wie gesagt, es funktioniert, aber es kommt mir umständlich vor. Vor allem, dass ich den Namen des Templates "mein-template" verwende, ist gefährlich.

  • In Joomla 4 gibt es jetzt den WebAsset Manager. Am besten schaust du in Cassiopeia, wie da gemacht wird.

    Warum soll gefährlich sein den Namen des Templates zu verwenden?

    Mit meinem beschränkten Wissen, würde ich vermuten, dass bei einer Namensänderung vom Template, dann auch der Quellcode der index.php angepasst werden müsste. Das stellt eine Fehlerquelle da.


    Einfach mal bei Cassiopeia nachzuschauen liegt natürlich auf der Hand :). Momentan verstehe ich es aber noch nicht. Muss mich da wohl noch einlesen.


    Was mir aber auffällt ist, dass Cassiopeia überhaupt kein Bootstrap enthält. Demnach, mache ich schon etwas falsch, wenn ich Bootstrap selbst im Template einbinde.

  • Man schreibt nicht mehr so viel info in diese erste Zeile: Wie Viviana sagt: schau in cassiopeia


    Wo kann ich mir Cassiopeia denn als installierbares(!) Template anschauen. Wenn ich bereits installierten System schaue, dann findet man ja an mehreren Stellen Spuren von Cassiopeia.


    "/templates/cassiopeia" <- da ist wohl ein Teil des Templates installiert.


    In der templatesDetails.xml finde ich "<media destination="templates/site/cassiopeia" folder="media">"


    Das ist offensichtlich der Ordner: "./media/templates/site/cassiopeia". Jetzt frage ich mich aber, wie dieser befüllt wird? Wie muss es im (installierbaren) Template aussehen.


    Gibt es denn dafür keine Anleitung? Ich finde einfach keine gute Dokumentation/Referenz zu Joomla und das frustriert schon etwas.

  • Wo kann ich mir Cassiopeia denn als installierbares(!) Template anschauen...


    ...Gibt es denn dafür keine Anleitung?

    Ist wohl in Arbeit siehe z.B. im Bereich "Templates" eventuell nützliche Links und Infos diesbezüglich:


    https://docs.joomla.org/JDOC:Joomla_4_Tutorials_Project

  • Ich versuche dann mal eine Kopie des vorinstallierten Templates "Cassiopeia" zu erstellen:


    1) Ich erstelle einen lokalen Ordner "cassiopeia_test"

    2) Ich kopiere aus der frischen Joomla-Installation den Ordner "templates/cassiopeia/" in den lokalen Ordner.

    3) Ich ändere in der Datei "templateDetails.xml" den Namen -> <name>cassiopeia_test</name>

    4) Ich ändere den Pfad im Eintrag Media: <media destination="templates/site/cassiopeia_test" folder="media">

    5) Ich kopiere aus der frischen Joomla-Installation den Ordner "/media/templates/site/cassiopeia/" in den lokalen Ordner nach "./media"

    6) Ich kopiere aus der frischen Joomla-Installation aus dem Ordner "/language/en-GB/" die beiden Dateien "tpl_cassiopeia.*" in den lokalen Ordner nach "/language/en-GB/" und bennen die beiden Dateien um in "tpl_cassiopeia_test.*".

    7) Ich ändere die Pfade im Eintrag Languages (siehe Punkt 6)

    8 ) Ich zippe den lokalen Ordner nach "cassiopeia_test.zip"

    9) Ich installiere das ZIP mit dem Extensionmanager -> Erfolg

    10) Ich aktiviere das Template und es scheint soweit alles zu funktionieren.


    Habe ich damit eine eine korrekt installierbare Kopie von Cassiopeia" erstellt?



    Die CSS-Datei von Bootstrap finde ich in der Datei "media/css/template.min.css" aber ich sehe nicht wie die JS-Datei eingebunden wird.

  • Nein, Tutorials für J3 sind nur noch eingeschränkt gültig.

    https://docs.joomla.org/J4.x:C…emplate_Folders_and_Files ist schon eine gute Übersicht.


    Dein Vorgehen stimmt im Prinzip.

    Code
    5) Ich kopiere aus der frischen Joomla-Installation den Ordner "/media/templates/site/cassiopeia/" in den lokalen Ordner nach "./media"

    Müsste heissen:

    5) Ich kopiere aus der frischen Joomla-Installation den Ordner "/media/vendors/templates/site/cassiopeia/" in den lokalen Ordner nach "./media/sites/cassiopeia_test"

    Sonst sieht es gut aus mit eienr Ausnahme:

    Es gibt noch eine Datei zu beachten: joomla.assets.json. Darin müssten wohl der name cassiopeia in cassiopeia_test umgewandelt werden. Ich habe das jedenfalls so gemacht, damit die assets gefunden werden.


    Korrigiert mcih, wenn ich was übersehen habe ;)


  • zu 5) Bei mir ist es der Pfad "/media/templates/site/cassiopeia/" und unter "/media/vendor" gibt es keinen Ordner "templates".


    zur joomla.assets.json) Ja, das hatte ich über sehen und das muss ebenfalls angepasst werden.

  • Hallo,


    um nochmal auf den Thread zurück zukommen. Bezgl. der "joomla.assets.json" habe ich noch jede Menge Verweise in index.php, component.php, usw. gefunden. Die habe ich alle angepasst.


    Evtl. könnte sonst das Funktionieren der Kopie nur scheinbar sein, da gleichzeitig noch das originale Cassiopeia im System installiert ist. Fehlerhafte Referenzen würden dann noch auf das Original verweisen.