如何在Joomla中插入HTML标签!模块标题


How to insert HTML tags in Joomla! module title?

我想做的是添加一些HTML标签到我的Joomla!模块名称。我需要这样的东西

Some <b>Title</b>

,但当我保存!Joomla修剪标题和删除所有的HTML标签。

我检查了administrator/com_content,我认为它应该负责插入数据库数据,但是我在那里找不到答案。

有谁能帮我解决这个头痛吗?

查看../templates/system/html/modules.php

你可以在HTML中定义你的模块结构。

function modChrome_myCustomModule($module, &$params, &$attribs)
{
$doc =& JFactory::getDocument();
$css  = ".otherClass {}";
$css .= ".yourClass {}";
$doc->addStyleDeclaration($css);
?>
    <div>
        <?php if ($module->showtitle != 0) : ?>
            <h1><?php echo $module->title; ?></h1>
    <?php endif; ?> // post your title
    </div>
    <div>
         <?php echo $module->content; ?> // post your module content
    </div>
<?php
}

然后调用index.php中的样式模块:

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

所以我找到了解决方案。它包含了前面的两个答案,所以我在这里添加一个带有正确代码的新答案。

首先,我需要说,这个解决方案只适用于固定数量的单词(最后一个,两个等),我只需要最后一个,所以我将发布一个带有一个单词的示例代码。

首先作为SMacFadyen说我需要在我的模板html文件夹:/templates/system/html/modules.php文件中创建一个新的模块结构。

注意:如果你不想把这个新的模块样式添加到所有模板中,而只是在其中一个模板中,你需要把module.php放在模板的html文件夹中。

SMacFadyen提供的格式如下:

function modChrome_myCustomModule($module, &$params, &$attribs)
{
$doc =& JFactory::getDocument();
$css  = ".otherClass {}";
$css .= ".yourClass {}";
$doc->addStyleDeclaration($css);
?>
    <div>
        <?php if ($module->showtitle != 0) : ?>
            <h1><?php echo $module->title; ?></h1>
    <?php endif; ?> // post your title
    </div>
    <div>
         <?php echo $module->content; ?> // post your module content
    </div>
<?php
}

然后由Hanny的注释过期,我添加了一些php代码来匹配标题的最后一个单词并将其存储在一个新的变量中。代码看起来像这样:

$wrap_tag = 'b';
$html_title = preg_replace("~'W'w+'s*$~", '<'.$wrap_tag.'>'.'''0'.'</'.$wrap_tag.'>', $module->title);

注意:$wrap_tag变量存储您想要的标记。你可以把b, em, u等放进去,得到不同的结果

最后一件事是替换显示的标题,所以我替换了这段代码:<h1><?php echo $module->title; ?></h1>用这个:<h1><?php echo $html_title; ?></h1>

最后的结果是:

function modChrome_myCustomModule($module, &$params, &$attribs)
{
$doc =& JFactory::getDocument();
$css  = ".otherClass {}";
$css .= ".yourClass {}";
$wrap_tag = 'b';
$html_title = preg_replace("~'W'w+'s*$~", '<'.$wrap_tag.'>'.'''0'.'</'.$wrap_tag.'>', $module->title);
$doc->addStyleDeclaration($css);
?>
    <div>
        <?php if ($module->showtitle != 0) : ?>
            <h1><?php echo $html_title; ?></h1>
    <?php endif; ?> // post your title
    </div>
    <div>
         <?php echo $module->content; ?> // post your module content
    </div>
<?php
}

感谢大家的帮助

Gantry框架可以帮助你完成你想要的(第一个词的样式是一种,第二个词的样式是另一种)-但是它只是完成你正在寻找的一个任务,开销很大。最后,你必须为你的模板创建一个模板覆盖,然后用php做一些创造性的编辑,以使它以这种方式显示。

没有快速和简单的方法来完成。您必须在后端编写一些php代码并编辑模板(使用覆盖,这样您就不会破解核心文件)。最终,您可能需要编写php代码来拆分标题,并使用CSS对每个拆分的单词(或单词字符串)应用格式化。

希望对你有帮助。