Ergebnis 1 bis 19 von 19

Thema: PHP Skript mehrfach einbinden

  1. #1
    Contao-Nutzer
    Registriert seit
    01.05.2014.
    Ort
    Reutlingen
    Beiträge
    15
    User beschenken
    Wunschliste

    Frage PHP Skript mehrfach einbinden

    Hallo zusammen,

    ich habe mir gerade ein PHP-Skript im Impressum eingebunden:

    {{file::fakeEmail.php?email=test@domain.com}}

    Sobald ich das Skript in der Fußleiste erneut einbinde, wird mir die Seite, in welche es zweimal eingebunden wird, nicht mehr angezeigt. Mit einmal einbinden funktioniert es einwandfrei. Auch das Einbinden unterschiedlicher Skripte funktioniert nicht.

    Wie kann ich dasselbe Skript zweimal einbinden?

    Oder alternativ:

    Gibt es eine Möglichkeit, eine gefakte eMail-Adresse in einer Variablen abzulegen, welche ich dann mehrfach wieder einbinden kann?

    Vielen Dank und Grüße,
    Christoph

  2. #2
    Contao-Fan
    Registriert seit
    27.06.2012.
    Beiträge
    600

    Standard

    hi, was steht denn im skript drin? befindet sich darin eine funktion?

    aktivier mal die fehlermeldungen.

    Gesendet von meinem GT-I9505 mit Tapatalk

  3. #3
    Contao-Nutzer
    Registriert seit
    01.05.2014.
    Ort
    Reutlingen
    Beiträge
    15
    User beschenken
    Wunschliste

    Daumen hoch

    Zitat Zitat von valentin_ Beitrag anzeigen
    hi, was steht denn im skript drin? befindet sich darin eine funktion?
    Nein, eine Klasse.

    Zitat Zitat von valentin_ Beitrag anzeigen
    aktivier mal die fehlermeldungen.
    Danke dir. Er kann die Klasse natürlich nicht zweimal mit dem gleichen Namen deklarieren.

    Vielen Dank und Grüße,
    Christoph

  4. #4
    Alter Contao-Hase
    Registriert seit
    02.10.2010.
    Ort
    58636 Iserlohn
    Beiträge
    1.084

    Standard

    Vielleicht hilft dir das weiter:
    http://www.php.net/manual/de/function.include-once.php

    Das geht natürlich nicht mit dem Insert-Tag, sondern als reines PHP.

    Nutzt du immer die gleichen Parameter (?email=test@domain.com)?
    Wenn nicht, wird das mit dem doppelten Aufruf schwierig.
    Meine Extensions: contentmodify, dca_editor

  5. #5
    Alter Contao-Hase
    Registriert seit
    02.10.2010.
    Ort
    58636 Iserlohn
    Beiträge
    1.084

    Standard

    Kannst du nicht einfach im page-Template die Datei pauschal einmal einbinden?
    Falls du die Datei nur auf wenigen Seiten benötigst, kannst du dafür dann doch auch eine eigene Layout/Template-Kombination anlegen.
    Meine Extensions: contentmodify, dca_editor

  6. #6
    Contao-Fan Avatar von fabil
    Registriert seit
    10.11.2010.
    Beiträge
    383

    Standard

    Hallo Christoph,

    Da das mehrmalige einbinden nicht klappt, kannst du doch als schnellen Fix einfach die Datei duplizieren, unbenennen und die Klassen sowie die Methodennamen einfach auch verändern.

    Danach bindest du diese Datei einfach auch noch ein. Ist zwar keine wirklich schöne Lösung,
    behebt aber ohne größeren Aufwand dein Problem.

    Viele Grüße
    Fabi
    Github-Account: https://github.com/fabil

  7. #7
    Contao-Nutzer
    Registriert seit
    01.05.2014.
    Ort
    Reutlingen
    Beiträge
    15
    User beschenken
    Wunschliste

    Frage

    Hallo alle zusammen,

    vielen Dank für Eure Antworten.

    Zitat Zitat von fabil Beitrag anzeigen
    Da das mehrmalige einbinden nicht klappt, kannst du doch als schnellen Fix einfach die Datei duplizieren, unbenennen und die Klassen sowie die Methodennamen einfach auch verändern.
    Habe ich gestern Nachmittag als schnellen workaround bereits gemacht.

    Zitat Zitat von Thoni Beitrag anzeigen
    Kannst du nicht einfach im page-Template die Datei pauschal einmal einbinden?
    Die Funktionalität benötige sie auf allen Seiten, auf einigen mehrfach.

    Die Frage ist nur, wann das Template includiert wird. So wie es aussieht wird erst der Seiteninhalt in Variablen aufgebaut und final im Template in die HTML-Struktur eingebunden.

    Das spricht dafür, daß das Template erst am Schluß kommt (spart speicher, wenn man die vorherigen inlcudes wieder raus wirft, sobald sie nicht mehr benötigt werden). Greife ich vorher über ein Inhaltselement darauf zu, wird es noch nicht da sein.

    Ich habe bereits versucht, die Klasse im Header zu instanziieren und dann später über ein weiteres Skript zu verwenden. Bei der Verwendung ist sie jedoch nicht bekannt. Ein Syntax-Fehler in der Klasse führt aber zu einer Fehlermeldung, d.h. sie wird auf jeden Fall eingebunden.

    Zitat Zitat von Thoni Beitrag anzeigen
    Nutzt du immer die gleichen Parameter (?email=test@domain.com)?
    Danke dir für den Link, in PHP bin ich ziemlich fit. Im Moment ist die eMail-Adresse gleich, später nicht.

    Vielen Dank und Grüße,
    Christoph
    Geändert von cfauck (02.05.2014 um 07:52 Uhr)

  8. #8
    Alter Contao-Hase
    Registriert seit
    02.10.2010.
    Ort
    58636 Iserlohn
    Beiträge
    1.084

    Standard

    Erstelle dir eine Erweiterung, die die Klasse lädt - ohne Parameter.

    An den nötigen Stellen rufst du dann eine Funktion deiner Klasse auf - mit Parameter.
    Wo und wie ist (für mich) schwer zu sagen, da ich das Projekt nicht kenne - vielleicht in einem Hook?
    Meine Extensions: contentmodify, dca_editor

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

    Standard

    Also ich würde auch das Ganze als eigenes Inserttag coden:
    PHP-Code:
    {{fakeEmail::test@domain.com}} 
    Ist ja eigentlich nicht soviel Arbeit, wenn man schon mal ein Inserttag programmiert und dadurch eine Vorlage hat.
    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

  10. #10
    Alter Contao-Hase
    Registriert seit
    02.10.2010.
    Ort
    58636 Iserlohn
    Beiträge
    1.084

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Also ich würde auch das Ganze als eigenes Inserttag coden:
    PHP-Code:
    {{fakeEmail::test@domain.com}} 
    Ist ja eigentlich nicht soviel Arbeit, wenn man schon mal ein Inserttag programmiert und dadurch eine Vorlage hat.
    Stimmt!
    Die Klasse mit include_once einbinden - OK.
    Aber Später mit verschiedenen Parametern?

    Dafür braucht man dann einen Doppelschritt, oder?
    1. include_once ohne Parameter
    2. Eine Funktion der Klasse mit dem Parameter aufrufen.
    Meine Extensions: contentmodify, dca_editor

  11. #11
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Man kann auch die Klasse unter function_exists definieren, dann kappt das auch mit mehreren Einbindungen, da nur beim ersten Mal die Klasse wirklich angelegt wird.

  12. #12
    Alter Contao-Hase
    Registriert seit
    02.10.2010.
    Ort
    58636 Iserlohn
    Beiträge
    1.084

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    Man kann auch die Klasse unter function_exists definieren, dann kappt das auch mit mehreren Einbindungen, da nur beim ersten Mal die Klasse wirklich angelegt wird.
    Das wäre aber noch ein Schritt mehr - ein IF um das (normale) INCLUDE.
    Gibt es bei den beiden Varianten eigentlich Vor- und Nachteile?
    Die Performance kann man da wohl vernachlässigen, oder?
    Meine Extensions: contentmodify, dca_editor

  13. #13
    Contao-Nutzer
    Registriert seit
    01.05.2014.
    Ort
    Reutlingen
    Beiträge
    15
    User beschenken
    Wunschliste

    Daumen hoch

    Hallo zusammen,

    vielen Dank für die wertvollen Tipps. Ich denke inzwischen auch, dass ein Inserttag die sauberste Lösung ist.

    Schaue mir gerade das Beispiel unter http://de.contaowiki.org/Eigene_insert_tags_erstellen an. Das autoload.php wird generiert, aber irgendwie kann ich nicht über {{foo::bar}} darauf zugreifen. Werde das Thema pausieren, da der workaround erst einmal funktioniert.

    Vielen Dank noch einmal.

    Grüsse,
    Christoph

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

    Standard

    Ich habe Dir mal ein Inserttag-Modul von mir beigefügt. Es ersetzt den Tag {{adresse::Wert}}.
    dsb-tags.zip
    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

  15. #15
    Contao-Nutzer
    Registriert seit
    01.05.2014.
    Ort
    Reutlingen
    Beiträge
    15
    User beschenken
    Wunschliste

    Frage

    Hallo Samson,

    vielen Dank. Ich habe es ins system/modules Verzeichnis kopiert und in einem Artikel die Zeil "Test: >{{adresse::Wert}}<" eingebunden. Zwischen den Klammern blieb es jedoch leer. Dann habe ich den Autocreator drüber laufen lassen. Zwischen den Klammern bleibt es immer noch leer.

    Was fehlt noch? wenn ich {{asdfasdf::asdfasdf}} einbinde, kommt leider auch keine Fehlermeldung so daß man die Korrektheit des tags nicht überprüfen kann. Im Log ist auch nichts diesbezüglich zu finden.

    Hast du mir einen Tipp?

    Vielen Dank und Grüsse,
    Christoph

    PS:

    Ich habe deine Klasse dsbtags so umgebaut, daß grundsätzlich ein return "Test"; gemacht wird. Es kommt nichts zurück. Offensichtlich wird das Modul nicht eingebunden. Habe Contao 3.2.9.
    Geändert von cfauck (08.05.2014 um 16:52 Uhr)

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

    Standard

    Das nichts ausgegeben wird, wird wahrscheinlich schlicht daran liegen, daß der entsprechende Code erst eingebaut werden muß. Aktuell greift die Klasse auf nichtexistente Dateien zu. Ich mache Dir mal eine lauffähige Version fertig.
    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

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

    Standard

    Die ZIP brauche ich nicht neu posten. In dsbtags.php mußt Du nur eine Funktion ersetzen:
    PHP-Code:
    protected function adresse_ersetzen($strTag)
    {
        
    $arrSplit explode('::'$strTag);

        if(
    $arrSplit[0] == 'adresse' || $arrSplit[0] == 'cache_adresse')
        {
            if(isset(
    $arrSplit[1]))
            {
                return 
    $arrSplit[1];
            }
            else {
                return 
    'Fehler! Ungültiger Wert!';
            }
        }
        
    // nicht unser Insert-Tag
        
    return false;

    In den Inhaltselementen brauchst Du nur noch {{adresse::Hallo Welt}} eingeben und schon gibt es eine Ausgabe. Hat bei meiner 3.2.9-Testinstallation perfekt geklappt.

    Da Contao die neue Funktion bei JEDEM Inserttag durchläuft, kannst Du die IF-Abfrage um beliebige weitere Tags ergänzen. Was Du dann damit machst und was Du mit return zurückgibst bleibt dann Deine Sache. Das hat ja dann nichts mehr mit Contao zu tun, sondern ist "normales" PHP.
    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

  18. #18
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Und wenn Du anstelle explode() noch Contaos trimsplit() nimmst, behandelst Du auch noch Leerzeichen, die sich irgendwo eingeschlichen haben
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  19. #19
    Contao-Nutzer
    Registriert seit
    01.05.2014.
    Ort
    Reutlingen
    Beiträge
    15
    User beschenken
    Wunschliste

    Standard

    Jetzt funzt es.

    Herzlichen Dank.

    Viele Grüsse,
    Christoph

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
  •