PHP-Mambo-Shop (index.php) in andere .php-Seite integrieren!?

altox-de

Erfahrenes Mitglied
index.php in andere .php-Seite integrieren!? (Mambo Online-Shop)!? HILFE?!

Hallo zusammen!
Ich möchte folgende Seite

http://www.sws-media.de/kunden/laguna-lindau/shop/index.php

in diese .php-Seite einbinden:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		<meta name="generator" content="sws-media">
		<title></title>
	</head>

	<body bgcolor="#001348" marginheight="20" topmargin="20">
		<table width="93%" border="0" cellspacing="0" cellpadding="0" align="center">
			<tr height="10">
				<td width="94%" height="10"></td>
			</tr>
			<tr height="115">
				<td width="94%" height="115"><? include("oben.php") ?></td>
			</tr>
			<tr>
				<td width="94%">
					<table width="100%" border="0" cellspacing="0" cellpadding="0" height="40">
						<tr height="10">
							<td bgcolor="#093db6" width="5" height="10"></td>
							<td colspan="2" align="left" valign="bottom" bgcolor="#093db6" height="10">
								<table width="100%" border="0" cellspacing="0" cellpadding="0" height="10">
									<tr height="10">
										<td align="right" bgcolor="#093db6" width="4" height="10"><img src="../bilder/leiste-l.gif" alt="" height="10" width="4" border="0"></td>
										<td colspan="2" align="left" valign="bottom" bgcolor="#093db6" height="10" background="../bilder/leiste.gif"></td>
										<td bgcolor="#093db6" width="4" height="10"><img src="../bilder/leiste-r.gif" alt="" height="10" width="4" border="0"></td>
									</tr>
								</table>
							</td>
							<td bgcolor="#093db6" width="5" height="10"></td>
						</tr>
						<tr height="350">
							<td bgcolor="#093db6" width="5" height="350"></td>
							<td colspan="2" align="left" valign="top" bgcolor="#789bff" height="350"><font face="Arial"><b>&nbsp;</b></font><? include("../shop/index.php") ?></td>
							<td bgcolor="#093db6" width="5" height="350"></td>
						</tr>
					</table>
				</td>
			</tr>
			<tr height="10">
				<td bgcolor="#093db6" width="94%" height="10">
					<table width="100%" border="0" cellspacing="0" cellpadding="0" height="10">
						<tr height="10">
							<td align="right" bgcolor="#093db6" width="9" height="10"><img src="../bilder/leisteu-l.gif" alt="" height="10" width="4" border="0"></td>
							<td colspan="2" align="left" valign="bottom" bgcolor="#093db6" height="10" background="../bilder/leisteu.gif"></td>
							<td bgcolor="#093db6" width="9" height="10"><img src="../bilder/leisteu-r.gif" alt="" height="10" width="4" border="0"></td>
						</tr>
					</table>
				</td>
			</tr>
			<tr height="20">
				<td width="94%" height="20">
					<table width="100%" border="0" cellspacing="0" cellpadding="0" height="20">
						<tr height="20">
							<td bgcolor="#093db6" width="9" height="20"><img src="../bilder/leisteuu-l.gif" alt="" height="20" width="9" border="0"></td>
							<td colspan="2" align="left" valign="bottom" bgcolor="#093db6" height="20" background="../bilder/leisteuu.gif"></td>
							<td bgcolor="#093db6" width="9" height="20"><img src="../bilder/leisteuu-r.gif" alt="" height="20" width="9" border="0"></td>
						</tr>
					</table>
				</td>
			</tr>
		</table>
	</body>
</html>

Wie ihr seht, habe ich das mit <? include("../shop/index.php") ?> schon probiert,
es erscheint aber immer ne Fehlermeldung, wie ihr hier erkennen könnt:

http://www.sws-media.de/kunden/laguna-lindau/seiten/onlineshop.php


Und das hier ist der php-Code der einzubindenden Mambo-Online-Shop-index.php:

PHP:
<?php
/**
* @version $Id: index.php,v 1.41 2004/09/23 23:09:23 rcastley Exp $
* @package Mambo_4.5.1
* @copyright (C) 2000 - 2004 Miro International Pty Ltd
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* Mambo is Free Software
*/

/** Set flag that this is a parent file */
define( '_VALID_MOS', 1 );

include_once( 'globals.php' );
require_once( 'configuration.php' );

// displays offline page
if ( $mosConfig_offline == 1 ){
	include( 'offline.php' );
	exit();
}

require_once( 'includes/mambo.php' );
if (file_exists( 'components/com_sef/sef.php' )) {
	require_once( 'components/com_sef/sef.php' );
} else {
	require_once( 'includes/sef.php' );
}
require_once( 'includes/frontend.php' );

if (file_exists( 'installation/index.php' )) {
	include ('offline.php');
	exit();
}

/** retrieve some expected url (or form) arguments */
$option = trim( strtolower( mosGetParam( $_REQUEST, 'option' ) ) );
$Itemid = intval( mosGetParam( $_REQUEST, 'Itemid', null ) );
$database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix );
$database->debug( $mosConfig_debug );
$acl = new gacl_api();

if ($option == '') {
	if ($Itemid) {
		$query = "SELECT id, link"
		. "\n FROM #__menu"
		. "\n WHERE menutype='mainmenu'"
		. "\n AND id = '$Itemid'"
		. "\n AND published = '1'"
		;
		$database->setQuery( $query );
	} else {
		$query = "SELECT id, link"
		. "\n FROM #__menu"
		. "\n WHERE menutype='mainmenu' AND published='1'"
		. "\n ORDER BY parent, ordering LIMIT 1"
		;
		$database->setQuery( $query );
	}
	$menu = new mosMenu( $database );
	if ($database->loadObject( $menu )) {
		$Itemid = $menu->id;
	}
	$link = $menu->link;
	if (($pos = strpos( $link, '?' )) !== false) {
		$link = substr( $link, $pos+1 ). '&Itemid='.$Itemid;
	}
	parse_str( $link, $temp );
	/** this is a patch, need to rework when globals are handled better */
	foreach ($temp as $k=>$v) {
		$GLOBALS[$k] = $v;
		$_REQUEST[$k] = $v;
		if ($k == 'option') {
			$option = $v;
		}
	}
}

/** do we have a valid Itemid yet */
if ( $Itemid === null ) {
	/** Nope, just use the homepage then. */
	$query = "SELECT id"
	. "\n FROM #__menu"
	. "\n WHERE menutype='mainmenu'"
	. "\n AND published='1'"
	. "\n ORDER BY parent, ordering"
	. "\n LIMIT 1"
	;
	$database->setQuery( $query );
	$Itemid = $database->loadResult();
}

/** patch to lessen the impact on templates */
if ($option == 'search') {
	$option = 'com_search';
}

/** mainframe is an API workhorse, lots of 'core' interaction routines */
$mainframe = new mosMainFrame( $database, $option, '.' );
$mainframe->initSession();

// loads english language file by default
if ( $mosConfig_lang == '' ) {
	$mosConfig_lang = 'english';
}
include_once ( 'language/'.$mosConfig_lang.'.php' );

// frontend login & logout controls
$return = mosGetParam( $_REQUEST, 'return', NULL );
$message = mosGetParam( $_POST, 'message', 0 );
if ($option == "login") {
	$mainframe->login();

	// JS Popup message
	if ( $message ) {
		?>
		<script> 
		<!--//
		alert( "<?php echo _LOGIN_SUCCESS; ?>" ); 
		//-->
		</script>
		<?php
	}

	if ($return) {
		mosRedirect( $return );
	} else {
		mosRedirect( 'index.php' );
	}

} else if ($option == "logout") {
	$mainframe->logout();

	// JS Popup message
	if ( $message ) {
		?>
		<script> 
		<!--//
		alert( "<?php echo _LOGOUT_SUCCESS; ?>" ); 
		//-->
		</script>
		<?php
	}

	if ($return) {
		mosRedirect( $return );
	} else {
		mosRedirect( 'index.php' );
	}
}

/** get the information about the current user from the sessions table */
$my = $mainframe->getUser();

/** detect first visit */
$mainframe->detect();

$gid = intval( $my->gid );

// gets template for page
$cur_template = $mainframe->getTemplate();
/** temp fix - this feature is currently disabled */

/** @global A places to store information from processing of the component */
$_MOS_OPTION = array();

// precapture the output of the component
require_once( $mosConfig_absolute_path . '/editor/editor.php' );

ob_start();
if ($path = $mainframe->getPath( 'front' )) {
	$task = mosGetParam( $_REQUEST, 'task', '' );
	$ret = mosMenuCheck( $Itemid, $option, $task, $gid );
	if ($ret) {
		require_once( $path );
	} else {
		mosNotAuth();
	}
} else {
	echo _NOT_EXIST;
}
$_MOS_OPTION['buffer'] = ob_get_contents();
ob_end_clean();

initGzip();

header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
header( "P3P: CP=CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE");

// loads template file
if ( !file_exists( 'templates/'. $cur_template .'/index.php' ) ) {
	echo _TEMPLATE_WARN . $cur_template;
} else {
	require_once( 'templates/'. $cur_template .'/index.php' );
	echo "<!-- ".time()." -->";
}

// displays queries performed for page
if ($mosConfig_debug) {
	echo $database->_ticker . ' queries executed';
	echo '<pre>';
 	foreach ($database->_log as $k=>$sql) {
 	    echo $k+1 . "\n" . $sql . '<hr />';
	}
}

doGzip();
?>


Könnt ihr mir helfen,
was mache ich falsch?!

Liebe Grüße
 
Zuletzt bearbeitet:
altox-de hat gesagt.:
Könnt ihr mir helfen, was mache ich falsch?!
Den gleichen Fehler den viele Anfänger machen :)
Man kann nicht einfach eine komplexere PHP-Seite inkludieren ohne die Pfade entsprechend abzuändern !!
Wenn Du die Datei inkludierst, mußt du auch die Pfade entsprechend anpassen. Der Fehler besagt nämlich genau das: »Wie, wo sind die Dateien die ich öffnen soll?«
 
Hallo!
Welche Verzeichnisse muss ich denn ändern?
In der index.php des Online-Shops? Ne, die haben sich ja nicht verändert...
 
tag
falls sich deine auszufuehrende Seite im selben Ordner befindet wie die zu includierende, dann muss das ding so aussehen "./meineeinzubindende.php"

Meintest du vielleicht
include("./shop/index.php") anstelle von
include("../shop/index.php")

dies besagt naehmlich, dass du eine Seite aufrufen moechtest, die vom uebergeordnetem ordner aus, im ordner "shop" sich befindet... ausserdem kann es manchmal zu problemen kommen, wenn ".." vorkommt... dabei muss dann die Ordnerfreigabe/Leserechzeug dem entsprechend eingestellt werden... fuer gewoehnlich hat man von den hoeheren Daten zugriff auf die unteren Verzeichnisse, und nicht umgekehrt... soweit ich weiss...:rolleyes:
 
Hallo Leute,
es hat geklappt

Ich habe die onlineshop.php (die Seite, in die der Shop includiert wird)
in den gleichen Ordner wie die Onlineshop-index-Datei getan.
Dann noch alle Rechte auf 777 und es funktioniert ;-))

Allerdings tut sich jetzt ein neues Problem auf, wie ihr auf
http://www.laguna-lindau.com sehen könnt: Wenn ich unter "Onlineshop"
den Shop aufrufe, wird er korrekt eingebunden, jedoch wenn ich auf
einen Link im Shop klicke, z.B: "Alle Produkte anzeigen", geht
die Einbindung verloren und es wird nur noch der Shop angezeigt.

Wie stelle ich ein, dass die Includierung erhalten bleiben soll?
Ich denke, das muss irgendwie in mambo geschehen, oder

Viele Grüße,
Claudi
 
altox-de hat gesagt.:
Wenn ich unter "Onlineshop" den Shop aufrufe, wird er korrekt eingebunden, jedoch wenn ich auf einen Link im Shop klicke, z.B: "Alle Produkte anzeigen", geht die Einbindung verloren und es wird nur noch der Shop angezeigt.
Wie stelle ich ein, dass die Includierung erhalten bleiben soll?
Ich denke, das muss irgendwie in mambo geschehen, oder

Nein, hier greift genau mein erster Post. Zusätzlich bekommst Du noch
Cannot modify header information
Warnungen.
Die fehlerhafte Inkludierung repariert man nicht in Mambo, sondern indem man den Shop umschreibt, wie ich schon erwähnt habe. Und zwar benötigen alle im Shop generierten Links eine Korrektur.

Gibt es denn den Shop nicht als Mambo-Plugin? Wenn sich nämlich schon jemand die Mühe gemacht hat das zu basteln, dann hast Du Glück!

Oder Du bindest den Shop per IFRAME in die Seite ein. Dann fällt der ganze Aufwand mit dem Umschreiben der Scripte weg.
 
Hallo,
ja, das ist ja der einzige Grund, aus dem ich Mambo verwende...
Ich brauche ja nur den Shop und die dazugehörige Admin-Oberfläche...

Aber das Problem besteht ja trotzdem, auch nachdem es das aus PlugIn gibt, oder?
 
altox-de hat gesagt.:
Aber das Problem besteht ja trotzdem, auch nachdem es das aus PlugIn gibt, oder?
Nein, Plugins für Mambo (oder jegliches ähnliche System) sind angepasste Versionen der Scripte. Da setzt sich jemand dran und schreibt den Shop um, damit es funktioniert. Und wer davon keinen Schimmer hat, muss sich nicht damit herumschlagen. :-)

Schau mal hier ob Du etwas passendes findest:
http://mamboforge.net/softwaremap/trove_list.php?form_cat=348


Aber dieser Fehler unterläuft Anfängern fast immer. In den PHP-Anwendungen stehen feste Pfade und Befehle die Headerinformationen mit dem Browser austauschen. Wenn man etwas inkludiert ist es möglich das sich Pfade ändern und/oder der Header bereits gesendet wurde.

Ich weiß nicht wie man einfach darauf kommt das man nur das »magische« PHP include() oder require() nehmen muss und man alles externe einbinden kann. :-)

Mal ein Beispiel WARUM es Probleme geben kann:
Dateiname: »pillepalle.php«
<?php
echo $_GET["schalter"]."<br>\n";
$link1 = "pillepalle.php?schalter=1";
$link2 = "pillepalle.php?schalter=2";
$link3 = "pillepalle.php?schalter=3";
echo $link1."<br>\n";
echo $link2."<br>\n";
echo $link3."<br>\n";
?>

Wenn man jetzt die »pillepalle.php« in »brummbrumm.php« includieren würde, hätte man ein Problem, weil ich im Script fest »pillepalle.php« angegeben habe.
PHP:
<?php
include ("pillepalle.php");
?>
Inkludieren heißt: Script pillepalle.php wird in brummbrumm.php ausgeführt. Die Links, die vorher super funktionierten, werden versuchen pillepalle.php aufzurufen, obwohl ich die in brummbrumm.php haben möchte.

Soweit verständlich? ;-]
 
Zuletzt bearbeitet:
Zurück