Advanced search  

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Pages: [1] 2   Go Down

Author Topic: Datei in Theme.php includen....  (Read 10852 times)

0 Members and 1 Guest are viewing this topic.

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Datei in Theme.php includen....
« on: August 28, 2008, 02:36:26 pm »

Hallo Forum.
Ich stehe mal wieder an.
Seit tagen versuche ich zwei phpskripts in die theme.php zu includen.
habe das nun via inlude(); eval(); mit get_file_content() versucht, die Skripte direkt zu importieren, oder sie via string ins theme.php zu schleuse.
Wie es scheint bin ich nicht in der Lage, dies zu bewerkstelligen. Ich wäre froh, wenn mir jemand auf die Sprünge helfen könnte.
Konkret möchte ich damit ein Sessionhandling importieren, dass je nach Sessionvariablen ein zusätzliches Menu in der richtigen Sprache einbindet.
Danke für Input
Saluti
Duri
Logged

Αndré

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Datei in Theme.php includen....
« Reply #1 on: August 28, 2008, 02:41:40 pm »

Was kommt denn als Fehlermeldung? Kommt überhaupt eine Fehlermeldung?
Wieso schreibst du den Code nicht gleich direkt in die theme.php (z.B. in pageheader(), setzt dort einen neuen Platzhalter à la {MENU_EXTRA} und bindest dieses dann an der richtigen Stelle ein)?
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #2 on: August 28, 2008, 03:59:06 pm »

Es kommt gar keine Fehlermeldung. Das skript wird ausgeführt, meine Include Anweisungen werden ignoriert.
Da die beiden Skripts über die ganze Webseite hinweg dynamisch eingebunden sind, wäre es angenehm, wenn dies auch in der Kupfermiene so laufen tät. Bis jetzt habe ich solches sogar als statisches HTML in die Template.htm geschrieben. Es ist halt nur so, wenn es änderungen gibt, muss ich das mit dieser Methode immer zusätzlich in der Coppermine machen. Ich hoffe halt immer noch, dass ich irgend wann einmal z.B. einen Menupunkt an einer einzigen Stelle ergänzen muss, und das dann für die ganze Seite gilt.
In diesem Fall werde ich halt wieder meine Bastellösung anwenden.... Danke
Logged

Αndré

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Datei in Theme.php includen....
« Reply #3 on: August 28, 2008, 04:07:17 pm »

Ich kann mir nicht vorstellen, dass deine Anweisung ignoriert wird. Benutze anstatt include() require(). Spätestens dann wird eine Fehlermeldung auftauchen, wenn Coppermine dein Script nicht einbinden kann.
Gibt dein Script etwas aus, oder setzt es nur bestimmte Variablen, die du später weiter verarbeiten möchtest?
Ich kann mir das Ganze noch nicht so richtig vorstellen (also an welcher Stelle dein "Menüpunkt" erscheint und wie komplex es somit ist). Ein Link zu deiner Galerie und deiner gesamten Site inklusive einem kleinen Hinweis, um welchen Punkt es sich handelt, wäre für mich hilfreich.
Logged

Αndré

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Datei in Theme.php includen....
« Reply #4 on: August 28, 2008, 04:15:29 pm »

Handelt es sich um den Block "Durchsuche meine Seite" auf foto.zisler.net?
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #5 on: August 28, 2008, 04:58:09 pm »

Danke. Nein. So wie da möchte ich es eben nicht mehr lösen.
Es handelt sich um die Seite http://cormixt.ch/fotos/
ich möchte das die menu.php von der art:
Code: [Select]
switch ($_SESSION['lang']{
case D:
[Codeblock]
case R:
[Codeblock]
}
einfügen
sowie eine selectLang.php mit Inhalt von der Art:
session_start();


if ($_GET['lang'] != "")
{

$_SESSION['lang'] = $_GET['lang'];
}

if ($_SESSION['lang'] == "")
{
$_SESSION['lang'] = R;
}
   
offensichtlich wird wirklich nichts per include() oder require() eingebunden....
Das Ziel wäre ein oberhalb des CoppermineMenus das standartmenu für die Webseite einzubinden.
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #6 on: August 28, 2008, 05:06:42 pm »

Das Menu findet man z.b unter http://cormixt.ch/Vorstand.php
auf der Linken seite.
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #7 on: August 28, 2008, 06:46:13 pm »

In Bezug auf require(): Auch diese Funktion erzeugt keinen Fehler. Es wird einfach gar nichts angezeigt, wenn ich require() oder require_once() verwende. Was ja irgendwie auch nicht sehr hilfreich erscheint.
Logged

Αndré

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Datei in Theme.php includen....
« Reply #8 on: August 28, 2008, 07:14:46 pm »

Erstmal solltest du schleunigst ein Update durchführen. Du benutzt noch Version 1.4.9, wobei 1.4.19 die neueste ist.

Der richtige Link zu deiner Galerie ist übrigens http://foto.cormixt.ch/


Ich habe gerade folgendes Testszenario in meinem CPG erstellt:

Eintrag in theme.php:
Code: [Select]
include("test1.php");
Inhalt test1.php:
Code: [Select]
<?php
include("test2.php");
print_r($_SESSION['lang'])
?>
;

Inhalt test2.php:
Code: [Select]
<?php
session_start
();
if (
$_GET['lang'] != "")
  
$_SESSION['lang'] = $_GET['lang'];
if (
$_SESSION['lang'] == "")
  
$_SESSION['lang'] = "-";
?>


Die Ausgabe funktioniert einwandfrei (zeigt mir also den Parameter lang an). Ich schätze, dass dein switch ($_SESSION['lang'])-Block nicht das macht, was du erwartest.



In Bezug auf require(): Auch diese Funktion erzeugt keinen Fehler. Es wird einfach gar nichts angezeigt, wenn ich require() oder require_once() verwende. Was ja irgendwie auch nicht sehr hilfreich erscheint.
Das bedeutet, dass deine Dateien ordnungsgemäß eingebunden wurden und bekräftigt meine Vermutung.
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #9 on: August 28, 2008, 07:54:14 pm »

Hmm.
Das ist interessant.Auf der restlichen Webseite funktioniert dieser Session-Block genau so, wie ich es mir vorstelle. Auch wenn ich den Block aus der Datei in die theme.php paste, passiert genau das, was gewollt war.
Zudem kann ich in meine theme.php auch testdateien mit einer "echo" Anweisung includen, und es wird nichts ausgegeben.
Wenn ich allerdings das einzubindende File direkt in demselben Verzeichnis wie die theme.php erstelle, dann tut es. Meine Files liegen allerdings in einem ganz anderen Ordner. Im Root der Webseite um päzise zu sein.
Hat es also eventuell etwas damit zu tun, dass diese Dateien sich ausserhalb des Coppermine Installationspfades befinden?
Merci vielmals.
Saluti
Duri
Logged

Αndré

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Datei in Theme.php includen....
« Reply #10 on: August 28, 2008, 08:02:30 pm »

Du musst halt den Pfad entsprechend anpassen. Wenn Coppermine z.B. in /cpg/ liegt, musst du deine Dateien, die in / liegen per
Code: [Select]
include("../test.php");einbinden.
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #11 on: August 28, 2008, 08:06:26 pm »

Herzlichen Dank für den Input. Dein Testlauf hat mich auf den Ticker gebracht!
Ich habe übersehen, dass die theme.php nicht an dem Ort ausgeführt wird, an dem Sie sich befindet. Deshalb habe ich den Dynamischen Pfad falsch gesetzt. (../../../) anstelle von (../). Aus irgend einem Grund funktioniert es hier anscheinend nicht, die URL anzugeben (was ich sonst bei inlude() schon öfters gemacht habe. Darum habe ich nicht entdeckt, dass DIES der Fehler war.
Die Kupfermine werde ich updaten, sobald ich mit der neuen Seite fertig bin.
Das wird wohl noch auf anderen seiten fällig sein...
So geht einem die Arbeit nie aus :-)
Danke eenemeenemuu!
schönen Abend
Duri
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #12 on: August 28, 2008, 08:07:51 pm »

Aha. Die Profis merken sofort, wo der Hund begraben liegt! unsere Posts hatten sich überschnitten.
Logged

Joachim Müller

  • Dev Team member
  • Coppermine addict
  • ****
  • Offline Offline
  • Gender: Male
  • Posts: 47843
  • aka "GauGau"
    • gaugau.de
Re: Datei in Theme.php includen....
« Reply #13 on: August 29, 2008, 12:18:12 am »

http-includes sind böse und fehlerträchtig (wie Du bemerkt hat). Auf der sicheren Seite bist Du mit absoluten Pfaden.
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #14 on: August 29, 2008, 08:36:45 am »

http-includes sind böse und fehlerträchtig (wie Du bemerkt hat). Auf der sicheren Seite bist Du mit absoluten Pfaden.
[quote  autor=SarDuri]]Aus irgend einem Grund funktioniert es hier anscheinend nicht, die URL anzugeben (was ich sonst bei inlude() schon öfters gemacht habe.[/quote]
Das Problem mit der Fehlerträchtigkeit kenne ich inzwischen bestens. Aber eben: Mein, sagen wir, Standardwokaround hat aus irgend einem Grund nicht funktioniert. ;-)
Weil, vielleicht sind includes böse, sicher sind sie Fehlerträchig. Aber wenn sie laufen, können sie eine Menge Unterhaltungsarbeit sparen....
Logged

Joachim Müller

  • Dev Team member
  • Coppermine addict
  • ****
  • Offline Offline
  • Gender: Male
  • Posts: 47843
  • aka "GauGau"
    • gaugau.de
Re: Datei in Theme.php includen....
« Reply #15 on: August 29, 2008, 08:59:03 am »

Includes per se sind nicht böse. Nur URI-includes! Also nicht so:
Code: [Select]
<?php
include('http://deine_deite.tld/include-verzeichnis/include-name.php');
?>
(das ist ein URI-include), sondern mit absolutem Pfad
Code: [Select]
<?php
include('/var/www/htdocs/public_html/include-verzeichnis/include-name.php');
?>
oder mit relativem Pfad
Code: [Select]
<?php
include('../include-verzeichnis/include-name.php');
?>
Beim relativen Pfad triffst Du oft auf das Problem, das Du gar nicht weisst, von welcher Ebene im Verzeichnissystem Du includest. Daher sind absolute Pfadangaben die Methode der Wahl für Anfänger. Coppermine benutzt nicht absolute, sondern relative Pfadangaben, so dass wir uns der EInfachheit halber auf ein striktes Verzeichnis-System geeignet haben: alle includes befinden sich im gleichen Verzeichnis. Das passiert nicht ohne Grund: wir vermeiden damit solche Dinge, wie sie Dir widerfahren sind.

Zur Begründung, warum URI-includes böse sind: lies die Warnungen auf http://www.php.net/manual/de/function.include.php
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #16 on: August 29, 2008, 02:01:11 pm »

 Das mit dem Serverpfad ist ein hervoragende Idee, die ich mir bestimmt merken werde.
Danke GauGau.

kann mir jetzt noch jemand sagen, wie ich diese <!-- BEGIN logout --><!-- End logout --> Kommentare hinpacken muss? Immer wenn ich das include() ausserhalb von <<<EOT....EOT;, aber innerhalb von $template_sys_menu =   verwende, (was ich ja da facto muss) meldet der Parser den Logout Fehler.....
Logged

Joachim Müller

  • Dev Team member
  • Coppermine addict
  • ****
  • Offline Offline
  • Gender: Male
  • Posts: 47843
  • aka "GauGau"
    • gaugau.de
Re: Datei in Theme.php includen....
« Reply #17 on: August 29, 2008, 10:20:08 pm »

Ohne zu wissen, was Du genau tun willst empfehle ich Dir:
1) wirf mal einen Blick auf die heredoc-Syntax in der php.net-Doku
2) Um eine Variable mit Inhalten aus einem include zu versehen, gehe so vor:
Code: [Select]
<?php
$deine_variable 
= <<< EOT
<h1>Hallo Welt</h1>
<p>Ein Absatz</p>
EOT;
$deine_variable .= include('dein_include.inc.php');
$deine_variable .= <<< EOT
<h2>Weiter geht es mit dem Coppermine-Kram</h2>
<p>Bla</p>
EOT;
Logged

SarDuri

  • Coppermine novice
  • *
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • foto.zisler.net
    • Engadin - St. Moritz:Fotos und Bilder aus dem Engadin
Re: Datei in Theme.php includen....
« Reply #18 on: September 01, 2008, 04:00:08 pm »

Die heredocsyntax habe ich mir schon gegönnt. Aber irgendwie entsteht dieser verflixte Fehler anders. Von der Art her habe ich den Code ziemlich genauso aufgebaut wie es GauGau aufschreibt.
wenn ich etwas im Stil
Code: [Select]
$template_sys_menu = <<<EOS
<div class="cpm">
{BUTTONS}
</div>
EOS;
schreibe, tut es.
Sobald ich den Code im Stil
Code: [Select]
$template_sys_menu = 

"<div class=\"cpm\">".
include ('../menu.php');
<<<EOS

{BUTTONS}

EOS;
"</div>";


modifiziere kommt permanent der logout Fehler.

Logged

Αndré

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Datei in Theme.php includen....
« Reply #19 on: September 01, 2008, 05:15:37 pm »

Von der Art her habe ich den Code ziemlich genauso aufgebaut wie es GauGau aufschreibt.
Nicht wirklich.

Code: [Select]
<<<EOS

{BUTTONS}

EOS;
"</div>";
steht ohne jeglichen Bezug da.

Korrekt wäre:
Code: [Select]
$template_sys_menu .= <<<EOS

{BUTTONS}

EOS;
$template_sys_menu .= "</div>";


Aber das hat Joachim ja eigentlich schon geschrieben ;)
Logged
Pages: [1] 2   Go Up
 

Page created in 0.043 seconds with 19 queries.