Plugin Funktionen funktionieren im Header nicht

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Plugin Funktionen funktionieren im Header nicht

Beitrag von RalphW »

Ich habe ein Plugin "data" geschrieben, das Daten aus einer Textdatei ausliest und im Hauptfenster anzeigt.
In einer Datei config.php diese Datei eingestellt. Sollte dort nichts eingetragen sein wird der Datei data_common.php das geprüft und ein Defaultwert gesetzt.
Weiters gibt es in der Datei data_common.php eine Funktion, die den Inhalt aus der Datei ausliest und als Array zurückgibt:

Code: Alles auswählen

$rootPath = dirname(dirname(__DIR__));
require_once($rootPath . '/adm_program/system/common.php');

define('DATA_PATH_PLUGIN', $rootPath . FOLDER_PLUGINS . '/data');
define('DATA_FILE_CSS', DATA_PATH_PLUGIN . '/data.css');

if(file_exists(DATA_PATH_PLUGIN . '/config.php')) 
{
    require_once(DATA_PATH_PLUGIN . '/config.php');
}

if(!isset($plg_data_file))
{
    $plg_data_file = ADMIDIO_PATH . FOLDER_DATA . '/data.txt';
}

function plgReadData()
{
	global $plg_data_file;

	$data = file_get_contents($plg_data_file);
	$dataArray = explode(",", $data);

	return $dataArray;
}
In der eigentlichen Plugin Datei data.php wird diese Datei data_common.php geladen und dann alles rightig abgearbeitet:

Code: Alles auswählen

$rootPath = dirname(dirname(__DIR__));
require_once($rootPath . '/adm_plugins/courts/courts_common.php');

$page = new HtmlPage($headline);
$page->addCssFile(DATA_FILE_CSS);

$dataArray = plgReadData();
$page->addHtml('
	<div class="plgData plgData' . $dataArray[0] .'">' . $dataArray[1] . '</div>
	');

$page->show(); 
Das alles funktioniert wunderbar.
Zusätzlich möchte ich das auch im Header anzeigen, sodass das auf jeder Admidio Seite sichtbar ist.
in my_header.php habe ich oben die folgenden Zeilen eingefügt:

Code: Alles auswählen

<?php
require_once($_SERVER["DOCUMENT_ROOT"] . '/admidio/adm_plugins/data/data_common.php');
?>
<link rel="stylesheet" type="text/css" href="<?php echo DATA_FILE_CSS;?> ">
In my_body_top.php stehen die folgenden Zeilen:

Code: Alles auswählen

		<div style="float:right;" class="hidden-xs">
			<?php $s = plgReadData(); echo '<a href="/admidio/adm_plugins/data/data.php" style="text-decoration:none"><div style="margin:10px; padding-bottom:0px;" class="text-center plgDataHead' . $s[2] . '"><p>' . $s[3] . '</p></div></a>'; ?>	
		</div>
Wenn ich nun das Plugin über /admidio/adm_plugins/data/data.php aufrufe funktioniert die anzeige im Main Body und im Header. Wenn aber eine andere Seite aufgerufen wird wie z.B. die Übersicht (/admidio/adm_program/index.php), dann wir im Header nichts angezeigt. Meine Analysen haben ergeben, dass in diesem Fall die Variable $plg_data_file keinen Inhalt hat, bzw. nicht definiert ist.

Woran kann das liegen. Ich verwende die dieses Admidio Plugin auch auf einer Wordpress Seite (liegt parallel zu /admidio) und zeige dort auch mit der Funktion plgReadData() die Daten an.

Danke für mögliche Tipps und Hinweise.
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Plugin Funktionen funktionieren im Header nicht

Beitrag von XimeX »

Dürfte vermutlich mit dem Problem zusammenhängen: https://github.com/Admidio/admidio/issues/690
Änder mal folgendes:

Code: Alles auswählen

$plg_data_file = ADMIDIO_PATH . FOLDER_DATA . '/data.txt';
// zu
$GLOBALS['plg_data_file'] = ADMIDIO_PATH . FOLDER_DATA . '/data.txt';
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Plugin Funktionen funktionieren im Header nicht

Beitrag von RalphW »

Das hat leider nichts gebracht. :(
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Plugin Funktionen funktionieren im Header nicht

Beitrag von XimeX »

schon mal direkt den pfad angegeben probiert?

Code: Alles auswählen

$data = file_get_contents(ADMIDIO_PATH . FOLDER_DATA . '/data.txt');
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Plugin Funktionen funktionieren im Header nicht

Beitrag von RalphW »

Ja so funktioniert es, wenn ich den ganzen Pfad angebe.

Muss ich vielleicht

Code: Alles auswählen

$data = file_get_contents($GLOBALS['plg_data_file']); 
schreiben?
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Plugin Funktionen funktionieren im Header nicht

Beitrag von XimeX »

Arbeite bitte jetzt mal immer mit $GLOBALS wenn du es als globale variable brauchst. Ich werd wenn ich mal wieder zeit habe eine Klasse dazu schreiben die das alles unterstützen sollte
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Plugin Funktionen funktionieren im Header nicht

Beitrag von RalphW »

Danke, jetzt funktioniert es.
Antworten