Contao-Camp 2024
Ergebnis 1 bis 7 von 7

Thema: Öffentliche Dateien von abhängigen fremden Paketen

  1. #1
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Frage Öffentliche Dateien von abhängigen fremden Paketen

    Ich habe mir in mein C4-Bundle als Abhängigkeit https://packagist.org/packages/components/flag-icon-css installiert. Die Anleitung gibt nicht viel mehr, das man z.B.
    PHP-Code:
    <span class="flag-icon flag-icon-gr"></span
    in das eigene Markup schreibt. Das man die CSS-Datei aber noch einbinden muß, ist dort nicht erwähnt. Aber wie binde ich die in C4 ein?

    vendor/components/flag-icon-css/css/flag-icon.css und vendor/components/flags muß ich öffentlich bekommen. Wie lege ich die Symlinks (automatisch) an?
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.496
    User beschenken
    Wunschliste

    Standard

    Automatisch passiert das nur in deinem Bundle, wenn du etwas in src/Resources/public mitbringst.
    Taucht dann in web/bundles/<bundlename>/ auf.

    Da wirst du wohl die SVGs selber mitbringen müssen, sonst wüste ich jetzt nicht wie man das "hintenrum" public bekommt aus fremden Quellen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    D.h. die viel propagierte Vielfalt, das man im Composer-Universum auf Unmengen externer Tools zurückgreifen kann und viele Aufgaben nicht mehr selbst von Contao gemacht werden müssen, ist pure Augenwischerei. Tools, die selbst eine Ausgabe (im Browser) erzeugen, können wegen der Symlinks von Contao nicht genutzt werden. Irgendwo hatte ich gestern auf einer Symfony-Seite gelesen (ich glaube hier), das Symfony den Ordner Resources/public als Symlink in web/bundles erstellt. Das würde wiederum heißen, das das genannte Tool nicht kompatibel mit Symfony ist, da es keinen public-Ordner hat. Von Resources ganz zu schweigen. Das Tool wurde einfach nur composertauglich gemacht, ist aber nicht kompatibel mit Symfony und damit schon gar nicht mit Contao.

    Bzgl. Symlinks habe ich einige Seiten gefunden, die mir aber noch nicht viel weiterhelfen, weil nicht genannt wird, welche composer.json gemeint ist und wie man den extra-Bereich konfiguriert:

    https://blog.mayflower.de/6387-symfo...symfony-4.html
    https://de.w3docs.com/snippets/symfo...te-halten.html
    https://www.die-efi.de/tutorials-a-h...jekt-erstellen

    Ich habe mal in meiner Erweiterung per PHP einen Symlink erstellt:
    PHP-Code:
    $result symlink(TL_ROOT.'/vendor/components/flag-icon-css/'TL_ROOT.'/web/bundles/flag-icon-css'); // Ziel, Name
    if ($result)
    {
        echo 
    "Symbolischer Link wurde erstellt";
    }
    else
    {
        echo 
    "Symbolischer Link konnte nicht erstellt werden";

    Das funktioniert teilweise. Allerdings scheint der Symlink nicht zu funktionieren, wobei ich das bisher nur mit dem TC mit FTP unter Win10 getestet habe. Klicke ich auf andere Symlinks im bundles-Ordner funktionieren die. Mein erstellter Symlink aber nicht. Wie gesagt unter Win10 mit der FTP-Funktion des TC! Weitergehende Tests habe ich noch nicht gemacht. Auch muß ich das Problem noch lösen, den Symlink nur zu erstellen, wenn er noch nicht vorhanden ist. Keine Ahnung ob file_exists der richtige Ansatz ist.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.897
    Partner-ID
    10107

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    D.h. die viel propagierte Vielfalt, das man im Composer-Universum auf Unmengen externer Tools zurückgreifen kann und viele Aufgaben nicht mehr selbst von Contao gemacht werden müssen, ist pure Augenwischerei.


    Du installierst dir einen Packagist mirror einer bower/npm Komponente. Composer ist primär für die Verwaltung von Abhängigkeiten von PHP Paketen gedacht. Alle bisherigen Bemühungen auch andere Assets über Composer unabhängig verwalten zu können sind nicht so einfach. Contao benutzt bspw. die contao-components. Du kannst dir auch mal die Lösung von netzmacht/contao-font-awesome ansehen.

    Wenn du den composer eine "Augenauswischerei" findest, dann verzichte doch darauf und installiere dir alles manuell und lade auch alle Klassen manuell, wie früher.
    Geändert von Spooky (18.08.2019 um 09:38 Uhr)

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.496
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Irgendwo hatte ich gestern auf einer Symfony-Seite gelesen (ich glaube hier), das Symfony den Ordner Resources/public als Symlink in web/bundles erstellt.
    Genau das hatte ich ja beschrieben. Aber das geht nur bei Ressourcen in deinem eigenen Bundle.
    Wenn du nun manuell oder auch automatisiert ein Link erstellen würdest auf eine fremde Ressource, dann denk auch dran das diese wieder gelöscht werden müsste bei Deinstallation deines Bundles.
    Das wird nicht so einfach. (wenn es ebenfalls automatisch passieren soll)

    Ich habe das auch mal probiert in der Art, das ich eine Componente gebastelt habe und mit dem "contao-components/installer" versucht habe das in die richtigen Pfade zu bringen.
    Das würde bei dir bedeuten, wie ich auch schon andeutete, das du eine Bundle vom Typ contao-component baust wo die SVGs und CSS drin sind und dieses Bundle dann als Abhängigkeit zu deinem eigentlichen Bundle definierst.
    Oder gleich alles in dein Bundle rein kopierst. In beiden Fällen bist du dann natürlich dafür verantwortlich, diese zu aktualisieren, falls es eine neue Version gibt von "flag-icon-css".
    So etwas in der Art mache ich auch bereits in einer meiner Erweiterungen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Schau dir mal folgendes bundle an.
    Das nutze ich bei einigen Projekten.

    https://github.com/slowprog/CopyFile
    Grüße
    Alex

  7. #7
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    Im Moment erstelle ich den Symlink wie folgt:
    PHP-Code:
    // Symlink für das externe Bundle components/flag-icon-css erstellen, wenn noch nicht vorhanden
    if(!is_link(TL_ROOT.'/web/bundles/flag-icon-css')) symlink(TL_ROOT.'/vendor/components/flag-icon-css/'TL_ROOT.'/web/bundles/flag-icon-css'); // Ziel, Name 
    Was bei einer Deinstallation mit dem verwaisten Symlink passiert, ist mir erstmal egal.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •