Seite 1 von 2

gemeinsamer header für phpbb und andere bereiche

Verfasst: 25.09.2005 12:49
von bobnunne
hallo,

ich würde gerne den header des phpbb, also dem menü des subsilverheaders incl. des logos, auch für andere, nicht phpbb bezogene inhalte nutzen bzw. einbinden. besonders meine 4images galerie soll diesen header bekommen, damit alle bereiche einheitlich aussehen.
da ich in php nicht so bewandert bin wäre es großartig wenn mir jemand mit einem beispiel code eine anregung geben könnte wie soetwas zu realisieren wäre, vieleicht anhand meine 4homepages galerie.

link zu meinem board: http://www.nunne-design.de/forum
link zu meiner galerie: http://www.nunne-design.de/4images/index.php

Verfasst: 25.09.2005 13:35
von fanrpg
Damit kann man den phpBB Header bequem nutzen:

KB:phpbb_seite

Verfasst: 25.09.2005 13:43
von bobnunne
damit bin ich gerade am werke, nur leider funktioniert es irgendwie noch nicht so richtig. ich bekomme leider nur fehler meldungen.

ich versuche das php konstrukt um den html header code herumzubauen.

zur zeit siehts so aus:

Code: Alles auswählen

<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = 'http://www.nunne-design.de/forum/template/subSilver/overal_header.tpl';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Meine Seite';
include($phpbb_root_path . 'http://www.nunne-design.de/forum/includes/page_header.'.$phpEx); 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="{direction}">
<head>
<title>{site_name}</title>
<meta http-equiv="content-type" content="text/html; charset={charset}" />
<link rel="stylesheet" href="{template_url}/style.css" />
<script language="javascript" type="text/javascript">
<!--
  function opendetailwindow() { 
    window.open('','detailwindow','toolbar=no,scrollbars=yes,resizable=no,width=680,height=480');
  }
  
  function right(e) {
    if (navigator.appName == 'Netscape' && (e.which == 2 || e.which == 3)) {
      alert("© Copyright by {site_name}");
      return false;
    }
    else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button==2 || event.button == 3)) {
      alert("© Copyright by {site_name}");
      return false;
    }
    return true;
  }
  document.onmousedown=right;
  if (document.layers) window.captureEvents(Event.MOUSEDOWN);
  window.onmousedown=right;
// -->
</script>
</head>
<body bgcolor="#FFFFFF" text="#0F5475" link="#0F5475" vlink="#0F5475" alink="#0F5475">
<br />
//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'http://www.nunne-design.de/forum/'includes/page_tail.'.$phpEx);
?>

Verfasst: 25.09.2005 14:10
von fanrpg

Code: Alles auswählen

$phpbb_root_path = 'http://www.nunne-design.de/forum/template/subSilver/overal_header.tpl';
das muss so aussehen:

Code: Alles auswählen

$phpbb_root_path = 'http://www.nunne-design.de/forum/';

Verfasst: 25.09.2005 15:02
von bobnunne
vielen dank schonmal für deine antwort!
leider läuft es immer noch.

ich hab den code jetzt folgendermassen abgeändert:

Code: Alles auswählen

<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = 'http://www.nunne-design.de/forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Meine Seite';
include($phpbb_root_path . 'http://www.nunne-design.de/forum/'); 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="{direction}">
<head>
<title>{site_name}</title>
<meta http-equiv="content-type" content="text/html; charset={charset}" />
<link rel="stylesheet" href="{template_url}/style.css" />
<script language="javascript" type="text/javascript">
<!--
  function opendetailwindow() { 
    window.open('','detailwindow','toolbar=no,scrollbars=yes,resizable=no,width=680,height=480');
  }
  
  function right(e) {
    if (navigator.appName == 'Netscape' && (e.which == 2 || e.which == 3)) {
      alert("© Copyright by {site_name}");
      return false;
    }
    else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button==2 || event.button == 3)) {
      alert("© Copyright by {site_name}");
      return false;
    }
    return true;
  }
  document.onmousedown=right;
  if (document.layers) window.captureEvents(Event.MOUSEDOWN);
  window.onmousedown=right;
// -->
</script>
</head>
<body bgcolor="#FFFFFF" text="#0F5475" link="#0F5475" vlink="#0F5475" alink="#0F5475">
<br />
//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'http://www.nunne-design.de/forum/.'.$phpEx);
?>
folgender fehler wird ausgegeben:

Parse error: parse error, unexpected '<' in /www/htdocs/w0058a8d/forum/4images/includes/template.php(101) : eval()'d code on line 18

ausserdem wird das ganze design ziemlich zerstückelt ausgegeben, hier zu sehen: http://www.nunne-design.de/4images/index.php

hier der quelltext der 4images template.php

Code: Alles auswählen

<?php
/**************************************************************************
 *                                                                        *
 *    4images - A Web Based Image Gallery Management System               *
 *    ----------------------------------------------------------------    *
 *                                                                        *
 *             File: template.php                                         *
 *        Copyright: (C) 2002 Jan Sorgalla                                *
 *            Email: jan@4homepages.de                                    *
 *              Web: http://www.4homepages.de                             *
 *    Scriptversion: 1.7.1                                                *
 *                                                                        *
 *    Never released without support from: Nicky (http://www.nicky.net)   *
 *                                                                        *
 **************************************************************************
 *                                                                        *
 *    Dieses Script ist KEINE Freeware. Bitte lesen Sie die Lizenz-       *
 *    bedingungen (Lizenz.txt) für weitere Informationen.                 *
 *    ---------------------------------------------------------------     *
 *    This script is NOT freeware! Please read the Copyright Notice       *
 *    (Licence.txt) for further information.                              *
 *                                                                        *
 *************************************************************************/
if (!defined('ROOT_PATH')) {
  die("Security violation");
}

class Template {

  var $no_error = 0;
  var $val_cache = array();
  var $missing_val_cache = array();
  var $template_cache = array();
  var $template_path;
  var $template_extension = "html";
  var $start = "{";
  var $end = "}";

  function Template($template_path = "") {
    if (!@is_dir($template_path)) {
      $this->error("Couldn't open Template-Pack ".$template_path, 1);
    }
    $this->template_path = $template_path;
  }

  function register_vars($var_name, $value = "") {
    if (!is_array($var_name)) {
      $this->val_cache[$var_name] = $value;
    }
    else {
      $this->val_cache = array_merge($this->val_cache, $var_name);
    }
  }

  function un_register_vars($var_list) {
    $vars = explode(",", $var_list);
    foreach ($vars as $val) {
      unset($this->val_cache[trim($val)]);
    }
  }

  function cache_templates($template_list) {
    $template_list = explode(",", $template_list);
    foreach ($template_list as $val) {
      $val = trim($val);
      if (!isset($this->template_cache[$val])) {
        $this->get_template($val);
      }
    }
  }

  function get_template($template) {
    if (!isset($this->template_cache[$template])) {
      $path = $this->template_path."/".$template.".".$this->template_extension;
      $line = @implode("", @file($path));
      if (empty($line)) {
        $this->error("Couldn't open Template ".$path, 1);
      }

      if (defined('EXEC_PHP_CODE') && EXEC_PHP_CODE == 0) {
        $line = preg_replace("/<[\?|%]+(php|=)?(.*)[\?|%]+>/siU", "", $line);
        $line = preg_replace("/<script\s+language\s?=\s?[\"|']?php[\"|']?>(.*)<\/script>/siU", "", $line);
      }

      $line = $this->compile_template($line);

      $this->template_cache[$template] = $line;
    }
    return $this->template_cache[$template];
  }

  function parse_template($template) {
    $template = $this->get_template($template);

    // Don't show error notices
    $old = error_reporting(E_ALL ^ E_NOTICE);

    extract($this->val_cache);
    ob_start();
    //echo $template;
    eval("?>".$template."<?php return 1;");

    $str = ob_get_contents();
    ob_end_clean();

    // Reset error_reporting
    error_reporting($old);

    return $str;
  }

  function compile_template($template)
  {
    // Compile variables in PHP code
    preg_match_all(
        "/<[\?|%]+(php|=)?(.*)[\?|%]+>/siU",
        $template,
        $regs,
        PREG_SET_ORDER
    );

    for ($i = 0; isset($regs[$i]); $i++) {
      // Fix single quotes
      $parsed = preg_replace_callback(
        "/=\s*'(.*)".preg_quote($this->start)."([A-Z0-9_]+)".preg_quote($this->end)."(.*)';/Usi",
        array(&$this, '_fix_php_quotes'),
        $regs[$i][0]
      );

      $parsed = preg_replace_callback(
        '='.preg_quote($this->start).'([A-Z0-9_]+)'.preg_quote($this->end).'=Usi',
        array(&$this, '_compile_php_var'),
        $parsed
      );

      $template = str_replace($regs[$i][0], $parsed, $template);
    }

    // Compile variables
    $template = preg_replace_callback(
        '='.preg_quote($this->start).'([A-Z0-9_]+)'.preg_quote($this->end).'=Usi',
        array(&$this, '_compile_var'),
        $template
    );

    // Compile condition tags
    $template = preg_replace_callback(
        '='.preg_quote($this->start).'if\s+([A-Z0-9_]+)'.preg_quote($this->end).'(.*)'.preg_quote($this->start).'endif\s+(\\1+)'.preg_quote($this->end).'=Usi',
        array(&$this, '_compile_condition'),
        $template
    );

    return $template;
  }

  function _compile_php_var(&$matches) {
    return '{$' . trim($matches[1]) . '}';
  }

  function _fix_php_quotes(&$matches) {
    return '= "' . str_replace('"', '\\"', $matches[1])
           . $this->start.$matches[2].$this->end
           . str_replace('"', '\\"', $matches[3]) . '";';
  }

  function _compile_var(&$matches) {
    return '<?php echo $' . trim($matches[1]) . '; ?>';
  }

  function _compile_condition(&$matches) {
    return '<?php if (!empty($' . trim($matches[1]) . ') && $' . trim($matches[1]) . ' != REPLACE_EMPTY): ?>' . $matches[2] . '<?php endif; ?>';
  }

  function parse_array($array) {
    static $keys;

    foreach ($array as $key => $val) {
      if (is_array($val)) {
        $array[$key] = $this->parse_array($val);
      }
      else {
        if (!isset($keys) || count($keys) != count($this->val_cache)) {
          $keys = array_keys($this->val_cache);
          array_walk($keys, array(&$this, '_prepare_key'));
        }

        $array[$key] = str_replace($keys, $this->val_cache, $val);
      }
    }
    return $array;
  }

  function _prepare_key(&$item)
  {
    $item = $this->start.$item.$this->end;
  }

  function print_template($template) {
    print $this->clean_template($template);
  }

  function clean_template($template) {
    $template = preg_replace(
      "/".preg_quote($this->start)."[^".preg_quote($this->end)."\s]+".preg_quote($this->end)."/",
      '',
      $template
    );
    return $template;
  }

  function error($errmsg, $halt = 0) {
    if (!$this->no_error) {
      echo "<br /><font color='#FF0000'><b>Template Error</b></font>: ".$errmsg."<br />";
      if ($halt) {
        exit;
      }
    }
  }
} // end of class
?>
ich weiss nicht so genau wie ich das was verändern soll, der fehler will einfach nicht verschwinden. vieliecht würde sich wer erbarmen und mir bei der fehler behebung helfen? mein ewiger dank wäre sicher!

Verfasst: 25.09.2005 15:46
von webazubi
Bei meinen Versuchen und Anfragen zu dem Thema "Seite ums Forum herumbauen" bin ich jetzt zu folgender unschönen "Lösung" gekommen:

Das Forum liegt im Stammverzeichnis meiner Webseite. Also mit www.xyz.de/index.php kommst Du direkt auf die Forumsstartseite. Alle anderen, nicht-Forumsseiten, werden so eingebunden: Ich habe beispielsweise einen Ordner "Archiv", in dem alte Texte mit einer eigenen HTM bzw. PHP-Index-Seite liegen. Nun lege ich im Stammverzeichnis eine Datei achiv.php (mit der hier bekannten und herunterladbaren php-Generalvorlage) an, die nach Aufruf aus der Forums-Startseite die index.php aus dem Archivordner includiert.
Alle Unterordner haben also ihre Startseite im root!

Nicht schön, aber scheint zu klappen, selbst wenn Du noch Links in die Unterordner-indes.php reinschreibst und noch tiefer in der Ordnerstruktur verweisen willst.

Verfasst: 25.09.2005 17:02
von thompson
du solltest die php tags ordentlich setzen.

vor dem html... gehört ein

Code: Alles auswählen

 
?php>
und vor dem footerteil ein öffnender tag:

Code: Alles auswählen

 <?php 
dann sollte erstmal der php-technische teil korrekt funktionieren.

Verfasst: 25.09.2005 17:06
von fanrpg
thompson hat geschrieben:du solltest die php tags ordentlich setzen.

vor dem html... gehört ein

Code: Alles auswählen

 
?php>
und vor dem footerteil ein öffnender tag:

Code: Alles auswählen

 <?php 
dann sollte erstmal der php-technische teil korrekt funktionieren.
Das würde in parse error's enden :roll:

vor html nach html wenn wieder PHP beginnt oder

Code: Alles auswählen

<?php

Verfasst: 25.09.2005 17:09
von bobnunne
danke :oops: werde ich jetzt mal umsetzen :roll:

Verfasst: 25.09.2005 17:22
von bobnunne
em, ich hoffe ich hab jetzt alles richtig gesetzt, jedenfalls bekomm ich jetzt ne ganz neue fehler meldung. ich hoffe, ich stell mich nicht all zu blöd an :oops:

also der code, mit den phptags:

Code: Alles auswählen

<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = 'http://www.nunne-design.de/forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Meine Seite';
include($phpbb_root_path . 'http://www.nunne-design.de/forum/'); 

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="{direction}">
<head>
<title>{site_name}</title>
<meta http-equiv="content-type" content="text/html; charset={charset}" />
<link rel="stylesheet" href="{template_url}/style.css" />
<script language="javascript" type="text/javascript">
<!--
  function opendetailwindow() { 
    window.open('','detailwindow','toolbar=no,scrollbars=yes,resizable=no,width=680,height=480');
  }
  
  function right(e) {
    if (navigator.appName == 'Netscape' && (e.which == 2 || e.which == 3)) {
      alert("© Copyright by {site_name}");
      return false;
    }
    else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button==2 || event.button == 3)) {
      alert("© Copyright by {site_name}");
      return false;
    }
    return true;
  }
  document.onmousedown=right;
  if (document.layers) window.captureEvents(Event.MOUSEDOWN);
  window.onmousedown=right;
// -->
</script>
</head>
<body bgcolor="#FFFFFF" text="#0F5475" link="#0F5475" vlink="#0F5475" alink="#0F5475">
<br /><?
//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'http://www.nunne-design.de/forum/.'.$phpEx);
?>
die neue fehlermeldung:

Code: Alles auswählen

Hacking attempt
Fatal error: Call to undefined function: session_pagestart() in /www/htdocs/w0058a8d/forum/4images/includes/template.php(101) : eval()'d code on line 10