3

このコードを使用して、カスタム テンプレートでメニュー モジュールをレンダリングしようとしています

jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule( 'menu' );
$attribs = array('style' => 'mainnav');
$module->params = "menutype=" .$mainmenu ."\nshowAllChildren=1";
echo JModuleHelper::renderModule($module, $attribs);

メニューは、別のメニュー モジュールを公開している場合にのみ機能するため、メニュー モジュールを公開しなくても機能させるには、1 行のコードのみが必要であると確信しています。

メニューは存在しますが、このメニューのモジュールは存在しません。このコードで作成しようとしています。

助けてください。

4

4 に答える 4

5

コードは正常に動作します。小さな修正を加えただけです。

jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule( 'mod_menu' );
$attribs = array('style' => 'mainnav');
$module->params = "menutype=" .$mainmenu ."\nshowAllChildren=1";
echo JModuleHelper::renderModule($module, $attribs);

2行目では、呼び出しは「メニュー」だけでなく「mod_menu」にする必要があり、これによりコードが完全に機能します:)

于 2012-07-13T03:04:33.140 に答える
0

include モジュールを使用しないのはなぜですか?

<jdoc:include type="modules" name="mainnav" style="mainnav" />

これにより、その位置に配置したくないモジュールを公開できます。

それ以外の場合、getModule関数は次のように機能します。

JModuleHelper::getModule( 'position', 'title' );

Joomlaによると!API であるため、両方のパラメーターを渡す必要があります。

于 2012-07-12T15:10:08.753 に答える
0

このコードを使用して、ID で他のモジュールをレンダリングします

$mod_id = $params->get('mod_id');
if ($type == 'logout' && $mod_id != ''){
    $document   = &JFactory::getDocument();
    $renderer   = $document->loadRenderer('module');
    $db     =& JFactory::getDBO();

    if ($jVersion=='1.5') {
         $query = 'SELECT id, title, module, position, params'
        . ' FROM #__modules AS m'
        . ' WHERE id='.intval($mod_id);
    } else {
         $query = 'SELECT id, title, module, position, content, showtitle, params'
        . ' FROM #__modules AS m'
        . ' WHERE m.id = '.intval($mod_id);
    }
    $db->setQuery( $query );
    if ($mod = $db->loadObject()){
        $file                   = $mod->module;
        $custom                 = substr( $file, 0, 4 ) == 'mod_' ?  0 : 1;
        $modu->user     = $custom;
    // CHECK: custom module name is given by the title field, otherwise it's just 'om' ??
        $mod->name      = $custom ? $mod->title : substr( $file, 4 );
        $mod->style     = null;
        $mod->position  = strtolower($mod->position);
        echo $renderer->render($mod, array());
     }
}
于 2012-07-12T22:26:59.560 に答える
0

この、100% のレンダリング モジュールをこの位置で使用します。

<?php
$document   = &JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
$position   = 'article-banners';
echo $renderer->render($position, $options, null);
?>

$position はモジュールの位置を参照します。複数の場合があります... $style - なし、丸め、xhtml...

于 2014-03-07T14:14:03.297 に答える