Ankündigung

Einklappen
Keine Ankündigung bisher.

include innerhalb von return Funktion

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • include innerhalb von return Funktion

    Hallo,

    ich hoffe ihr könnt mir weiterhelfen und meine (wahrscheinlich anfängerhafte) Frage beantworten. Ich benutze das Skript SilverNews für ein Pressearchiv und möchte dieses per benutzerdefiniertem Header und Footer in meine Seite einbinden bzw. integrieren. Nun ist es so, dass die beiden Teile per Funktion eingebunden werden, die wiederum per return Kommando nur reinen Quellcode ausgibt, d.h. php Kommandos werden nicht geparst. Wenn ich den Inhalt der Dateien, welche ich includen möchte, dort reinstelle, funktioniert alles. Allerdings würde ich gerne zur einfacheren Verwaltung bestimmte Teil des Headers/Footers per include einbinden und nicht statisch im Code hinterlegen. Gibt es eine Möglichkeit innerhalb des return Kommandos einen include einzusetzen? Ich habe schon einiges probiert, aber bin leider nicht weitergekommen. Würde es eventuell helfen, wenn ich das Skript abändere, auf die return Funktion verzichte und stattdessen per echo sowohl den HTML Teil also auch den include ausgebe?

    Ich habe auch schon versucht die Dateien außerhalb der Header und Footer Funktion einzubinden, aber irgendwie erscheint bei der späteren Ausgaben dann alles am Anfang des Quellcodes, was mir das gesamte Layout verhagelt, da verschachelte DIVs nicht mehr in der richtigen Reihenfolge geschlossen werden.

    Hier sind die, aus meiner Sicht, relevanten Codezeilen:

    index.php
    PHP-Code:
    // Header
    $title $newsboard->title;
    $newsboard->header .= $tpl_global->header($title);

    if (
    $newsboard->config['enable_topstrip'] == '1')
    {
        
    $date $newsboard->make_date(time());
        
    $newsboard->header .= $tpl_global->topstrip($date);
    }

    // Footer
    $newsboard->year date('Y');
    /* Please note that in order to our licence you are not allowed to alter or remove the following line! */
    $newsboard->copyright();

    if (
    $newsboard->config['enable_stats'] == '1')
    {

        
    $vars['queries'] = $sql->querycount;
        
    $vars['extime'] = $timer->stop();
        
    $vars['extime'] = $newsboard->make_number($vars['extime'], 4);
        
    $newsboard->footer .= $tpl_global->debug($vars);
        
    }

    $newsboard->footer .= $tpl_global->footer(); 
    tpl_global.php
    PHP-Code:
    function header($title) {
    global 
    $newsboard;
    return <<<TEMPLATE
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>
    {$title}</title>

    [....]

    TEMPLATE;

    tpl_global.php
    PHP-Code:
    function footer() {
    global 
    $newsboard;
    return <<<TEMPLATE
    </div>
    </div>
    </div>
    <div id="epo-foot">
    <div id="epo-footcontent">
    <span class="footleft">Last Update: 05/03/2010</span>

    [...]

    </html>

    TEMPLATE;

    (In den jeweiligen Templates sind schon Sachen von mir drin. Standardmäßig sind diese leer)

    Danke für jede Hilfe im Voraus!!!


  • #2
    Du kannst alle Ausgaben die PHP, also auch die eingebundenen Dateien machen, mit ob_start() etc. abfangen. Siehe Manual auf php.net.
    You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

    Kommentar


    • #3
      Bitte markier doch mal im Code, wor Du Dir was vorstellst. Kann gerade nicht ganz folgen.

      @chorn: Nicht immer gleich die große Buffer-Keule auspacken. Das sollte man wirklich für den Notfall aufheben.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Ich habe das so verstanden, dass er die Templates + weiteren Code in eine Datei auslagern und als String zurückgeben möchte. Was spricht dabei gegen den Outputbuffer? Auf was bezogen ist der Outputbuffer eine Keule? Habe das von dir in anderen Threads als Tipp gesehen.
        You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

        Kommentar


        • #5
          Er hat doch returns. Da braucht normalerweise keinen OB.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zunächst einmal vielen Dank für die Antworten!

            Zitat von nikosch Beitrag anzeigen
            Bitte markier doch mal im Code, wor Du Dir was vorstellst. Kann gerade nicht ganz folgen.
            Vielleicht hilft es, wenn ich grundsätzlich zeige, worauf ich hinaus möchte. Normalerweise füge ich für den Header und Footer folgendes ein:

            Header
            PHP-Code:
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
            <html>
            <head>
            <title>XYZ</title>
            <!--[if !IE]><!--><link rel="stylesheet" type="text/css" href="../epo2010.css"><!--<![endif]-->
            <!--[if IE 8]><link rel="stylesheet" type="text/css" href="../epo2010.css"><![endif]-->
            <!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="../epo2010ie7.css"><![endif]-->
            <link rel="stylesheet" type="text/css" href="../html/style.css">
            <link rel="stylesheet" type="text/css" href="../html/site.css">
            </head>
            <body style="margin: 0px;">
                <div id="wrapper">
            <?php include ("../header/header.html"); ?>
            <div id="epo-content">
            <?php include ("../navi/navi_xyz.html"); ?>
            <div id="epo-main">
            Footer
            PHP-Code:
                </div>
            </div>
            <?php include ("../footer/footer.html"); ?>
            </div>
            [Bevor irgendwelche Fragen entstehen: Ich habe html Dateien mit integrieten php includes, die ich per htaccess auch durch den PHP Parser schicke.]

            Wenn ich die Codezeilen aber innerhalb des returns eingebe, dann werden meine include nicht geparst und bleiben 1:1 im Quelltext stehen.

            Allerdings scheint das ganze Skript ein wenig buggy zu sein. Ich habe nämlich in der Zwischenzeit, wie oben bereits angedeutet, versucht das Ganze per echo zu lösen, wie es auch in anderen Skripten, die ich verwende, der Fall ist. Diese Variante klappt soweit alles taucht dann der Footer aufeinmal zwischen Header und Haupttext auf, was das ganze Layout zerstört Aber gut, dies wäre schon eine andere/die nächste Baustelle.

            Gibt es eine Möglichkeit den oben angefügten Code innerhalb des return einzufügen? Darüberhinaus bin ich natürlich auch für Alternativen offen.

            Kommentar


            • #7
              Und die Boxen inkludierst Du jetzt auch nochmal? Inkludierst also Code, der Code (als HTML getarnt) inkludiert? Warum so umständlich?
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Nicht ganz Den zuletzt geposteten Code würde ich nicht includen sondern so wie er da steht in die entsprechenden Funktionen (Header / Footer) schreiben. Mit dem HTML Code-Teil ist dies auch kein Problem, aber das php include für header.html, navi.html und footer.html wird dann anscheinend nicht geparst.

                Wäre es vielleicht noch eine Möglichkeit die drei HTML Dateien in Variablen einzulesen und dann an der entsprechenden Stelle - zwischen den DIV Containern - einzufügen?

                Kommentar


                • #9
                  Ja, dann bleibt wirklich nur der Weg über den Output buffer. [MAN]ob_start[/MAN]
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Okay, dann werde ich versuchen es über diese Funktion zu realiseren

                    Kommentar

                    Lädt...
                    X