September 30, 2012 - 12:10 12:10
¿Cómo agregar un nuevo bloque?
Acá les dejo una pequeña explicación de cómo hacer su propio bloque. Este ejemplo es el más básico, y su único propósito es aprender las bases para hacer algo mucho más complejo. Empecemos...
Escenario
Crear un bloque que tenga el mensaje de "Hola SMFSimple". A este bloque lo llamaremos HelloBlock.
Requitos
- El archivo del bloque debe llevar el mismo nombre que la clase (la parte que dice class HelloBlock)
- Crear un funcion llamada show(), que se encarga de ejecutar el bloque
- La variable SYSKEY debe llevar el nombre del bloque
Procedimiento
1. Crear un archivo llamado HelloBlock.php dentro del directorio Sources/ssp/
2. Completamos todos los requisitos para que el contenido quede de la siguiente forma:
<?
class HelloBlock extends Block{
const SYSKEY = 'HelloBlock';
function __construct()
{
}
public function show()
{
echo 'Hola a SMFSimple!';
}
}
Tomen encuenta que en el título de la clase tenemos la frase extends Block. Esto quiere decir que HelloBlock es "algo" de tipo bloque y es una manera de que el portal reconozca que este bloque esta hecho a la manera que él ocupa que sea. Adicionalmente hay una funcion llamada __construct(), que sirve para contruir el bloque con configuraciones por defecto, pero en este caso no hay y por lo tanto esta vacio.
3. Registrar el bloque en el "Cargador de bloque"
¿Por qué es importante registrar el bloque en el cargador de bloques? Suponga que quiere hacer un bloque que se conecta a la base de de datos, si por alguna razón el administrador activa el bloque varias veces en el portal, este cargador inteligentemente se conecta solo una vez y evita de esta manera hacer uso de recursos innecesariamente.
3.1 Abrir el archivo Sources/ssp/BlockLoader.php
3.2 Buscar:
include ('Block.php');
y agregar después (hace el include del block recien creado):
include ('HelloBlock.php');
3.3 Buscar:
$this->blocks[LinkSharing::SYSKEY] = new LinkSharing();
y después agregar (registra el block a la gama de los demas bloques):
$this->blocks[HelloBlock::SYSKEY] = new HelloBlock();
4. Agregar el bloque al <select> en la seleccion del bloque, para ello abrimos el archivo Sources/SMFsimpleHomePortal_bloks.php
4.1 Buscar:
HorizontalMenu::SYSKEY => $txt['sshp_menuhorperson_sjk'],
Y agregar después:
HelloBlock::SYSKEY => 'Bloque de saludo',
5. Asociar la selección del usuario con el bloque correspondiente
Para ello vamos a editar el archivo Sources/SMFsimpleHomePortal.php
5.1 Buscar:
?>
Y antes poner:
function HelloBLock(){
echo BlockLoader::instance()->loadBlock(HelloBlock::SYSKEY);
}
Noten qué importante es el nombre del bloque (HelloBlock), ya que sirve para todo. Cuando hagan su propio bloque solo tienen que cambiarle el nombre a todas las ediciones que acabamos de hacer. Estoy seguro que deben de haber dudas, pero gracias a ellas iré depurando este tutorial.
Apéndice
¿Cómo hacer cambiar el texto del <select> para muchos idiomas?
En lugar de poner:
HelloBlock::SYSKEY => 'Bloque de saludo',
Podrían poner :
HelloBlock:YSKEY => '$txt['variable de lenguaje'],
Recuerden que las variables del lenguaje estan declaradas en los archivos de idiomas.

Logged
soporte privado: manfredjb@hotmail.com