News:

Want to get involved in developing SMF, then why not lend a hand on our github!

Main Menu

MOD Menu without limit level

Started by davidhs, February 21, 2010, 02:11:50 PM

Previous topic - Next topic

davidhs

Quote from: jhonsks on January 12, 2017, 06:04:00 PM
hize exactamente todo lo que dijiste y al final me salio esto
Hay algo mal escrito en el fichero Subs-MenuMultiLevel.php. Adjuntalo y lo miro.

Quote from: jhonsks on January 12, 2017, 06:04:00 PM
una duda 'title'  es para el titulo y 'href' es para las url verdad?
Sí.

jhonsks


davidhs

Hay un error en el ejemplo, en la línea 15 de ese fichero.

En el hilo de soporte en inglés lo he corregido pero aquí no puedo modificar el mensaje. Pongo aquí el código correcto.

Quote from: davidhs on February 21, 2010, 02:11:50 PM
1. Crear el fichero Sources/Subs-MenuMultiLevel.php con el contenido
<?php

if (!defined('SMF'))
die('Hacking attempt...');

function 
menu_multi_level($buttons)
{
$buttons2 $buttons;
$buttons = array();
foreach ($buttons2 as $i => $b)
{
$buttons[$i] = $b;
if ('home' == $i)
{
$buttons['m0'] = array(
'title' => 'Menu multi-level',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm1' => array(
'title' => 'Submenu 1 - level 1',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm11' => array(
'title' => 'Submenu 1.1 - level 2',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm111' => array(
'title' => 'Submenu 1.1.1 - level 3',
'href' => '',
'show' => true,
),
'm112' => array(
'title' => 'Submenu 1.1.2 - level 3',
'href' => '',
'show' => true,
),
),
),

'm12' => array(
'title' => 'Submenu 1.2 - level 2',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm121' => array(
'title' => 'Submenu 1.2.1 - level 3',
'href' => '',
'show' => true,
),
'm122' => array(
'title' => 'Submenu 1.2.2 - level 3',
'href' => '',
'show' => true,
),
),
),

'm13' => array(
'title' => 'Submenu 1.3 - level 2',
'href' => '',
'show' => true,
),
),
),

'm2' => array(
'title' => 'Submenu 2 - level 1',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm21' => array(
'title' => 'Submenu 2.1 - level 2',
'href' => '',
'show' => true,
),
'm22' => array(
'title' => 'Submenu 2.2 - level 2',
'href' => '',
'show' => true,
),
),
),

),
);

}
}

}

?>


2. En el fichero Sources/Load.php, encontrar
// Integration is cool.
if (defined('SMF_INTEGRATION_SETTINGS'))
{
$integration_settings = unserialize(SMF_INTEGRATION_SETTINGS);
foreach ($integration_settings as $hook => $function)
add_integration_function($hook, $function, false);
}

y añadir después
add_integration_function('integrate_menu_buttons', 'menu_multi_level', false);
add_integration_function('integrate_pre_include', '$boarddir/Sources/Subs-MenuMultiLevel.php', false);


jhonsks

se abrio el foro si pero todo sigue como antes osea no se agrego los menus y menos los sub-menus y he echo todo los pasos que me dijostes a que se debe ? :-\

http://juegosonline.890m.com/index.php

davidhs

Quote from: jhonsks on January 13, 2017, 10:16:36 AM
se abrio el foro si pero todo sigue como antes osea no se agrego los menus y menos los sub-menus y he echo todo los pasos que me dijostes a que se debe ? :-\

http://juegosonline.890m.com/index.php
Es raro... aunque no abriese todos niveles de submenús sí debería añadir el elemento Menu multi-level después de Inicio.

No creo que sea cosas de permisos... mira si Sources/Subs-MenuMultiLevel.php tiene permisos 777 (si no sabes como hacerlo creo que no merece la pena seguir por ahí...)

¿Se ha creado algún error en el registro de errores del foro?

Vamos a probar si al menos crea un menú de primer nivel al final. En el fichero Sources/Subs-MenuMultiLevel.php reemplaza
function menu_multi_level($buttons)
por
function menu_multi_level($buttons)
{
$buttons['m0'] = array(
'title' => 'Nuevo Menu',
'href' => '',
'show' => true,
'sub_buttons' => array(),
);
}

function menu_multi_level2($buttons)


Esto debería añadir un elemento Nuevo Menu, sin submenús, al final de tu menú.

jhonsks

ya lo agregue y nada amigo q extraño no se estropeo nada pero no se agrega nada tampoco  :-\

davidhs

Pon el tema por defecto a ver si ahí si se vé el nuevo elemento de menú (puede que tu tema utilice/lea el menú de otra forma).

Si no va tampoco, no se que más probar... tendría que ver los ficheros en tu servidor...

jhonsks

nada mi amigo te mandare via ftp su acceso para que veas el error y asi poder solucionar este caso  :)

davidhs

Había otro error en el ejemplo, el parátretro de la función debe pasarse por referencia:
menu_multi_level(&$buttons)

Pongo aquí el código correcto.

Quote from: davidhs on February 21, 2010, 02:11:50 PM
1. Crear el fichero Sources/Subs-MenuMultiLevel.php con el contenido
<?php

if (!defined('SMF'))
die('Hacking attempt...');

function 
menu_multi_level(&$buttons)
{
$buttons2 $buttons;
$buttons = array();
foreach ($buttons2 as $i => $b)
{
$buttons[$i] = $b;
if ('home' == $i)
{
$buttons['m0'] = array(
'title' => 'Menu multi-level',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm1' => array(
'title' => 'Submenu 1 - level 1',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm11' => array(
'title' => 'Submenu 1.1 - level 2',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm111' => array(
'title' => 'Submenu 1.1.1 - level 3',
'href' => '',
'show' => true,
),
'm112' => array(
'title' => 'Submenu 1.1.2 - level 3',
'href' => '',
'show' => true,
),
),
),

'm12' => array(
'title' => 'Submenu 1.2 - level 2',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm121' => array(
'title' => 'Submenu 1.2.1 - level 3',
'href' => '',
'show' => true,
),
'm122' => array(
'title' => 'Submenu 1.2.2 - level 3',
'href' => '',
'show' => true,
),
),
),

'm13' => array(
'title' => 'Submenu 1.3 - level 2',
'href' => '',
'show' => true,
),
),
),

'm2' => array(
'title' => 'Submenu 2 - level 1',
'href' => '',
'show' => true,
'sub_buttons' => array(
'm21' => array(
'title' => 'Submenu 2.1 - level 2',
'href' => '',
'show' => true,
),
'm22' => array(
'title' => 'Submenu 2.2 - level 2',
'href' => '',
'show' => true,
),
),
),

),
);

}
}

}

?>


2. En el fichero Sources/Load.php, encontrar
// Integration is cool.
if (defined('SMF_INTEGRATION_SETTINGS'))
{
$integration_settings = unserialize(SMF_INTEGRATION_SETTINGS);
foreach ($integration_settings as $hook => $function)
add_integration_function($hook, $function, false);
}

y añadir después
add_integration_function('integrate_menu_buttons', 'menu_multi_level', false);
add_integration_function('integrate_pre_include', '$boarddir/Sources/Subs-MenuMultiLevel.php', false);


jhonsks

excelente todo salio perfecto  ;) con esto ya si alguien tiene una duda pues con esto ya se va toda inquietud  :laugh:

te agradesco mucho mi amigaso davidhs un abraso a distancia  ;)

-Rock Lee-

Creo no haber probado este mod... lo voy a instalar en un smf limpio para probar, muy buen trabajo @davidhs gracias por tanto.


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

davidhs

Compatible con SMF 2.0.14 y 2.0.15.

davidhs

Nueva versión:
2.0     20/12/2017
------------------
@ En versiones anteriores eran necesarios cambios manuales en el fichero Sources/Load.php. Ya no son necesarios y deben deshacerse.
@ En versiones anteriores el fichero PHP donde se modifica el menú podía tener cualquier nombre. Ahora tiene que llamarse Subs-MenuWithoutLimitLevel-Menu.php. Si existe con otro nombre debe renombrarse. Y la función tiene que llamarse mwllMenuButtons.
* Uses integration hooks.
+ Compatibilidad SMF: 2.0.8-2.0.15 y 2.1 Beta 3.





He hecho un cambio importante y ahora el mod utiliza integration hooks (ya no hay que modificar el menú en Subs.php ni hacer cambios en Load.php). Pero hay que renombrar el fichero y la función que modifica el menú, según se indica en el registro de cambios.

-Rock Lee-

@davidhs use mucho este mod en verdad ahora me toco actualizarlo en la pagina donde lo tenia, me alegra oir que ahora usa hooks :D


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

davidhs

Nueva versión:
2.0.1   09/04/2019
------------------
+ Compatibilidad SMF: 2.1 RC1 a RC2.

davidhs

Compatible con SMF 2.0.16 y 2.0.17.

davidhs

#56
Nueva versión:
3.0     17/02/2021
------------------
@ En versiones anteriores el menú se modificaba en un fichero (llamado Subs-MenuWithoutLimitLevel-Menu.php desde la versión 2.0, y con cualquier nombre en versiones anteriores). Ahora el menú se modifica desde el panel de administración. Debe copiar el contenido del fichero en el campo del panel, y eliminar el fichero.
+ Panel de administración.
+ Permite cambiar la estructura del menu en el panel de administración, utilizando código PHP.
+ La Búsqueda Rápida del Centro de Administración SMF busca en las variables de configuración del MOD.
+ SMF compatibility: 2.0.16-2.0.18 y 2.1 RC3.
+ Idiomas: english, english-utf8, english_british, english_british-utf8, spanish_es, spanish_es-utf8, spanish_latin, spanish_latin-utf8.

davidhs

Sobre el cuadro de texto del panel de administración donde escribir el código PHP, en la serie SMF 2.0.x se muestra muy estrecho, y en la serie SMF 2.1.x demasiado ancho.

Para solucionarlo añadiré un código en la próxima actualización, cuando haya un cambio importante. De momento podéis hacerlo vosotros, no impedirá desinstalar el mod más adelante. Hay que modificar el fichero Sources/Admin-MenuWithoutLimitLevel.php.

Para la serie 2.0.x:
Code (Añadir en la línea 51) Select
$context['html_headers'] .= '
<style type="text/css">
textarea#mwll_code { width: 90%; }
</style>';

Para la serie 2.1 Beta x:
Code (Añadir en la línea 57) Select
addInlineCss('
textarea#mwll_code { width: 90%; }');

Para la serie 2.1 RCx:
Code (Añadir en la línea 64) Select
addInlineCss('
textarea#mwll_code { width: 90%; }');

Advertisement: