Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Mein erstes Plugin - Probleme
#21
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.
Zitieren
#22
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
Zitieren
#23
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".
Zitieren
#24
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
Zitieren
#25
PHP-Code:
//Plugin Code
function portalbirthday ()
{
eval(
"\$portalbirthday .= \"".$templates->get("portalbirthday")."\";");


Hänge das vor ?> an die Datei ran.
Zitieren
#26
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
Zitieren
#27
Füge das vor der Zeile ein:
PHP-Code:
global $templates
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#28
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
Zitieren
#29
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")
{
...

Zitieren
#30
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
Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  erstes Posting soll oben stehen bleiben im Thread Bogus 3 699 22.07.2011, 14:54
Letzter Beitrag: dnlwgnr