News:

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

Main Menu

Problema al integrar con MediaWiki

Started by Tokzu, February 02, 2014, 12:54:55 AM

Previous topic - Next topic

Tokzu

Buenas, estoy integrando smf con MediaWiki (lo pueden ver aquí) y le puse el skin smfcurve (https://github.com/SimpleMachines/smfcurve), el problema es cuando quiero mostrar el menú de smf dentro de MediaWiki.

Siguiendo las instrucciones dentro de smfcurve.php (en la línea 29), descomento la línea 31 y pongo bien la ruta a SSI.php de smf y en la línea 89 descomento ssi_menubar() para que así aparezca el menú.

El problema es que que el menú no se muestra bien, o sea no es desplegable como el de smf (y que en la wiki de Simple Machines sí se muestra bien), probé copiando el css de la wiki de Simple Machines pensando que así se solucionaría pero no fue así y no se me ocurre qué podría ser. U_U





Bueno, estuve revisando de nuevo y el error se generó debido a que en mi foro tenía configurado un template diferente al default y el smfcurve lo estaba mostrando a como aparece en el template que había definido yo. La solución fue ésta:

DEL LADO DE SMF

index.template.php (el que se tenga definido por defecto en el foro)
Code (Agregar al final) Select
// For the Wiki
function template_menu2()
{
global $context, $settings, $options, $scripturl, $txt;

echo '
<div id="site_menu" class="align_right">
<ul id="site_nav" class="dropmenu">';

foreach ($context['menu_buttons'] as $act => $button)
{
echo '
<li id="site_button_', $act, '">
<a class="', ($act == 'wiki') ? 'active ' : '', 'firstlevel" href="', $button['href'], '"', isset($button['target']) ? ' target="' . $button['target'] . '"' : '', '>
<span class="', isset($button['is_last']) ? 'last ' : '', 'firstlevel">', $button['title'], '</span>
</a>';
if (!empty($button['sub_buttons']))
{
echo '
<ul>';

foreach ($button['sub_buttons'] as $childbutton)
{
echo '
<li>
<a href="', $childbutton['href'], '"', isset($childbutton['target']) ? ' target="' . $childbutton['target'] . '"' : '', '>
<span', isset($childbutton['is_last']) ? ' class="last"' : '', '>', $childbutton['title'], !empty($childbutton['sub_buttons']) ? '...' : '', '</span>
</a>';
// 3rd level menus :)
if (!empty($childbutton['sub_buttons']))
{
echo '
<ul>';

foreach ($childbutton['sub_buttons'] as $grandchildbutton)
echo '
<li>
<a href="', $grandchildbutton['href'], '"', isset($grandchildbutton['target']) ? ' target="' . $grandchildbutton['target'] . '"' : '', '>
<span', isset($grandchildbutton['is_last']) ? ' class="last"' : '', '>', $grandchildbutton['title'], '</span>
</a>
</li>';

echo '
</ul>';
}

echo '
</li>';
}
echo '
</ul>';
}
echo '
</li>';
}

echo '
</ul>
</div>';
}


En la parte donde dice "($act == 'wiki')" cambian el "wiki" por el identificador que ustedes le hayan puesto a su wiki en el menú. Por ejemplo, si en el menú lo agregaron como:

'wiki' => array(
   'title' => 'Mi Wiki',
   'href' => 'http://urldelawiki.com',
   'show' => true,
),

entonces pondrían lo que está en negritas.

SSI.php

Code (Buscar) Select
// Display a menu bar, like is displayed at the top of the forum.
function ssi_menubar($output_method = 'echo')
{
global $context;

if ($output_method == 'echo')
template_menu();


Code (Reemplazar con) Select
// Display a menu bar, like is displayed at the top of the forum.
function ssi_menubar($output_method = 'echo', $fromwiki = false)
{
global $context;

if ($output_method == 'echo')
if ($fromwiki)
template_menu2();
else
template_menu();


DEL LADO DE MEDIAWIKI

smfcurve.php (Este archivo debe estar dentro de la carpeta skins)

Code (Buscar) Select
ssi_menubar()

Code (Reemplazar con) Select
ssi_menubar('echo', true)

main.css (Dentro de skins/smfcurve)

Borrar todos los estilos ".dropmenu" que traiga el archivo.

Code (Agregar al final) Select
#site_menu
{
padding: 12px 0px 4px 1em;
margin: 0px;
overflow: hidden;
font-size: 1.1em;
font-family: tahoma,sans-serif;
}
/* Our site menu needs some adjusting to support drop downs */
#site_menu ul li
{
position: static;
}
#site_menu ul li ul
{
width: 12.2em;
}
#site_menu ul li ul li
{
width: 12em;
}
#site_nav li a.active
{
background: url(images/theme/menu_gfx.png) no-repeat 100% -31px;
}
#site_nav li a.active span.firstlevel
{
background: url(images/theme/menu_gfx.png) no-repeat 0 -31px;
}
.dropmenu, .dropmenu ul
{
   list-style: none;
   line-height: 1em;
   padding: 0;
   margin: 0;
}
.dropmenu
{
   padding: 0 0.5em;
}
.dropmenu a
{
   display: block;
   color: #000;
   text-decoration: none;
}
.dropmenu a span
{
   display: block;
   padding: 0 0 0 5px;
   font-size: 0.9em;
}
/* the backgrounds first level only*/
.dropmenu li a.firstlevel
{
   margin-right: 8px;
}
.dropmenu li a.firstlevel span.firstlevel
{
   display: block;
   position: relative;
   left: -5px;
   padding-left: 5px;
   height: 22px;
   line-height: 19px;
}
.dropmenu li
{
   float: left;
   padding: 0;
   margin: 0;
   position: relative;
}
.dropmenu li ul
{
   z-index: 90;
   display: none;
   position: absolute;
   width: 19.2em;
   font-weight: normal;
   border-bottom: 1px solid #999;
   background: url(images/theme/menu_gfx.png) 0 -100px no-repeat;
   padding: 7px 0 0 0;
}
.dropmenu li li
{
   width: 19em;
   margin: 0;
   border-left: 1px solid #999;
   border-right: 1px solid #999;
}
.dropmenu li li a span
{
   display: block;
   padding: 8px;
}
.dropmenu li ul ul
{
   margin: -1.8em 0 0 10em;
}

/* the active button */
.dropmenu li a.active
{
   background: url(images/theme/menu_gfx.png) no-repeat 100% 0;
   color: #fff;
   font-weight: bold;
}
.dropmenu li a.active span.firstlevel
{
   background: url(images/theme/menu_gfx.png) no-repeat 0 0;
}
/* the hover effects */
.dropmenu li a.firstlevel:hover, .dropmenu li:hover a.firstlevel
{
   background: url(images/theme/menu_gfx.png) no-repeat 100% -30px;
   color: #fff;
   cursor: pointer;
   text-decoration: none;
}
.dropmenu li a.firstlevel:hover span.firstlevel, .dropmenu li:hover a.firstlevel span.firstlevel
{
   background: url(images/theme/menu_gfx.png) no-repeat 0 -30px;
}
/* the hover effects on level2 and 3*/
.dropmenu li li a:hover, .dropmenu li li:hover>a
{
   background: #d4dbe4;
   color: #000;
   text-decoration: none;
}
.dropmenu li:hover ul ul, .dropmenu li:hover ul ul ul
{
   top: -999em;
}
.dropmenu li li:hover ul
{
   top: auto;
}
.dropmenu li:hover ul
{
   display: block;
}
.dropmenu li li.additional_items
{
   background-color: #fff;
}


Y así ya mostrará el menú igual a como se muestra en el tema default. Ya si quieren adaptarlo a como se muestra en algún otro tema eso ya les toca a ustedes. ;D
"I don't need a knight in a shinny armor, I need a angel in a trench coat"

My mods:

Advertisement: