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

时间:2011-10-23 18:16:56

标签: php html joomla trim

我要做的是为我的Joomla添加一些HTML标签!模块标题。我需要这样的东西

Some <b>Title</b>

但是当我保存时!Joomla修剪标题并删除所有HTML标签。

我检查了管理员/ com_content,我认为应该负责插入数据库数据,但我找不到答案。

任何人都可以帮助我解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

查看../ 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"  />

答案 1 :(得分:2)

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

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

首先作为 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代码以匹配标题的最后一个单词并将其存储在新的varibale中。代码如下所示:

$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
}

感谢大家的帮助。

答案 2 :(得分:1)

Gantry框架可以帮助您完成您想要的任务(第一个单词设计为单向,第二个单词设计为另一个单词) - 但是要完成您正在寻找的任务,需要花费大量的开销。最终你必须为你的模板创建一个模板覆盖,然后用php进行一些创意编辑,以便让它以这种方式显示。

没有快速简便的方法来完成这项工作。你必须在后端做一些PHP编码并编辑模板(使用覆盖,这样你就不会破解核心文件)。最终你可能需要编写php代码来拆分标题,并使用CSS将格式化应用于每个拉开的单词(或视情况而定)。

希望有所帮助。