Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/mybb-es.com/html/inc/class_language.php on line 201
[Tutorial] Estructura de un plugin y como crear un plugin MyCode
Edson Ordaz   31 Oct, 2010, 8:30 pm
#1
Hola amigos bueno primero que nada YO SOY CREADO DE ESTE TUTORIAL y lo posteo en este foro asi que pido que no se roben mis creditos y no lo posten en otros foros ya que pues lo creo para ustedes y si se llegase a publicar en otra web yo lo hare donde y cuando quiera ok?

Bueno primero este tutorial lo creo a peticion de varios usuarios que me estan dice y dice por el MSN!!

Bueno voy a explicar la estructura de un plugin sencillo y pequeño!!

bbname.php Creado por nuestro gran amigo Solstise este plugin como sabemos lo que hace remplazar [bbname] en los post por el nombre del foro!!

El plugin es el siguiente!

Código PHP:
<?php
$plugins
->add_hook("parse_message", "bbname_run");

function
bbname_info()
{
return array(
"name" => "BB Name MyCode",
"description" => "Muestra El nombre del Foro",
"website" => "http://www.xpresionzone.net",
"author" => "Walkman 5.0",
"authorsite" => "http://www.xpresionzone.net",
"version" => "1.0",
"compatibility" => "14*,16*",
);
}
function
bbname_activate()
{
}

function
bbname_deactivate()
{
}
function
bbname_run($message)
{
global
$mybb;
$bbname = ($mybb->settings['bbname'] );
return
str_replace("[bbname]", $bbname, $message);
}
?>

Primero que nada notamos que asta arriba dice esto

Código PHP:
<?php
$plugins
->add_hook("parse_message", "bbname_run");

donde <?php es que desde ai empieza el archivo y pues ovio es un php y $plugins->add_hook("parse_message", "bbname_run"); quiere decir que en parse_message que es igual alos mensajes o post ejecutara bbname_run el cual encontraremos mas abajo!!

despues viene

Código PHP:
<?php 
function bbname_info()
{
return array(
"name" => "BB Name MyCode",
"description" => "Muestra El nombre del Foro",
"website" => "http://www.xpresionzone.net",
"author" => "Walkman 5.0",
"authorsite" => "http://www.xpresionzone.net",
"version" => "1.0",
"compatibility" => "14*,16*",
);
}

Donde name es el nombre que aparecera en el panel de admin/plugins descripcion es la descripcion del plugin q mostrara website es el link a donde mandara si das click sobre el nombre del plugin author es lo que aparecera despues del Creado por: authorsite es el link a donde mandara si das click sobre el nombre del creador version es lo que aparece entre () y pones ai la version del plugin y compatibility es la compatabilidad en este caso para foros 1.4 y 1.6!!!

despues viene
Código PHP:
<?php 
function bbname_activate()
{
}

function
bbname_deactivate()
{
}

estas estan vacias ya que es para crear cosas como templates, agregar tablas a la DB modificar plantillas etc etc entonces como no creara nada e panel de admin/configuracion ni modificara plantillas ni nada pues queda vacio....

despues notaremos esto:
Código PHP:
<?php 
function bbname_run($message)
{
global
$mybb;
$bbname = ($mybb->settings['bbname'] );
return
str_replace("[bbname]", $bbname, $message);
}

que es lo que explique arriba que es lo que hara el plugin podemos ver que dice que se ejeutara en los post ($message)

abajo vemos el global $mybb; que tomara cualquier dato de las tablas de DB!!

abajo el bbname es un entero por decirlo asi que se esta cerando para tomar o capturar los datos como notaremos $bbname es igual $mybb->settings['bbname'] esto quiere decir nombre del foro si alguien quiere saber como puede saber estos datos pues facil entren a su base de datos despues en mybb_settings y busquen el valor bbname les dejo una imagen para que quede mas claro!!

[Imagen: dzuypw.png]

donde 1: a el nombre de la tabla
2: el nombre del valor a tomar
3: la descripcion del valor (que es lo que va a mostrar)

entonces POR EJEMPLO tomando mi localhost

$bbname = ($mybb->settings['bbname'] );
es igual a esto segun la imagen:
$bbname = "LocalHost - Edson Ordaz";

en su caso tomara el nombre de su foro...

Continuando veremos esto
Código PHP:
<?php 
str_replace
("[bbname]", $bbname, $message);

que quiere decir que en los post (como mencione en un principio) remplazara en TODOS los post el [bbname] por $bbname que es igual al nombre de su foro y funcionara en los mensajes!!

tomando esto como valor pueden modificarlo y hacer su propio mycode con un plugin pero no se roben creditos si toman como base un plugin creado deb credito tambien Wink

Bueno y pues es todo como dije pueden tomar este plugin de mi amigo solstise como base para crear sus propios mycodes con plugs si tienen dudas o errores al crear su propio plugin no duden en postearlo!!

Saludos!!
Arturo   31 Oct, 2010, 8:45 pm
#2
Muy bueno el tutorial, cuando me anime a hacer un plugin lo tendré en cuenta!
niny   1 Nov, 2010, 10:14 am
#3
gracias esta muy bien el tuto!
nentab   2 Nov, 2010, 2:50 am
#4
Yo lo leeré en unos días con algo más de calma y a ver si creo mi primer plugin de MyCode. Big Grin



Bueno, tengo entendido que si quiero añadir algo por ejemplo a la plantilla header tendría que hacer, por ejemplo, así, no?

Código PHP:
<?php 
function XXX_activate()
{
require
MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('header', '#{\$unreadreports}#', '{$unreadreports}LO QUE YO QUIERA AGREGAR');

return
TRUE;
}

Bien, pero si yo lo que quiero es editar la plantillas CSS? Cómo puedo hacer para añadir algo al final del global.css?
shiro51_mybb_import8103   2 Nov, 2010, 3:56 am
#5
Pues la manera que yo sabria decirte (aunque mis conocimientos son basicos sobre php) es que abrieras el .css y escribieras con fwrite (creo que era) las lineas de codigo. xDDDD
nentab   2 Nov, 2010, 6:58 am
#6
Pero yo lo que quiero es que lo haga el plugin que estoy creando.
Edson Ordaz   2 Nov, 2010, 8:00 am
#7
Nunca e editado el global.css en un plugin y segun la db si se puede :d modificando el themestyle (o algo asi) pero repito no lo e hecho seria mejor crear un nuevo css desde el plug o bien escribir directamente el css dentro de tu template!
nentab   2 Nov, 2010, 8:14 am
#8
(2 Nov, 2010, 8:00 am)Edson Ordaz escribió: Nunca e editado el global.css en un plugin y segun la db si se puede :d modificando el themestyle (o algo asi) pero repito no lo e hecho seria mejor crear un nuevo css desde el plug o bien escribir directamente el css dentro de tu template!

Pero es que sería un css para todo el foro, por eso quería editar el global.css xDD
Pero bueno, ya veré cómo puedo hacer...
Jaizu   16 May, 2011, 7:51 am
#9
Esto puede servir, quizás cuando aprenda más de MyBB me dedicaré a esto, parece interesante...

Gracias!
  
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.