Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Erster eigener komplzierter MyCode, nichts geht...
#1
Hallo,
ich habe nun mein erstes Plugin geschrieben, dass einen MyCode erstellen soll. Die Inhalte der MyCodes sollen verarbeitet werden, deshalb Plugin. Aber wie üblich bei meinen ersten Scripten: Nichts funktioniert Big Grin

Der MyCode soll so aussehen:
Code:
[galerie](Link zum Bild),(Link zum nächsten Bild),(Link zum nächsten Bild),...[/galerie]

In einer zweiten Variante soll man noch Text unter die Bilder setzen können:
Code:
[galerie=(Text zum ersten Bild),(Text zum zweiten Bild),....](Link zum Bild),(Link zum nächsten Bild),(Link zum nächsten Bild),...[/galerie]

Das Ganze habe ich so aufgezogen:
PHP-Code:
$plugins->add_hook("parse_message""bfb_parse_message");
function 
bfb_parse_message($message)
{
    
$code['1'] = "!\[galerie\](.*?)\[/galerie\]!";
    
$code['2'] = "!\[galerie=(.*?)\](.*?)\[/galerie\]!";
    
$return preg_replace_callback($code['1'], "bfb_parse_message_replace"$message);
    
$return preg_replace_callback($code['2'], "bfb_parse_message_replace"$message);
    return 
$return;
}

function 
bfb_parse_message_replace($matches)
{
     global 
$templates;
     if(isset(
$matches[2]))
     {
     list(
$code$txt$lnk) = $matches;
    
$link explode(','$lnk);
    
$text explode(','$txt);
    
$list "<table border=\"0\" cellpadding=\"0\" cellspacing=\"25\" align=\"center\" class=\"inhalt\">";
    foreach(
$link as $key => $value)
    {
         if(
$value != "")
         {
        if(
$key != 0)
        {
            
$list .= "<td><img src=\"".$value."\" height=\"130\" width=\"150\" alt=\"Pic\" /><br />".$text[$key]."</td></tr>";
        }
        else
        {
            
$list .= "<tr><td><img src=\"".$value."\" height=\"130\" width=\"150\" alt=\"Pic\" /><br />".$text[$key]."</td>";
        }
        }
    }
    
$lastsigns substr($list"-5");
    if(
$lastsigns == "</td>")
    {
        
$list .= "<td></td></tr></table>";
    }
    elseif(
$lastsigns == "</tr>")
    {
        
$list .= "</table>";
    }
    else
    {
        
$list "The Script was occured by an error. Please call a webmaster!";
    }
    
$inhalt $list;
    eval(
"\$complete = \"".$templates->get("page_standard")."\";");
    return 
$complete;
    }
    else
    {
    list(
$code$lnk) = $matches;
    
$link explode(","$lnk);
    
$list "<table border=\"0\" cellpadding=\"0\" cellspacing=\"25\" align=\"center\" class=\"inhalt\">";
    foreach(
$link as $key => $value)
    {
         if(
$value != "")
         {
        if(
$key != 0)
        {
            
$list .= "<td><img src=\"".$value."\" height=\"130\" width=\"150\" alt=\"Pic\" /></td></tr>";
        }
        else
        {
            
$list .= "<tr><td><img src=\"".$value."\" height=\"130\" width=\"150\" alt=\"Pic\" /></td>";
        }
        }
    }
    
$lastsigns substr($list"-5");
    if(
$lastsigns == "</td>")
    {
        
$list .= "<td></td></tr></table>";
    }
    elseif(
$lastsigns == "</tr>")
    {
        
$list .= "</table>";
    }
    else
    {
        
$list "The Script was occured by an error. Please call a webmaster!";
    }
    
$inhalt $list;
    eval(
"\$complete = \"".$templates->get("page_standard")."\";");
    return 
$complete;
    }

Nun wird aber Leider immer noch
Code:
[galerie](Links)[/galerie]
angezeigt.

Am besten wäre es natürlich, wenn ihr mir den Code richtig umschreibt und mir die Fehler erklärt Big Grin, aber wenn ihr mir mitteilt, was ich alles verändern muss reicht das schon vollkommen Wink.

Ich danke euch schon mal 1000 Mal Smile
[Bild: Nirgendssicher.jpg]
Zitieren
#2
Sorry für den Post, ich habe den Fehler nun selbst gefunden:

PHP-Code:
$return preg_replace_callback($code['1'], "bfb_parse_message_replace"$message);
$return preg_replace_callback($code['2'], "bfb_parse_message_replace"$message);
return 
$return

Es bringt natürlich nichts, wenn ich beides auf return setze.

Lösung:
Nicht nach $code['1'] und $code['2'] getrennt, sonder einfach nur $code eingetragen (Verarbeitung von Arrays möglich) und den Code dann in eine Zeile gepackt.
[Bild: Nirgendssicher.jpg]
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Photo Themenansicht: Erster Beitrag modern, darauffolgende Antworten klassische Ansicht MyBB-Fanatiker 13 3.733 05.02.2015, 00:47
Letzter Beitrag: Arkan
  iShare zeigt nichts an ! derlala 8 2.582 22.12.2010, 11:35
Letzter Beitrag: derlala
  Shoutbox 2.0.1 neuste beiträge auf erster seite ollitsch 6 2.989 27.11.2007, 01:10
Letzter Beitrag: aman