garvinhicking wrote:Hi!
"../" ist immer schlecht, die Wrapper sollten im selben Verzeichnis wie Serendipity liegen.
Der Aufruf wäre immer so: s9y ruft das "indexFile" auf (z.b. wrapper.php), der wrapper ruft dein Framework auf (deine content.php), die setzt die ganzen variablen und included the s9y index.php, captured den output und gibt es zurück in den context der content.php. Daher müsstest du auch garkeine URLs umschreiben mit zusätzlichen GET-Variablen, sonder nkönntest die direkt in der wrapper.php setzen, die dann von der content.php ausgewertet werden.
Viele Grüße,
Garvin
Hallo Garvin,
leider komme ich damit noch nicht so richtig klar.
Hier mal der grundsätzliche Aufbau meiner Website:
"content.php" definiert den grundsätzlichen HTML-Aufbau der Webseite an sich.
Diese Datei erzeugt einen Header-Bereich, die Navigation, etc. (jeweils über Funktionen).
Die "content.php"-Datei:
Code: Select all
<?php
error_reporting(E_ALL);
session_start();
include '../script/function_includes.php';
includes();
redirect_to_sub(true);
$page_id = get_page_id();
// BLOG INCLUDIEREN?
if($page_id == '5' OR $GLOBALS['page_id'] == '5'){
$_GET['page_id'] = '5';
$_POST['page_id'] = '5';
include 'blog/include_blog_wrapper.php';
$_REQUEST['page_id'] = '5';
}
$page_id = get_page_id();
$this_file = this_file('0');
$this_page = this_file('1');
$lan = get_lan();
doctype();
?>
<html>
<head>
<?php
title();
meta();
include_css();
include_js();
?>
</head>
<body>
<div class="muster_small"><a name="top"> </a></div>
<div class="hnavi_repeater"> </div>
<div class="projektband_repeater_left_small"> </div>
<div class="projektband_repeater_right_small"> </div>
<div class="all">
<?php
hnavi();
?>
<div class="main_img_container_small">
<div class="main_img_border_edge_left"> </div>
<div class="main_img_border_top"> </div>
<div class="main_img_border_edge_right"> </div>
<div class="clear_small"> </div>
<div class="main_img_border_left"> </div>
<div class="main_img">
<?php
main_img('../img/layout/', '1', '0');
?>
</div>
<div class="main_img_border_right"> </div>
</div>
<div class="content_container_small">
<div class="projektband_small">
<div class="projektband_content_small">
<?php
snavi();
?>
</div>
</div>
<div class="content_small">
<div class="clear" style="height: 45px; line-height: 45px;"> </div>
<div class="div_rel">
<?php
include_content();
?>
<div class="clear"> </div>
<div class="clear"> </div>
</div>
</div>
<div class="footer_container">
<?php
footer();
?>
</div>
</div>
</div>
</body>
</html>
Auf der Webseite soll nun im Bereich wo der eigentliche Inhalt steht der Blog eingebunden werden.
Oben drüber soll weiterhin der Navi-Bereich und der Header-Bereich stehen.
Den Blog wollte ich jetzt (schon allein um eine einigermaßen sinnvolle Struktur zu behalten) in einen Ordner "/blog" setzen.
Grundsätzliche Struktur:
/html/
|------> /blog/
/img/
/script/
...
Die Datei content.php liegt im Ordner "html" (zusammen mit Include-Dateien, die den eigentlichen Inhalt auf die Seite bringen, z.B. "include_5.php", wobei 5 für die ID steht, die per GET-Parameter an die content.php weitergegeben wird. z.B. "content?PHPSID=12345&page_id=5".)
Die "include_5.php"-Datei:
Code: Select all
<?php
if(isset($GLOBALS['content_sc'])){
$sc = $GLOBALS['content_sc'];
echo $sc;
} else {
echo text_infos('blog_nicht_eingebunden');
}
?>
Die Wrapper-Datei (include_blog_wrapper.php) hatte ich jetzt zuerst im gleichen Ordner wie die "include_5.php", also außerhalb des Blog-Ordners. Das funktionierte leider wie im letzten Post beschrieben nicht vollständig. Also habe ich Sie jetzt mal in den Ordner vom Blog verschoben. Leider erhalte ich hier aber genau das gleiche Problem. Ich hab jetzt per preg_replace() dafür gesorgt, dass die GET-Übergabevariable ganz vorne landet.
Leider funktioniert das direkte Überschreiben des $_GET['page_id']-Arrayvalues nicht... nehm ich das raus, springt er auf die Standard-Seite, d.h. diese Information wird nicht an der richtigen Stelle ausgewertet.
Die "include_blog_wrapper.php"-Datei:
Code: Select all
<?php
$sc = '';
$full_path = getcwd();
$full_path_org = $full_path;
$full_path = $full_path."/blog";
$_GET['page_id'] = '5';
$_REQUEST['page_id'] = '5';
if(is_dir($full_path)){
chdir($full_path);
if(is_file('index.php')){
ob_start();
require("index.php");
chdir($full_path_org);
$sc = ob_get_contents();
ob_end_clean();
} else {
echo "Datei nicht vorhanden.\n";
}
if($sc != '' AND is_array($sc) == false){
$delimiter = '#';
$mode = $delimiter."U";
$muster = 'content.php(.*)">';
$muster = $delimiter.$muster.$mode;
$ersetzer = 'content.php\1&'.session_name()."=".session_id()."&page_id=5\">";
$sc = preg_replace($muster, $ersetzer, $sc);
$GLOBALS['content_sc'] = $sc;
} else {
$GLOBALS['content_sc'] = text_infos('blog_leer');
}
connect();
} else {
echo "Dieser Ordner existiert nicht.";
}
?>
Das seltsamste ist ja: Einige Funktionen der Links scheinen zu funktionieren.
z.B. funktioniert die Kommentarfunktion wunderbar. (umgeschriebener Link ist: content.php?/archives/108-Magic-10.html&PHPSESSID=f160a937337b69c3dff7b89a1e712d79&page_id=5")
Was nicht funktioniert ist das Anwählen eines Autors zum Anzeigen aller Beiträge von ihm/ihr (da wird immer der gleiche Author angewählt), die Blätterfunktion und die Kalenderfunktion zum Durchklicken der Monate.
Hast du ne Idee wie ich da weiterkomme?
Die Webseite steht mit eigenem CMS und DB-Integration - sie in den Blog zu integrieren ist also nicht so ohne weiteres machbar. Einzige Möglichkeit wäre eventuell ein IFrame, aber sowas sieht immer gleich mal mies aus und ich vermeide Iframes wo ich kann.
Viele Grüße
Dominik