MyBB.de Forum

Normale Version: Datei mit PHP-Inhalt includen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
In diesem Thema wurde geschrieben:
(20.05.2016, 18:58)MrBrechreiz schrieb: [ -> ]Öffne die global.php und Suche nach
PHP-Code:
require_once $working_dir.'/inc/init.php'

darunter dies einfügen

PHP-Code:
include 'pfad/dateiname.php'

Nun kannst Du diese Variable

Code:
{$dateiname}

setzen wo Du möchtest.
Hallo, wenn ich wie beschrieben vorgehe, wird mir meine PHP-Datei direkt ganz oben auf der Forumsseite geladen. Fazit: Das "include" funktioniert (nur an der falschen Stelle), die Variable, ob gesetzt oder nicht, hat keine Auswirkung.

Ich würde die "Variable" gerne nach dem Menü Toplinks einfügen. Wie kann ich veranlassen dass meine Datei nicht vorweg durch "include" sondern nur durch die Variable (im Template eingefügt) angezeigt wird?

Vorab Danke für eine Hilfestellung
Das klingt für mich eher so, als würde in der über include eingebundenen Datei der anzuzeigende Code bereits direkt über echo o.ä. ausgegeben, anstatt ihn an die Variable übergeben.
(30.03.2018, 11:04)doylecc schrieb: [ -> ]Das klingt für mich eher so, als würde in der über include eingebundenen Datei der anzuzeigende Code bereits direkt über echo o.ä. ausgegeben, anstatt ihn an die Variable übergeben.
korrekt. In der PHP-datei sind Zeitvariable eingepflegt das zu verschiedenen Zeitpunkten verschiedene Texte ausgegeben werden.

Beispiel timertexte.php:
vom 01.01.2018 - 15:00 Uhr bis 18:00 = Text 1
vom 03.02.2018 - 11:00 Uhr bis 18:00 = Text 2
usw.
somit kann ich im Forum Hinweise anzeigen, da ich zu diesem Zeitpunkt - wegen z.B. Urlaub - das Forum nicht zeitgerecht pflegen kann, aber ein bestimmter Hinweis an die User (z.B. Beginn oder Endzeitpunkt eines Messeevents).

der Befehl
PHP-Code:
<?php
include("timertexte.php");
?>
funktioniert bei myBB nunmal leider nicht. Oder gibt es dafür ein PlugIn damit es funktioniert?
Jetzt mal nur als schematisches Beispiel, wenn du die Datei timertexte.php in dieser Art gestaltest:

PHP-Code:
$timertexte '';

if (
time() >= (Timestamp von  01.01.2018 15:00 Uhr) && time() <= (Timestamp von  01.01.2018 18:00 Uhr)) {
   $timertexte .= 'Text1';
} elseif (
time() >= (Timestamp von  03.02.2018 11:00 Uhr) && time() <= (Timestamp von  03.02.2018 18:00 Uhr)) {
   $timertexte .= 'Text2 ';
} elseif (
nächster Zeitpunkt) {
   $timertexte .= 'Text3';
usw

und sie dann in der global.php wie in dem obigen Zitat einbindest:
PHP-Code:
require_once $working_dir.'/inc/init.php';
include(
"timertexte.php"); 

kannst du die Variable {$timertexte} direkt aus deiner Datei in allen Templates verwenden, wo du den Text haben möchtest.
Hallo doylecc,

zunächst vielen Dank für Dein Engagement.
 
Bin beim Suchen nach einer Lösung bin ich auf dieses PlugIn gestossen, was mit mein Problem löste. Mit dem PlugIn funktionert z.B. die Anweisung
PHP-Code:
<?php include ("timertexte.php"); ?>
problemlos und die Inhalte werden in meinem Fall zeitgerecht dargestellt. Die Datei timertexte.php wird nicht nur im Forum, sondern auch auf der Homepage verwendet, somit brauche ich dieselbe nur einmal pflegen.

Mit vorgenannter Anweisung (an der gewünschten Stelle eingesetzt) zu arbeiten ist es einfacher, verschiedene Dateien/Aktionen da anzuzeigen/auszuführen wo man es gerade möchte bzw. wo es passt.
Nur als Ergänzung, eine weitere Methode ohne ein Plugin zu benötigen wäre, anstatt:
PHP-Code:
require_once $working_dir.'/inc/init.php';
include(
"timertexte.php"); 

den Ausgabepuffer zu verwenden und diesen Code in der global.php zu benutzen, um die Variable zur Verfügung zu haben:
PHP-Code:
require_once $working_dir.'/inc/init.php';
ob_start();
include(
'timertexte.php');
$timertexte ob_get_contents();
ob_end_clean(); 
Danke für die Info,

mit dem von mir nun eingesetzten PlugIn habe ich den Vorteie, dass ich PHP-Dateien nicht nur an jeder beliebigen Stelle mit
PHP-Code:
<?php include("dateiname.php"); ?>
einbinden kann, sondern wahlweise auch die Doppelfunktion "includierte PHP-Datei includiert weitere PHP-Datei" verwenden kann. Eine stetige Anpassung in der global.php entfällt dadurch. Wenn der Zeitbereich in der PHP-Datei beginnt, wird die Datei angezeigt, wenn sie beendet ist, erfolgt keine Anzeige. Einmal im Template (hier: Header) eingefügt und dann muss man immer nur noch via FTP die entsprechende auszuführende Datei bearbeiten. Einfach schnell und gut.

* für zeitgesteuerte sich ändernde Informationstexte
* für zeitgesteuerte Timer
 (zeitgesteuerte PHP-incudlierte inculdiert wieederumg eine PHP-Date mit Counter für ein Event auf.)
Die Doppelfunktion "includierte PHP-Datei includiert weitere PHP-Datei" ist erforderlich, da zwei unterschiedliche Zeitabläufe in einer einzigen PHP-Datei nicht umsetzbar sind.

Für mich stellt sich nur die Frage, warum bei myBB so eine Funktion nicht Standardmässig eingebunden ist. Selbst bei phpBB ist die Funktion mit
PHP-Code:
<!-- INCLUDEPHP dateiname.php --> 
problemlos umsetzbar. Warum nicht bei myBB?

Wäre sicher für viele Anwendungsoptionen angenehmer und daher vorteilhafter wenn man PHP-Dateien auch bei myBB mit Standardaufruf includen könnte anstatt sich mit einem PlugIn (was man nur zufällig findet) behelfen muss. PHP-Dateien einzubinden ist ein standardisiertes Vorgehen.
(01.04.2018, 12:55)Herki schrieb: [ -> ]Danke für die Info,

mit dem von mir nun eingesetzten PlugIn habe ich den Vorteie, dass ich PHP-Dateien nicht nur an jeder beliebigen Stelle mit
PHP-Code:
<?php include("dateiname.php"); ?>
einbinden kann, sondern wahlweise auch die Doppelfunktion "includierte PHP-Datei includiert weitere PHP-Datei" verwenden kann. Eine stetige Anpassung in der global.php entfällt dadurch.

Eine stetige Anpassung wäre auch nicht nötig, wenn solche Aufgaben, wie vorgesehen, von einen Plugin übernommen werden, dafür ist das Pluginsystem nämlich da, um diese stetigen Anpassungen zu vermeiden.  Wink  

(01.04.2018, 12:55)Herki schrieb: [ -> ]Für mich stellt sich nur die Frage, warum bei myBB so eine Funktion nicht Standardmässig eingebunden ist. Selbst bei phpBB ist die Funktion mit
PHP-Code:
<!-- INCLUDEPHP dateiname.php --> 
problemlos umsetzbar. Warum nicht bei myBB?

Ich will jetzt gar nicht erst auf Sicherheitsrisiken hinweisen, die durch die Möglichkeit entstehen, wahllos PHP-Dateien in Templates einzubinden. Ich weiß, einige Template-Systeme (wie Smarty) erlauben das mit Einschränkungen, weisen aber explizit darauf hin, das man das möglichst vermeiden sollte.

(01.04.2018, 12:55)Herki schrieb: [ -> ]PHP-Dateien einzubinden ist ein standardisiertes Vorgehen.

Templatesysteme wurden u.a. entwickelt, um PHP und HTML zu trennen, also PHP-Dateien frei von HTML-Code zu haben und natürlich im Umkehrschluss, Templates frei von PHP-Funktionscode.
Es gibt bessere und sicherere Methoden, um sein Ziel zu erreichen.
Hallo doclecc,

vielen Dank für Deine Ausführungen, man lernt ja gerne dazu.

Nebenbei mal die Frage: Was muss in einer PHP-Datei vorangestellt werden damit dieselbe z.B. im Template "Header" nur im Header auf der index.php angezeigt wird und nicht auch bei z.B. showthread.php (habe ja alle Seiten denselben Header) etc.?

wie z.b.:
PHP-Code:
<?php
define
("IN_MYBB", 1);
?????
?>
wobei statt der ???? die passende Definition eingefügt werden muss.
(01.04.2018, 12:23)doylecc schrieb: [ -> ]Nur als Ergänzung, eine weitere Methode ohne ein Plugin zu benötigen wäre, anstatt:
PHP-Code:
require_once $working_dir.'/inc/init.php';
include(
"timertexte.php"); 

den Ausgabepuffer zu verwenden und diesen Code in der global.php zu benutzen, um die Variable zur Verfügung zu haben:
PHP-Code:
require_once $working_dir.'/inc/init.php';
ob_start();
include(
'timertexte.php');
$timertexte ob_get_contents();
ob_end_clean(); 

Ich habe diesen Code benutzt da ich gerne eine zusätzliche Datei einbinden möchte. Soweit funkioniert auch alles.
Aber leider lässt sich {$chat_online} nicht überall einsetzen. Im footer/header/portal und profil Bereich klappt es soweit. Jedoch da wo ich es gerne hätte,nämlich in den "Wer ist online" Statistik unterhalb der Foren klappt es nicht. Sowie bei der Advanced Sidebox funktioniert es leider auch nicht obwohl man ja den Inhalt der Boxen selber bestimmen kann.

Kann mir da vllt jmd mit Rat zur Seite stehn?
Advand
Seiten: 1 2