Problemchen mit mod_inline

Diskussion zu nicht so umfangreichen Modulen und Start-Up für neue Module. Ansonsten bitte die speziellen Kategorien benutzen!
Antworten
holster
ConPresso-Newbie
Beiträge: 7
Registriert: 12.01.2010 18:48

Problemchen mit mod_inline

Beitrag von holster »

Hallo!

1. ConPresso ist super und je mehr ich mich darin einarbeite, desto besser gefällt es mir :-)

2. Mein Problem: Ich habe mod_inline installiert und möchte darüber nun eine php-Datei in einem Template einbinden. Ich habe das inline-Element erstellt und im Template im Artikel-Text mit ###[1]### eingefügt. Allerdings verweigert mir die PHP-Datei den Dienst. Es ist eine kleine IF-Abfrage und die wird schlicht ignoriert. Schalte ich das entsprechende Element auf "inaktiv" wird mir korrekterweise ###[1]### an der entsprechenden Stelle angezeigt. Schalte ich auf "debug", dann wird mir gelb hinterlegt das Inline-Element, sein Name und die Referenz angezeigt. Scheint mir alles korrekt zu sein. Aber sobald ich es aktiviere, klappt die If-Abfrage nicht.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Wie sieht die denn aus? Was fragst Du denn ab?

Wichtig: mod_inline bindet über Funktionsaufrufe ein, was bedeutet, daß der Zugriff auf im Umfeld existierende Variablen nur möglich ist, wenn diese vorher globalisiert wurden.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
holster
ConPresso-Newbie
Beiträge: 7
Registriert: 12.01.2010 18:48

Beitrag von holster »

Aha. Vermute, dass es daran liegt. Meine Abfrage bezieht sich auf die Artikelnummer, also $nr. Wie globalisiere ich die denn nun? Indem ich im global_header "<?php global $nr; ?>" notiere? Funktioniert dann alles andere noch?
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Das machst Du innerhalb Deiner PHP-Datei.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
holster
ConPresso-Newbie
Beiträge: 7
Registriert: 12.01.2010 18:48

Beitrag von holster »

Meinst Du die PHP-Datei, auf die das Inline-Element verweist? Das habe ich gerade versuchsweise getestet - mit Null Erfolg. Aber vielleicht bin ich auch zu blöd? Hier mal mein Code:

Code: Alles auswählen

<?PHP
    function global_test()
       {
          global $nr;
          $nachricht = $nr;
       }
    global_test();
    echo $nachricht;
?>
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Vielleicht habe ich ja was an den Augen, aber ich sehe da kein einziges IF...

Woher glaubst Du, daß die Variable $nr kommt?

Die Artikelnummer steht in der Regel als $db_nr zur Verfügung.

Warum Du die Variable dann aber erst nicht globalisierst und dann glaubst eine weitere Funktion könnte die ja nun nicht vorhandene Variable aus dem Nirvana zaubern bleibt mir schleierhaft...

Nochmal: Dein PHP-Code ist durch mod_inline der INHALT einer FUNKTION.
Innerhalb dieser Funktion müssen externe Variablen erst globalisiert werden, damit sie wie in Deinem Beispiel in diesem lokalen Kontext existieren und dann wiederum in weiteren Funktionen globalisiert und genutzt werden können.

Test doch einfach mal diesen Code

Code: Alles auswählen

<?php
    global $db_nr;
    $nachricht = $db_nr; 
    echo $nachricht; 
?>
Wenn der auch nicht geht (bei mir geht er) solltest Du die Definition des inlines zeigen... sollte da ein http drinstehen kannst Du es vergessen, weil Variablen nur innerhalb eines Scriptes und niemals über einen http-Request ausgelesen werden können (glücklicherweise...)
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
holster
ConPresso-Newbie
Beiträge: 7
Registriert: 12.01.2010 18:48

Beitrag von holster »

Ahh jetzt ja!

Dann habe ich tatsächlich an zwei Stellen Fehler gemacht. Das $nr hatte ich mir aus der URI herausgeholt ... und tatsächlich ein http in der Inline-Referenz. Jetzt funzt es! Vielen Dank.

Und an den Augen hast Du nix, hatte nur einen Test-Code gepostet ... Jetzt klappts aber auch mit dem IF.

Nochmals: Danke!
Antworten