Beiträge: 1.939
Themen: 18
Registriert seit: 30.06.2007
MyBB-Version: 1.6.6
Murphy schrieb:Was muss ich einfügen, damit das Plugin auch geladen wird, und angezeigt wird? Es fehlt die Änderung des Templates in bzw. nach Zeile 23 - z. B.:
PHP-Code: require "./inc/adminfunctions_templates.php"; find_replace_templatesets("portal", '#\$stats(\r?)\n#', "\$stats\n\$portalbirthday\n");
In diesem Beispiel wird die Box dann unter den Statistiken angezeigt.
Siehe dir für die Ausgabe von Geburtstagen auch einmal den Bereich PHP-Code: ... // Build the birthdays for to show on the index page. ...
in der Datei "index.php" an.
Beiträge: 1.172
Themen: 78
Registriert seit: 31.12.2006
Mhh. Also mit Deiner genannten Änderung klappt das ganze nicht. Es wird in dem Template der Code nicht hinzugefügt. Es findet ein Fehler statt, und der gesamte Inhalt des Templates "Portal" wird gelöscht.
Wie bildet man diesen Code denn?
Vor welche Zeichen muss ich den Backslash setzen \ ?
Bitte die Suche u. die Doku nutzen.
______________________________
mfg Murphy
Beiträge: 1.939
Themen: 18
Registriert seit: 30.06.2007
MyBB-Version: 1.6.6
Hallo Murphy,
Zitat:Es findet ein Fehler statt, und der gesamte Inhalt des Templates "Portal" wird gelöscht.
Die Änderung stammt aus dem Tutorial und wurde nur angepasst. Welcher Fehlertext wird denn ausgegeben?
Ersetze zunächst bitte
PHP-Code: require "./inc/adminfunctions_templates.php"; find_replace_templatesets("portal", '#\$stats(\r?)\n#', "\$stats\n\$portalbirthday\n");
durch
PHP-Code: require MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("portal", '#'.preg_quote('{$stats}').'#', "{\$stats}\n{\$portalbirthday}");
Zitat:Wie bildet man diesen Code denn?
Gemeint sind die Zeilen 152-186 in der Datei "index.php": PHP-Code: // Build the birthdays for to show on the index page. $bdays = $birthdays = ''; if($mybb->settings['showbirthdays'] != "no") { ... }
Zitat:Vor welche Zeichen muss ich den Backslash setzen \ ?
Den Backslash setzt du jeweils vor Zeichen, die in > " Regulären Ausdrücken" enthalten sein können.
Siehe z. B. auch > " PHP für dich".
Beiträge: 1.172
Themen: 78
Registriert seit: 31.12.2006
Also soweit klappt alles.
Das Template wird erstellt, und in dem Template "Portal" wird $portalbirthday hinzugefügt. Doch wenn ich nun die portal.php aufrufe, wird einfach nur eine Weiße Seite aufgerufen.
Hier der momentane Code:
PHP-Code: <?php /** * Copryright by Murphy 2008, All Rights Reserved */
$plugins->add_hook("portal_start", "portalbirthday");
function portalbirthday_info() { return array( "name" => "Birthday Portal", "description" => "Mit diesem Plugin wird eine Box im Portal hinzugefügt. In der Box werden die heutigen Geburtstage angezeigt.", "website" => "http://mybboard.de/", "author" => "Murphy", "authorsite" => "http://mybboard.de/", "version" => "1.0 Beta", ); } // Plugin aktivieren function portalbirthday_activate() { global $db; require MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("portal", '#'.preg_quote('{$stats}').'#', "{\$stats}\n{\$portalbirthday}");
$portalbirthday_template = array( "title" => 'portalbirthday', "template" => "<table border=\"0\" cellspacing=\"{\$theme[\'borderwidth\']}\" cellpadding=\"{\$theme[\'tablespace\']}\" class=\"tborder\"> <tr> <td class=\"thead\"><strong>Test</strong></td> </tr> <tr> <td class=\"trow1\"> 1 </td> </tr> </table><br />", "sid" => -2, "version" => 120, "status" => '', );
$db->insert_query(TABLE_PREFIX.'templates', $portalbirthday_template); }
// Plugin deaktivieren function portalbirthday_deactivate() { global $db; require MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("portal", "{\$stats}\n{\$portalbirthday}", '#'.preg_quote('{$stats}').'#');
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='portalbirthday'"); }
?>
Bitte die Suche u. die Doku nutzen.
______________________________
mfg Murphy
PHP-Code: //Plugin Code function portalbirthday () { eval("\$portalbirthday .= \"".$templates->get("portalbirthday")."\";"); }
Hänge das vor ?> an die Datei ran.
Beiträge: 1.172
Themen: 78
Registriert seit: 31.12.2006
Nun wird mir folgender Fehler genannt:
Fatal error: Call to a member function get() on a non-object in /usr/export/www/vhosts/funnetwork/hosting/board/inc/plugins/portalbirthday.php on line 62
Bitte die Suche u. die Doku nutzen.
______________________________
mfg Murphy
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Füge das vor der Zeile ein:
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 1.172
Themen: 78
Registriert seit: 31.12.2006
Schuldigung, dass ich soviel Frage. Doch in Sachen Plugin bin ich auf dem Neugebiet. Sobald ich das erste Plugin richtig hinbekomme, stelle ich sicherlich auch nicht mehr soviele Fragen.
Also die portal.php wird nun sauber angezeigt. Es wird ein Template erstellt, und im Template portal wird das neue Template difiniert. Doch leider wird die Box nicht angezeigt.
Zudem erhalte ich beim Deaktivieren des Plugins diese Meldung:
Warning: preg_replace() [function.preg-replace]: Unknown modifier '{' in /usr/export/www/vhosts/funnetwork/hosting/board/inc/adminfunctions_templates.php on line 30
Warning: preg_match() [function.preg-match]: Unknown modifier '{' in /usr/export/www/vhosts/funnetwork/hosting/board/inc/adminfunctions_templates.php on line 46
Bitte die Suche u. die Doku nutzen.
______________________________
mfg Murphy
Beiträge: 1.939
Themen: 18
Registriert seit: 30.06.2007
MyBB-Version: 1.6.6
Zitat:Zudem erhalte ich beim Deaktivieren des Plugins diese Meldung:
Ersetze PHP-Code: // Plugin deaktivieren function portalbirthday_deactivate() { global $db; require MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("portal", "{\$stats}\n{\$portalbirthday}", '#'.preg_quote('{$stats}').'#');
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='portalbirthday'"); }
durch
PHP-Code: // Plugin deaktivieren function portalbirthday_deactivate() { global $db, $templates; require MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("portal", '#\{\$stats\}\\n\{\$portalbirthday\}#', "{\$stats}");
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='portalbirthday'"); }
Zitat:Doch leider wird die Box nicht angezeigt.
Hast du eine/die Funktion "function portalbirthday()" definiert?
Hat einer deiner User heute Geburtstag?
linwinman schrieb:Gemeint sind die Zeilen 152-186 in der Datei "index.php":PHP-Code: // Build the birthdays for to show on the index page. $bdays = $birthdays = ''; if($mybb->settings['showbirthdays'] != "no") { ... }
Beiträge: 1.172
Themen: 78
Registriert seit: 31.12.2006
Die Funktion habe ich so definiert:
PHP-Code: //Plugin Code function portalbirthday () { global $templates; eval("\$portalbirthday .= \"".$templates->get("portalbirthday")."\";"); }
Was auch noch ein Problem ist, dass der Code zwar in das Template "portal" hinzugefügt wird, doch wenn ich das Plugin deaktiviere, bleibt der Code enthalten.
Beim aktivieren:
PHP-Code: find_replace_templatesets("portal", '#'.preg_quote('{$stats}').'#', "{\$stats}\n{\$portalbirthday}");
Beim deaktivieren:
PHP-Code: find_replace_templatesets("portal", "{\$stats}\n{\$portalbirthday}", '#'.preg_quote('{$stats}').'#');
Bitte die Suche u. die Doku nutzen.
______________________________
mfg Murphy
|