Page 1 of 1

eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 6. June 2009 17:47
by macmoldis
Deine Portal Version: 1.0.0RC3
Typ Deines phpBB Forums: Standard phpBB3
MODs installiert: Nein
Dein Wissensstand: Einsteiger

Was hast Du gemacht, bevor das Problem aufgetreten ist?


Was hast Du bereits versucht um das Problem zu lösen?


Fehlerbeschreibung und Nachricht
Hallo miteinander,
ich möchte von einer Bilder-Galerie ein Zufallsbild auf dem Portal einfügen,
habe dafür diese php (hier als *.txt),
welche mir dann diese Ausgabe liefert.

Dies würde ich nun gern als Block auf dem Portal einfügen?
Geht das irgendwie?
Welche Dateien muß ich dafür erstellen, wo wie was ändern ...

Dankeschön schon mal für Ratschläge und Hilfe
macmoldis

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 12:29
by ralf-isi
ich weiss nicht ob meine idee funktioniert, getestet habe ich es auch nicht.
aber ich persönlich für folgendes versuchen und mich überraschen lassen:
- in der portal.php kann ich ersehen wie blöcke eingebunden werden. z.b.

Code: Select all

if ($portal_config['portal_birthdays'])
{
        include($phpbb_root_path . 'portal/block/birthday_list.'.$phpEx);
}
bindet die geburtstagkinder ein. ok hier mit einer if anweisung, ginge sicher auch ohne.
- je nach style sehe ich z.b. in der overall-header.html und overall-fooder.html wie und wo die löcke eingebunden werden.

Code: Select all

        <!-- IF S_DISPLAY_CLOCK -->
        <!-- INCLUDE portal/block/clock.html -->
        <!-- ENDIF -->
als beispiel der block mit der uhr. auch mit IF, weglassen.
- nun brauch ich noch einen block. dazu nehme ich einen bestehenden, kopiere ihn um, stelle den php-code rein und lass mich mal überraschen was passiert.

wie gesagt: 0 ahnung ob das geht - aber versuchen würde ich es mal. :-)

gruss
ralf der bastler

nachtrag:
und ganz sicher das hier noch lesen viewtopic.php?f=21&t=310

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 17:08
by macmoldis
Danke erstmal, besonders für den Nachtrag (den hab ich leider nicht gefunden :oops: )

... ähnliches, einen vorhandenen Block umbasteln hatte ich schon probiert,
aber immer irgendwie die eine oder andere Fehlemeldung bekommen

so, dann werd ich nochmal nach Anleitung anfangen

macmoldis

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 17:32
by Kevin
Includiere die Datei mal in der portal.php, etwa in der Art:

Code: Select all

include($phpbb_root_path . 'galerie/4images/random.'.$phpEx); 
Und schau mal was dir ausgegeben wird.
Je nachdem wo die Datei im Verhältnis zu deinem Forum liegt den Pfad anpassen.
Grundsätzlich kann das aber ein ziemliches Gepopel werden: 4images + phpBB
Das Script ist ja quasi phpBB "fremder Code".

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 20:17
by macmoldis
nachtrag:
und ganz sicher das hier noch lesen viewtopic.php?f=21&t=310
Mit dieser Beschreibung bekomme ich einen Block, ist so einfach zu machen.

Ich kann ihn sehen und "füllen" (mit text und html)
aber ich muß mir trotzdem noch irgendwie überlegen, wie ich diese php da rein bekomme.
Denn diese selbst erstellte "template/portal/block/named yourblock.html" ist nun mal eine html,
funktioniert da ein

Code: Select all

<?php
include("../'galerie/4images/random.php");
?>


statt des

<!-- Add your Code here --> 
Angeszeigt wird nichts, hab mit google verschiedene Möglichkeiten gesehen, wie php innerhalb html funktioniern soll, aber da bin ich wohl auf dem falschen Pfad.

Includiere die Datei mal in der portal.php, etwa in der Art:

Code: Select all

include($phpbb_root_path . 'galerie/4images/random.'.$phpEx); 
Und schau mal was dir ausgegeben wird.
Diesen Gedanken hatte ich anfangs auch mal, bringt mir mehrere Fehlemeldungen

Was ich auch mal ausprobiert hatte, war mal einfach den Text von einer php, beispielsweise mini_cal.php mit der random.php auszutauschen. Brachte mir das gewünschte Bild auf die Seite, aber außerhalb des Portals, sowie auch ein paar Fehlernmeldungen.

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 20:47
by Mike
Du kannst in Templates (also html) auch php includen. Allerdings mit einem Separaten includebefehl:

Code: Select all

<!-- INCLUDEPHP ./pathto/yourphpfile.php -->
Allerdings musst du dann im ACP auch php in den Templates zulassen, und etwas mit dem richtigen Pfad experimentieren.
Es wird allgemein nicht empfohlen das zu aktivieren, da böswillige Styles auch Schadcode in dein Board einschleusen können, aber wenn du das im Griff hast, ist das eine Möglichkeit dein Problem zu lösen ;)

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 21:18
by macmoldis
Mike wrote:Es wird allgemein nicht empfohlen das zu aktivieren, da böswillige Styles auch Schadcode in dein Board einschleusen können, aber wenn du das im Griff hast, ist das eine Möglichkeit dein Problem zu lösen ;)
böswillige Styles?
Dies trifft doch aber eigentlich nur zu, wenn ich andere Styles installiere,
beim jetzigen subsilver2 bzw. prosilver aus sicherere Quelle,
mit Änderungen, von mir selbst geändert, Änderungen aus sichererer Quelle dürfte doch eigentlich (fast) nichts böswilliges möglich sein.

Sehe ich das richtig, oder gibt's da noch andere Mittel und Wege, wo ich mich in Acht nehem müßte?
Allerdings musst du dann im ACP auch php in den Templates zulassen
Hast du's im Kopf wo im ACP, auf den ersten Blickhab ich's nämlich nicht gesehen.

Danke
Dirk macmoldis

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 21:47
by Kevin
macmoldis wrote:
Includiere die Datei mal in der portal.php, etwa in der Art:

Code: Select all

include($phpbb_root_path . 'galerie/4images/random.'.$phpEx); 
Und schau mal was dir ausgegeben wird.
Diesen Gedanken hatte ich anfangs auch mal, bringt mir mehrere Fehlemeldungen
Diese Meldungen wären interessant, um heraus zu bekommen wie man das Script evtl modifizieren müsste um es einbinden zu können. ;)

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 7. June 2009 23:12
by Mike
macmoldis wrote:Hast du's im Kopf wo im ACP, auf den ersten Blickhab ich's nämlich nicht gesehen.
Du findest das unter Allgemein -> Sicherheit -> Erlaube PHP in Templates: ja/nein

Und normalerweise dürfte dir da mit den Styndarttemplates nicht viel passieren. Bei phpfremden Skripten ist es manchmal notwendig sowas zu machen, aber wie gesagt nicht unbedingt ratsam, solange es einen anderen Weg gibt...

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 9. June 2009 15:21
by ralf-isi
hallo zusammen
Mike wrote:Du kannst in Templates (also html) auch php includen. Allerdings mit einem Separaten includebefehl:

Code: Select all

<!-- INCLUDEPHP ./pathto/yourphpfile.php -->
und damit stosse ich auf ein problem (oder bin einfach zu blöd) würde den befehl aber genial finden! deshalb bitte ich um hilfe und nachsicht.

ich habe folgende strucktur:
root
¦-/anzeigen
¦-/board
¦--/normale strucktur von phpBB mit B3P
¦-/links
¦-/links/div unterverzeichnisse
¦-/links/index.php

rufe ich nun meineseite.tld/links/index.php auf funktioniert die sache wie sie muss.

dann habe ich mir einen block gebaut (html (liegt unter xxx/template) php darf ausgeführt werden), schaut so aus:

Code: Select all

<!-- INCLUDE overall_header.html -->
    {$C_BLOCK_H_L}Linkliste{$C_BLOCK_H_R}
        <!-- INCLUDEPHP ../links/index.php -->
    {$C_BLOCK_F_L}{$C_BLOCK_F_R}
<!-- INCLUDE overall_footer.html -->
(will wohl das portal haben (layout, kopf, fuss - ohne boxen links und rechts)
rufe ich nun meineseite.tld/board/linkliste.php auf (linkliste.php hab ich erstellt) so bekomme ich eine fehlermeldung
can not connect to your sql Database usr_web467_7 on host localhost
ja in _7 ist die datenbank für link - phpBB liegt in einer anderen. angezeigt wird nur der header, box-titel (Linkliste) und mehr nicht, auch kein fooder.

ändere ich im block INCLUDEPHP so ab, dass der pfad absichtlich falsch ist:

Code: Select all

<!-- INCLUDEPHP ../../links/index.php -->
wird mir alles angezeigt - nur hat die box kein inhalt und besteht nur aus dem titel.

als iframe geht es - nur passt mir das überhaupt nicht, weil ich eine höhen - angaben machen muss (will ich nicht, denn es soll dynamisch sein).

ende roman. wer kann mir helfen, mich auf den richtigen weg bringen?
schon mal vielen dank und grüsse
ralf

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 9. June 2009 20:32
by Mike
Also ich verstehe jetzt deinen Block nicht ganz.
Wieso includest du den Header und den Footer in den Block? Und die nächste Frage wäre, wo wird dann der Block includet? In der portal_body.php ja wohl kaum, da er sonst ja keinen Header bräuchte...
Ich will jedenfalls darauf hinaus, das du in diese Datei auch die _block_config.html includen musst, umd die Variablen für die Blockheader/footer nutzen zu können.

Re: eigenen neuen Block erstellen und einfügen? php einbauen?

Posted: 9. June 2009 22:02
by ralf-isi
zuerst mal danke - auch wenn deine fragen mich erschüttern.
Mike wrote:Also ich verstehe jetzt deinen Block nicht ganz.
ich verstehe gar nichts - wieso soll ich das verstehen. ok, spass bei seite.
Mike wrote:Wieso includest du den Header und den Footer in den Block?
weil ich den header und den footer brauche. mache ich immer so. im normalfall kommen die blöcke in den ordner portal. den hab ich im ordner template weil der block keinen eigenen text enthält.
Mike wrote: Und die nächste Frage wäre, wo wird dann der Block includet? In der portal_body.php ja wohl kaum, da er sonst ja keinen Header bräuchte...
ähmm - der weg ist hier fertig. den block rufe ich auf über linkliste.php und die liegt unter board. sieht so aus:

Code: Select all

<?php
/**
*
* @package - Board3portal
* @version $Id: portal.php 325 2008-08-17 18:59:40Z kevin74 $
* @copyright (c) kevin / saint ( www.board3.de/ ), (c) Ice, (c) nickvergessen ( www.flying-bits.org/ ), (c) redbull254 ( www.digitalfotografie-foren.de ), (c) Christian_N ( www.phpbb-projekt.de )
* @based on: phpBB3 Portal by Sevdin Filiz, www.phpbb3portal.com
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/


define('IN_PHPBB', true);
define('IN_PORTAL', true);

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';

$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'portal/includes/functions.'.$phpEx);

$portal_config = obtain_portal_config();

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/lang_portal');

$load_center = true;

if ( is_dir( $phpbb_root_path . 'install_portal/' ) === TRUE )
{
        if ( is_file( $phpbb_root_path . 'install_portal/install.'.$phpEx ) === TRUE )
        {
                include $phpbb_root_path . 'install_portal/install.'.$phpEx;

                if ( version_compare( $current_version, $portal_config['portal_version'], '<=' ) === TRUE )
                {
                        $template->assign_vars(array(
                                'S_DISPLAY_GENERAL'        => true,
                                'GEN_TITLE'                                => $user->lang['PORTAL_ERROR'],
                                'GEN_MESSAGE'                        => sprintf( $user->lang['PORTAL_DELETE_DIR'], $phpbb_root_path . 'install_portal' )
                        ));
                }
                else
                {
                        $template->assign_vars(array(
                                'S_DISPLAY_GENERAL'        => true,
                                'GEN_TITLE'                                => $user->lang['PORTAL_UPDATE'],
                                'GEN_MESSAGE'                        => sprintf( $user->lang['PORTAL_UPDATE_TEXT'], $phpbb_root_path . 'install_portal/install.'.$phpEx, $current_version )
                        ));
                }

                $load_center = false;
        }
}

if ( $load_center === TRUE )
{

        if ($portal_config['portal_forum_index'])
        {
                display_forums('');

                $template->assign_vars(array(
                'FORUM_IMG'                                => $user->img('forum_read', 'NO_NEW_POSTS'),
                'FORUM_NEW_IMG'                        => $user->img('forum_unread', 'NEW_POSTS'),
                'FORUM_LOCKED_IMG'                => $user->img('forum_read_locked', 'NO_NEW_POSTS_LOCKED'),
                'FORUM_NEW_LOCKED_IMG'        => $user->img('forum_unread_locked', 'NO_NEW_POSTS_LOCKED'),
                'S_DISPLAY_PORTAL_FORUM_INDEX' => true,

                'U_MARK_FORUMS'                => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'mark=forums') : '',
                'U_MCP'                                => ($auth->acl_get('m_') || $auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=front', true, $user->session_id) : '')
                );
        }

        if ($portal_config['portal_recent'])
        {
                include($phpbb_root_path . 'portal/block/recent.'.$phpEx);
        }

        if ($portal_config['portal_announcements'])
        {
                include($phpbb_root_path . 'portal/block/announcements.'.$phpEx);
                $template->assign_vars(array(
                        'S_ANNOUNCE_COMPACT' => ($portal_config['portal_announcements_style']) ? true : false,
                ));
        }

        if ($portal_config['portal_custom_center'] or $portal_config['portal_custom_small'])
        {
                include($phpbb_root_path . 'portal/block/custom.'.$phpEx);
        }

        if ($config['load_online'] && $config['load_online_time'] && $portal_config['portal_whois_online'])
        {
                include($phpbb_root_path . 'portal/block/whois_online.'.$phpEx);
        }
}


$template->assign_vars(array(
//        'PORTAL_LEFT_COLUMN'         => $portal_config['portal_left_column_width'],
//        'PORTAL_RIGHT_COLUMN'         => $portal_config['portal_right_column_width'],
));

// output page
page_header($user->lang['Linkliste']);

$template->set_filenames(array(
   'body' => 'linkliste.html')
);

page_footer();

?>
nicht schön - aber zweckdienlich
Mike wrote:Ich will jedenfalls darauf hinaus, das du in diese Datei auch die _block_config.html includen musst, umd die Variablen für die Blockheader/footer nutzen zu können.
header und fooder kommen völlig richtig. nur die box ist leer oder zeigt die fehlermelgung.
aber du bringst mich auf eine idee / weg / möglichkeit. ich mache das wie immer mit den seiten die ich ins menü reinstelle. also mit 3 files.

ich teste und berichte - bin aber schon froh um die hilfe. vielen dank.
ralf