Y puedas crear tus propias modificaciones, de acuerdo a tus necesidades la versión 2.1 tiene cerca de 400 hooks disponibles
(https://i.imgur.com/slwMTkY.jpg)
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 // important
index.php // important
package-info.xml // important
readme.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.php
este archivo sera ejecutado con <code>Hook.php</code> de nuestro package-info.xml
ahora 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
Esta bueno la explicacion rapida como esta con RC aun muchos no lo prueban pero ir comprendiendo como funciona en general a mas de uno seguro inspira a meter mas mano :D, Gracias por aportar!
Saludos!
Hola, gracias por el aporte que siempre serán de utilidad.
Ahora yo te hago una pregunta Dayzon, yo he notado que vos creaste varios o muchos mods para tu foro, de hecho siempre cuando pediste ayuda nos comentabas que estabas creando o terminando de crear o incluso que comenzabas a crear tu mod y buscando por los mods de SMF tan solo tenés 4 mods aportados pero hace ya varios años:
(https://fotos.subefotos.com/5ef850bb84dd7f7171ef9ac92bd59905o.png)
(https://fotos.subefotos.com/d3a4b88363c3fc00bf7a23c8a8cee888o.png)
La pregunta es, porque no compartis/aportas todos esos mods que has creado? Serían de mucha ayuda y te aseguro que más de uno te lo agradecería.
Saludos
si xd, pero casi nunca lo termino por que pierdo el interés o simplemente ya no le encuentro utilidad... y si no publico mods es por que smf es muy estricto en cuanto a estructura y bla bla y basicamente demoran como 4 meses para aprobarte un mod o de plano te dicen tu mod no funciona con php menor a la version 4 .... por eso no subo mods, por otro lado si trato de hacer tutoriales uwu.
hay un error en el post este pero no puedo editarlo.
alguien que cambie esto
'integrate_pre_include' => $sourcedir.'/Spirit/SpiritHook.php',
'integrate_pre_load' => 'SpiritMod\SpiritHook::init'
por esto
'integrate_pre_include' => $sourcedir.'/MyMod/MyMod.php',
'integrate_pre_load' => 'MyMod\MyMod::init'
Justo estaba probando algo y me parecia raro al mirar el código, ya te lo cambie :) cualquier cosa avisa!
Saludos!
Adicionalmente en el package-info.xml ya se tienen disponibles etiquetas para utilizar hooks directamente desde ahí, sin tener que utilizar otro archivo para correrlos, pero cualquier forma es viable y válida.
Gracias Dhayzon por el Tutorial, crei haber comentado aca, bueno la edad jaja.