将锚添加到Joomla 3.1中的每个模块

时间:2014-09-19 16:23:57

标签: php joomla anchor

我正在尝试修改模块模板代码,以便为每个模块的标题添加一个锚点。我的PHP知识非常有限,因此任何指导都会非常有用。

我发现了使用文章执行此操作的帖子,但模块的代码似乎非常不同。

这是我的模块模板中的代码。

function modChrome_basic($module, &$params, &$attribs)
{
if (!empty ($module->content)) : ?>
    <?php echo $module->content; ?>
<?php endif;
}

function modChrome_standard($module, &$params, &$attribs)
{
if (!empty ($module->content)) : ?>
       <div class="rt-block <?php if ($params->get('moduleclass_sfx')!='') : ?><?php echo              $params->get('moduleclass_sfx'); ?><?php endif; ?>">
        <div class="module-surround">
            <?php if ($module->showtitle != 0) : ?>
        <div class="module-title">
                <?php 
                echo '<h2 class="title">';
                    if (preg_match("/icon[-]{1,}/i", $params->get('moduleclass_sfx'))) : 
                        echo '<span class="title-icon ' .getIconClass($params->get('moduleclass_sfx')). '"></span>';
                    endif;
                    echo $module->title;
                echo '</h2>';
                ?>
        </div>
                    <?php endif; ?>
                    <div class="module-content">
                        <?php echo $module->content; ?>
                    </div>
                </div>
       </div>
<?php endif;

} 这是我试过的代码

if( strlen($this->item->params->get('title')) > 0 ) { 
    echo '<a name="'.$this->item->params->get('title').'"></a>'; 
}

我也试过

 if( strlen($module->item->params->get('title')) > 0 ) { 
     echo '<a name="'.$module->item->params->get('title').'"></a>'; 
} 

1 个答案:

答案 0 :(得分:0)

Joomla可以轻松自定义模块外观。

您必须使用Custom module chrome

您必须在modules.php下创建一个/templates/TEMPLATE_NAME/html/modules.php文件。

在此文件中,您必须放置:

<?php
  function modChrome_custom( $module, &$params, &$attribs ) {

    echo '<div id="' .$params->get( 'moduleclass_sfx' ) .'" >';

    if ($module->showtitle) 
    {
    echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>';
    }

    echo '<div class="module_content">';
    echo $module->content;
    echo '</div>';

    echo '</div>';
  }
?>

在上面的代码中,模块ID获取moduleclass_sfx值。您可以更改它并设置另一个模块变量。

要使用此外观,您必须将相应的style设置为模板模块调用,如:<jdoc:include type="modules" name="user1" style="custom" />

如果您想使用其他样式名称,则必须将功能从modChrome_custom更改为modChrome_NEWSTYLE

祝你好运!