PDA

Zobacz pełną wersję : Dołączanie dodatkowego kodu do moduletable_menu



volatile
08-09-2010, 15:19
Witam.
Chciałbym dodać blok div w następującym miejscu:


<div class="moduletable_menu">
<ul>
<li>Pozycja 1</li>
<li>Pozycja 2</li>
<li>Pozycja 3</li>
<li>Pozycja 4</li>
<li>Pozycja 5</li>
</ul>
<div class="blok"> </div>
</div>
Próbowałem wariantu z umieszczeniem tego bloku w osobnym module pod moduletable_menu oraz sztywno wstawiając w Template HTML.
Niestety nie o to mi chodzi :-)

Wiem, że kod generujący moduł znajduje się domyślnie w templates/nazwa_szablonu/html/modules.php
Szablon sam tworzę, lecz wykorzystałem katalog html ze stylu domyślnego beez. Kod modules.php jest tam taki:


<?php
defined('_JEXEC') or die('Restricted access');


function modChrome_beezDivision($module, &$params, &$attribs)
{
$headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
if (!empty ($module->content)) : ?>
<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle) : ?>
<h<?php echo $headerLevel; ?>><?php echo $module->title; ?></h><?php echo $headerLevel; ?>>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php endif; ?>
}
Można pewnie wstawić ten kawałek kodu pod
<?php echo $module->content; ?>, ale mnie interesuje bardziej działanie tego modułu zdarzeniowo na podstawie instrukcji warunkowych:


if (!empty ($module->content)) : ?>
if(<div class="moduletable_menu">) { // --> tylko nie wiem jaką wartość lub zmienną tu wpisać
$headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
<?php echo "<div class=/"moduletable_menu/">"; ?>
<?php if ($module->showtitle) : ?>
<h<?php echo $headerLevel; ?>><?php echo $module->title; ?></h><?php echo $headerLevel; ?>>
<?php endif; ?>
<?php echo $module->content; ?>
<div class="blok"> </div>
<?php echo '</div>'; ?>
<?php endif; ?> }
else {
$headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
if (!empty ($module->content)) : ?>
<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle) : ?>
<h<?php echo $headerLevel; ?>><?php echo $module->title; ?></h><?php echo $headerLevel; ?>>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php endif; ?>
}
}
Chcę tak zrobić po to, aby tylko w jednym określonym przypadku moduł wstawiał:


<div class="blok"> </div>


W kod modułu.

Proszę uprzejmie o pomoc :-)

EkleErs
08-09-2010, 15:36
moze tak

if ($params->get('moduleclass_sfx') == 'moduletable_menu'){

//kod przerobki

} else {

//kod zwykly

}

moje
08-09-2010, 16:09
Trzeba stworzyć własny styl wyświetlania modułu w szablonie, wtedy zawsze będzie tak, jak chcesz. Sam znalazłeś przykład w postaci stylu wyświetlania bezzDivision.

volatile
09-09-2010, 04:59
Dziękuję bardzo za nakierowanie mnie. Napisałem taki moduł na podstawie artykułu:
http://joomla.jogger.pl/2010/02/17/wlasne-style-modulow/

Dla tych, którzy kiedyś spotkają się z podobnym problemem wklejam kod:


function modChrome_beezDivision($module, &$params, &$attribs)
{
$headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
if (!empty ($module->content)) : ?>
<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle) : ?>
<h<?php echo $headerLevel; ?>><?php echo $module->title; ?></h><?php echo $headerLevel; ?>>
<?php endif; ?>
<?php echo '<div class="mark"> </div>'; ?>
<?php echo $module->content; ?>

</div>
<?php endif;
}

function modChrome_mainMenu($module, &$params, &$atribs)
{
$id = (isset($attribs['id'])) ? ' id="'.$attribs['id'].'"' : '';
$suffix = $params->get('moduleclass_sfx');

echo '<div class="moduletable'.$suffix.'"'.$id.'>';
if ($module->showtitle != 0)
{
echo '<h3><span>'.$module->title.'</span></h3>';
}
echo $module->content;
echo '<div class="moj_blok"> </div>';

echo '</div>';
}


Następnie zamiast standardowego:


<div id="left">
<jdoc:include type="modules" name="left" style="xhtml" />

</div>


Należy wstawić:


<div id="left">
<jdoc:include type="modules" name="left" style="mainMenu" />

</div>

xomichuox
06-03-2011, 19:55
A gdzie wstawić ten pierwszy kod? w plik index.php czy utworzyć osobny? jeżeli osobny to jak potem w index.php zrobić tak, żeby z niego pobierał te dane ?