02.04.2010, 18:07
Hallo,
ich musste gerade feststellen, dass man interne MyCodes nicht so einfach überschreiben kann, indem man einen MyCode erstellt, welcher den selben regulären Ausdruck verwendet.
Beispiel: Ich wollte das dieser MyCode so wirken soll wie ich will:
Dazu habe ich einen MyCode erstellt, welcher wie folgt aussieht:
Regex:
Ersetzung:
Doch leider greift der nicht, da MyBB ihn schon standardmäßig dabei hat (ironischer Weise wird gerade dieser interne MyCode im Editor als Beispiel genannt).
Also habe ich mir mal die Datei inc/class_parser.php angesehen, was da faul ist und wurde auch gleich fündig:
Hierbei werden die beiden Arrays mit den internen und benutzerdefinierten MyCodes miteinander "verschmolzen". Blöderweise genau so herum, dass zuerst der interne MyCode greift (steht weiter vorn im Array) und der eigene MyCode dann nichts mehr findet.
Dreht man das Verschmelzen einfach herum funktioniert es wunderbar:
Wer also interne MyCodes überschreiben will, der sollte einfach die Arrays wie angegeben in der Datei verdrehen. Die Möglichkeiten wären enorm, da man dann z.B. ganz einfach durch einen (oder ein paar mehrere) MyCode ein rel="nofollow" an Links anhängen könnte (was z.B. einige wollen) und interne MyCodes, welche einfach nur nerven:
trickweise außer Kraft setzen kann.
Ich habe das ganze auch als Bug gemeldet: http://dev.mybboard.net/issues/840
Viele Hoffnungen mache ich mir nicht. Vermutlich wird das als Feature angesehen und abgewiesen oder wegen Gründen welche man nicht nachvollziehen kann (http://dev.mybboard.net/issues/779...) herausgefiltert. Aber man weiß ja nie...
ich musste gerade feststellen, dass man interne MyCodes nicht so einfach überschreiben kann, indem man einen MyCode erstellt, welcher den selben regulären Ausdruck verwendet.
Beispiel: Ich wollte das dieser MyCode so wirken soll wie ich will:
Code:
[b]fett[/b]
Dazu habe ich einen MyCode erstellt, welcher wie folgt aussieht:
Regex:
Code:
\[b\](.*?)\[/b\]
Ersetzung:
Code:
<span style="font-weight: bolder; font-size: larger">$1</span>
Doch leider greift der nicht, da MyBB ihn schon standardmäßig dabei hat (ironischer Weise wird gerade dieser interne MyCode im Editor als Beispiel genannt).
Also habe ich mir mal die Datei inc/class_parser.php angesehen, was da faul ist und wurde auch gleich fündig:
Code:
$mycode = array_merge($standard_mycode, $custom_mycode);
Hierbei werden die beiden Arrays mit den internen und benutzerdefinierten MyCodes miteinander "verschmolzen". Blöderweise genau so herum, dass zuerst der interne MyCode greift (steht weiter vorn im Array) und der eigene MyCode dann nichts mehr findet.
Dreht man das Verschmelzen einfach herum funktioniert es wunderbar:
Code:
$mycode = array_merge($custom_mycode, $standard_mycode);
Wer also interne MyCodes überschreiben will, der sollte einfach die Arrays wie angegeben in der Datei verdrehen. Die Möglichkeiten wären enorm, da man dann z.B. ganz einfach durch einen (oder ein paar mehrere) MyCode ein rel="nofollow" an Links anhängen könnte (was z.B. einige wollen) und interne MyCodes, welche einfach nur nerven:
Code:
(c)
Ich habe das ganze auch als Bug gemeldet: http://dev.mybboard.net/issues/840
Viele Hoffnungen mache ich mir nicht. Vermutlich wird das als Feature angesehen und abgewiesen oder wegen Gründen welche man nicht nachvollziehen kann (http://dev.mybboard.net/issues/779...) herausgefiltert. Aber man weiß ja nie...