Y puedas crear tus propias modificaciones, de acuerdo a tus necesidades la versión 2.1 tiene cerca de 400 hooks disponibles

como se usa?
puedes crear tu mod bien organizado con un centro de administración y todo bien ordenado, o puedes crear uno con valores por defecto que una vez instalado funcione sin necesidad de crearle un panel administrativo
para empezar uno básico necesitas estos archivos;
Hook.php //
importantindex.php //
importantpackage-info.xml //
importantreadme.txt // puedes agregar notas de tu mod
Sources // carpeta donde estará tus archivos necesarios (si es muy grande el mod)
Themes // por si necesitas otros archivos propios
primero debes configurar
package-info.xml a si:
<?xml version="1.0"?>
<!DOCTYPE package-info SYSTEM "http://www.simplemachines.org/xml/package-info">
<package-info xmlns="http://www.simplemachines.org/xml/package-info" xmlns:smf="http://www.simplemachines.org/">
<id>minombredeautor:nombredemimod</id>
<name>Nombre de mi mod</name>
<version>0.1</version>
<type>modification</type>
<install for="2.1 - 2.1.99, 2.1 RC2, 2.1 RC3">
<code>Hook.php</code>
<require-dir name="Themes" destination="$boarddir">Theme and Language files</require-dir>
<require-dir name="Sources" destination="$boarddir">Source files</require-dir>
</install>
<uninstall for="2.1 - 2.1.99, 2.1 RC2, 2.1 RC3">
<code>Hook.php</code>
<redirect url="$scripturl?action=admin;area=packages" timeout="3000"></redirect>
</uninstall>
</package-info>
a si de simple con eso ya esta listo en <version>0.1</version> es la versión de tu mod
el contenido de index.php
<?php
/**
* This file is here solely to protect your Packages directory.
*/
// Look for Settings.php....
if (file_exists(dirname(dirname(__FILE__)) . '/Settings.php'))
{
// Found it!
require(dirname(dirname(__FILE__)) . '/Settings.php');
header('location: ' . $boardurl);
}
// Can't find it... just forget it.
else
exit;
?>
el mas importante
Hook.phpeste archivo sera ejecutado con <code>Hook.php</code> de nuestro
package-info.xmlahora si el contenido de Hook.php
<?php
if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF'))
require_once(dirname(__FILE__) . '/SSI.php');
elseif (!defined('SMF'))
exit('<b>Error:</b> Cannot install or uninstall - please verify you put this in the same place as SMF\'s index.php.');
if (SMF == 'SSI')
db_extend('packages');
global $sourcedir;
// Prepare hooks
$hook_functions = array(
'integrate_pre_include' => $sourcedir.'/MyMod/MyMod.php',
'integrate_pre_load' => 'MyMod\MyMod::init'
);
// Adding or removing hooks
if (!empty($context['uninstalling']))
$request = 'remove_integration_function';
else
$request = 'add_integration_function';
// Carrying out the hooks
foreach ($hook_functions as $hook => $function)
$request($hook, $function);
if (SMF == 'SSI')
{
fatal_error('<b>This isn\'t really an error, just a message telling you that the settings have been entered into the database!</b><br />');
@unlink(__FILE__);
}
?>
lo mas importante esta en estas dos lineas
$hook_functions = array(
'integrate_pre_include' => $sourcedir.'/MyMod/MyMod.php',
'integrate_pre_load' => 'MyMod\MyMod::init'
);
integrate_pre_include incluimos un archivo "CORE" el corazón del mod
luego con integrate_pre_load ejecutamos la funcion que esta dentro de nuestra clase MyMod
terminado esto lo empaquetamos como .zip y lo instalamos en nuestro foro
y listo ya podemos desarrollar mods en nuestro localhost para luego empaquetar todo los archivos en un zip. e instalarlo de forma definitiva
en el siguiente post utilizaremos MyMod.php y haremos los hooks usados con mas frecuencia
buenas noches nos vemos mañana