Advertisement:

Author Topic: [hooks] que es ?.. Un tutorial para que entiendas como fuciona, smf2.1  (Read 865 times)

Offline Dhayzon

  • Sophist Member
  • *****
  • Posts: 1,346
  • Gender: Male
  • DhayZone RevolutioN
    • Dhayzon on GitHub
    • @dhayzon on Twitter
    • http://dhayzon.com/
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 // 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:

Code: [Select]
<?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

Code: [Select]
<?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



Code: [Select]

<?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

Code: [Select]
  $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
« Last Edit: September 04, 2020, 02:33:35 PM by Rock Lee »

Offline Rock Lee

  • Local Moderator
  • SMF Hero
  • *
  • Posts: 3,804
  • Gender: Male
  • Learning more every day!
    • BomberCode.Oficial on Facebook
    • RockLee-BC on GitHub
    • @Bomber_Code on Twitter
    • Bomber Code ~ La nueva era del conocimiento
Re: [hooks] que es ?.. Un tutorial para que entiendas como fuciona, smf2.1
« Reply #1 on: September 03, 2020, 10:13:36 PM »
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!
¡Regresando como cual Fenix! ~ Bomber Code © 2020
Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Offline Daniel

  • Jr. Member
  • **
  • Posts: 288
  • Gender: Male
  • Colaborador
Re: [hooks] que es ?.. Un tutorial para que entiendas como fuciona, smf2.1
« Reply #2 on: September 04, 2020, 08:26:41 AM »
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:





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

Offline Dhayzon

  • Sophist Member
  • *****
  • Posts: 1,346
  • Gender: Male
  • DhayZone RevolutioN
    • Dhayzon on GitHub
    • @dhayzon on Twitter
    • http://dhayzon.com/
Re: [hooks] que es ?.. Un tutorial para que entiendas como fuciona, smf2.1
« Reply #3 on: September 04, 2020, 11:53:52 AM »
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'
 



Offline Rock Lee

  • Local Moderator
  • SMF Hero
  • *
  • Posts: 3,804
  • Gender: Male
  • Learning more every day!
    • BomberCode.Oficial on Facebook
    • RockLee-BC on GitHub
    • @Bomber_Code on Twitter
    • Bomber Code ~ La nueva era del conocimiento
Re: [hooks] que es ?.. Un tutorial para que entiendas como fuciona, smf2.1
« Reply #4 on: September 04, 2020, 02:35:21 PM »
Justo estaba probando algo y me parecia raro al mirar el código, ya te lo cambie :) cualquier cosa avisa!


Saludos!
¡Regresando como cual Fenix! ~ Bomber Code © 2020
Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Offline Diego Andrés

  • Customizer
  • SMF Hero
  • *
  • Posts: 3,681
  • Gender: Male
    • DiegoAndresCortes on GitHub
    • @bihgetter on Twitter
    • SMF Tricks - Free & Premium Themes
Re: [hooks] que es ?.. Un tutorial para que entiendas como fuciona, smf2.1
« Reply #5 on: September 16, 2020, 10:28:34 AM »
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.

SMF Tricks - Free & Premium Responsive Themes for SMF.

Offline vicram10

  • Charter Member
  • SMF Hero
  • *
  • Posts: 6,041
  • Gender: Male
    • vmrm10 on Facebook
    • vicram10 on GitHub
    • vicram10 on LinkedIn
    • @vicram_10 on Twitter
    • Noticias Tecnologicas, Tutoriales e Internet
Re: [hooks] que es ?.. Un tutorial para que entiendas como fuciona, smf2.1
« Reply #6 on: September 16, 2020, 07:27:03 PM »
Gracias Dhayzon por el Tutorial, crei haber comentado aca, bueno la edad jaja.