Yo la manera que conozco es accediendo a la base de datos y haciendo unos cambios, te lo explico con un ejemplo:
Si desde el
ACP creas un bbcode, haces estos pasos: ( ejemplo de bbcode center )
Uso de BBCode:
Reemplazo HTML
Línea de ayuda
Cuando miras la tabla
phpbb_bbcodes con tu administrador de base de datos ( generalmente phpmyadmin ) verás estas columnas con estos contenidos:
bbcode_match
bbcode_tpl
first_pass_match
first_pass_replace
Código: Seleccionar todo
'[center:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/center:$uid]'
second_pass_match
Hasta aquí no hay nada especial, es un
bbcode común y corriente, que pasa como parámetro un texto a ser centrado, pero si deseas crear un método php hay que hacer unos cambios en dos columnas:
second_pass_match
Explico, aquí la diferencia importante, si miras el valor anterior, le he quitado mucho código, lo que le quito es un poco de reemplazos, pero lo importante es el final que pasa de
!s
a
!ies
y ahí radica parte de la magia.
second_pass_match
Explico, aquí lo que hacemos es indicarle el nombre de una función a la que llamará cuando tenga que mostrar el bbcode, y pasará como referencia lo que se encuentre entre las etiquetas
[ center ]
y
[/ center ]
, es lo que le indicamos al crear el bbcode y colocamos
{TEXT}
el comienzo es siempre igual,
$this->
porque le indicaremos que será un nuevo método de la clase bbcode ya existente en phpbb
luego sigue el nombre de nuestra función a utilizar, en este caso la llamé
centrar_texto
que es un nombre relacionado con lo que voy a hacer
por último vemos que dice
('$1')
y significa pasamos como referencia a esa función el contenido de
{TEXT}
Ahora el paso perteneciente al código php
Abrir:
Buscar: últimas lineas de ese archivo
Antes, agregar:
Código: Seleccionar todo
function centrar_texto($text)
{
// Devolvemos el texto en mayusculas
return strtoupper($text);
}
esta es la función que le indicamos en el campo
second_pass_match, la cual recibe un parámetro que será el contenido de
{TEXT}
para ser procesado en la función y ser devuelto en el
return, en este caso devuelvo el texto en mayusculas.
Ahora tu bbode lo vería igual salvo el nombre, lo imagino de esta manera:
Código: Seleccionar todo
bbcode_match [random]{TEXT}[/random]
bbcode_tpl <span>{TEXT}</span>
first_pass_match !\[random\](.*?)\[/random\]!ies
first_pass_replace '[random:$uid]${1}[/random:$uid]'
second_pass_match !\[center:$uid\](.*?)\[/center:$uid\]!ies
second_pass_replace $this->random_pass('$1')
y en el archivo
bbcode.php
Código: Seleccionar todo
function random_pass($text)
{
// Ignoro el $text y devuelvo un número al azar entre 1 y 20
$min = 1;
$max = 20;
return rand($min, $max);
}
Espero te harás una idea de como funciona un bbcode que llame a una función específica