include einer Template-Datei

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

include einer Template-Datei

Beitrag von mps »

Hallo zusammen,

ich erstelle gerade ein Script für unser Board mit PHP. Ich habe via include erfolgreich simple_header.html und simple_footer.html eingebunden. Ich habe aber folgendes Problem:

Meine Webseite sieht nun in etwa so aus:

Code: Alles auswählen

{META}
test
{CREDIT_LINE}
Das Test stammt von einem weiteren include-Befehl, wo der Inhalt "test" ist.

Wie bekomme ich nun META und CREDIT_LINE, sowie T_STYLESHEET_LINK da hinein bzw. wie kann ich diese Werte bestimmen. Ich habe nicht gerade die Lust dazu, den gesamten Inhalt von index.php dort einzufügen, da das mein gesamtes Wissen sprengt, was dort drinnen ist.

Meine Frage nochmal erläutert:
Wie bekomme ich META etc. mit den waren Befehlen ersetzt?

Vielen Dank euch!

Gruß,
mps
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: include einer Template-Datei

Beitrag von HabNurNeFrage »

Hi,

das umgekehrte Vorgehen wäre wahrscheinlich etwas zielführender, also Deinen PHP-Code in die index.php zu includen.

Schau Dir das hier mal an: https://wiki.phpbb.com/Deutsch:Vorlage_ ... ene_Seiten
Könnte auch ein wenig Licht ins Dunkel bringen.
Um die Variablen zu füllen, musst Du Einiges an PHP-Code vom phpBB mit rein nehmen.

Zur Not verdopple die index.php, benenne die Kopie um und bastel Deinen Code da rein.
Dürfte weniger Aufwand sein als Deine Datei so lange zu bearbeiten, bis die Variablen korrekt befüllt werden.

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

Re: include einer Template-Datei

Beitrag von mps »

Hallo,

danke. Genau das habe ich gesucht :D

Nun habe ich aber ein neues Problem.

Ich habe in die Template-Datei "posting_body.html" über

Code: Alles auswählen

<!-- IF S_INLINE_ATTACHMENT_OPTIONS -->
	<tr>
		<td class="row1"><b class="genmed">{L_ATTACHMENTS}:</b></td>
		<td class="row2"><select name="attachments">{S_INLINE_ATTACHMENT_OPTIONS}</select>&nbsp;<input type="button" class="btnbbcode" accesskey="a" value="{L_PLACE_INLINE}" name="attachinline" <!-- IF S_WYSIWYG_SHOW -->onclick="var form_name = 'postform';var text_name = 'message';attach_form = document.forms[form_name].elements['attachments']; comm._HTML('[attachment=' + attach_form.value + ']', '[/attachment]',attach_form.options[attach_form.selectedIndex].text);"<!-- ELSE -->onclick="attach_form = document.forms[form_name].elements['attachments']; attach_inline(attach_form.value, attach_form.options[attach_form.selectedIndex].text);" onmouseover="helpline('a')" onmouseout="helpline('tip')"<!-- ENDIF --> />
		</td>
	</tr>
<!-- ENDIF -->
folgendes eingefügt:

Code: Alles auswählen

    <?php
if($topic_id == "2")
{
  include ('./styles/subsilver2/template/webcam_add.html');
}

?>
Sprich, ich will, dass eine bestimmte Datei nur beim Verfassen eines bestimmten Themas eingebunden wird. Aber irgendwie sehe ich dann nie was davon... Cache schon mehrmals gelöscht.

Inhalt der webcam_add.html:

Code: Alles auswählen

<tr>
	<td class="row1"><b class="genmed">Webcam einbinden:</b></td>
	<td class="row2"><a target="popup" onclick="window.open('', 'popup', 'width=580,height=360,scrollbars=no, toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10')"href="images/webcams/index.html">Hier geht's zum Popup</a></td>
</tr>
Vielen Dank euch schon mal!

Gruß,
mps
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: include einer Template-Datei

Beitrag von HabNurNeFrage »

Hi,

PHP im Template ist möglich, aber nicht unbedingt zu empfehlen.
Dazu muss im Admin-Bereich zunächst PHP aktiviert werden:

ACP => Server Konfiguration => Sicherheit => Erlaube PHP in Templates => Ja

Danach könnte Dein PHP im Template wie folgt eingebunden werden:

Code: Alles auswählen

<!-- PHP -->
if($topic_id == "2")
{
  include ('./styles/subsilver2/template/webcam_add.html');
}
<!-- ENDPHP --> 
BESSER:

Es funktioniert aber auch viel einfacher:

Füge anstatt Deiner Lösung Folgendes an gleicher Stelle ein:

Code: Alles auswählen

<!-- IF TOPIC_ID == "2" -->
<!-- INCLUDE webcam_add.html -->
<!-- ENDIF --> 
Dazu eventuell auch mal hier rein schauen: https://wiki.phpbb.com/Tutorial.Template_syntax

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

Re: include einer Template-Datei

Beitrag von mps »

Hallo,

nochmal zu Problem 1:

Wenn ich die PHP-Datei so einbinde, und Language, Template und die Variablen anpasse, kommt eine weiße Seite. Quelltext dieser Seite:

nichts

Code der Template-Datei:

Code: Alles auswählen

<!-- INCLUDE simple_header.html -->
    <!-- IF T_WEBCAM == "sat" -->
        <!-- INCLUDE T_IMAGES_PATH/webcams/sat_copy.php -->
    <!-- ELSEIF T_WEBCAM == "atlantica" -->
        <!-- INCLUDE T_IMAGES_PATH/webcams/atlantica_copy.php -->
    <!-- ELSE -->
        <table class="tablebg" width="100%" cellspacing="1">
            <tr>
	           <th>{L_WEBCAM_ERR_HEADER}</th>
            </tr>
            <tr>
	           <td class="row1" align="center"><br /><p class="gen">{L_WEBCAM_ERR_TEXT}</p><br /><p class="{L_WEBCAM_ERR_CLASS}">{L_WEBCAM_ERR_CODE}</p></td>
            </tr>
        </table>
    <!-- ENDIF -->
<!-- INCLUDE simple_footer.html -->
Code der PHP:

Code: Alles auswählen

<?php
/**
*
* @author Original Autor Benutzername autor_email@domain.de - http://webdesign.raphael-priebe.tk
*
* @package {PACKAGENAME}
* @version $Id$
* @copyright (c) 2014 Raphael Priebe
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
// Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Da wir weiter unten noch einen Avatar anzeigen lassen wollen,
// benötigen wir noch die dazu passende Funktion
// die in der Datein includes/functions_display.php vorhanden ist.
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Session auslesen und Benutzer-Informationen laden
$user->session_begin();  // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('webcams'); // Sprachvariablen aus eigener Sprach Datei laden

/*
* Nun folgt erst Dein PHP Code für die neue Seite, also:
* Variablen setzen, Datenbankabfragen, Einfügen und Entfernen von Einträgen usw...
*
* Dies ist nun ein sehr primitives Beispiel.
* Es soll nur veranschaulichen wie es funktioniert.
*
*/
$webcam = $_GET["webcam"];

// Ein typischer Gebrauch um Variablen an das Template zu senden.
$template->assign_vars(array(
    'WEBCAM'    => $webcam,
    'GOOGLE_LOGO'    => $google_logo,
    'MY_AVATAR'        => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
));

/*
 * Nun weisen wir ein paar statische Daten einem Array zu.
 * Alle Sprachvariablen werden normalerweise in der Sprach Datei zugewiesen,
 * dies dient hier nur zur DEMONSTRATION.
 */
$some_array = array(
    array(
        'beispiel'        => 'Nur ein Beispiel 1',
        'demonstration'    => 'Etwas zum zeigen',
    ),
    array(
        'beispiel'        => 'Nur ein Beispiel 1',
        'demonstration'    => 'schon wieder etwas zum zeigen',
    ),
);

/*
 * Standard Beispiel um eine Block Variable fuer das Template zu fuellen.
 * Dies wird Dir ermöglichen einen Block oder ein Array im Template darzustellen
 * Dies ist nützlich um SQL Abfragen aus der Datenbank in das Template zu überführen.
 */
foreach ($some_array as $row)
{
    $template->assign_block_vars('block_name', array(
        'EXAMPLE'        => $row['beispiel'],
        'DEMO'            => $row['demonstration'],
    ));
}

// Seiten Titel, diese Sprach Variable sollte in der Sprach Datei,
// welche weiter oben genannt wurde, definiert sein.
page_header($user->lang['MEIN_TITEL']);

// Defniere nun den Dateinamen Deines Templates welches Du benutzen moechtest.
// Dies ist der Name von Deinem Template welches unter /styles/<style>/templates/ zu finden ist.
$template->set_filenames(array(
    'body' => 'webcams_copy.html',
));

// Script vervollständigen und Seite anzeigen lassen.
page_footer();

?>
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: include einer Template-Datei

Beitrag von HabNurNeFrage »

| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

Re: include einer Template-Datei

Beitrag von mps »

Hallo,

ich habe diesen BOM-Test mal gemacht: Das kam dabei raus:
PHP und HTML Dateien mit UTF-8 BOM


Anzahl der Dateien mit UTF-8 BOM: 0
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7885
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: include einer Template-Datei

Beitrag von Kirk »

Hi
Speichere dir deine Sprachdatei in der Kodierung UTF-8 (ohne BOM) ab und lade sie erneut hoch.
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

Re: include einer Template-Datei

Beitrag von mps »

Hallo,

leider hat sich nichts verändert. Mein Editor sagte schon, dass es eine UTF-8 ohne BOM war und ich habe es dann so nochmal exportiert etc. - nichts

Gruß,
mps
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: include einer Template-Datei

Beitrag von HabNurNeFrage »

Hi,

was sagt der Debug? https://www.phpbb.de/kb/debugmode

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };

Antworten

Zurück zu „[3.0.x] Mod Bastelstube“