我要做的是为我的Joomla添加一些HTML标签!模块标题。我需要这样的东西
Some <b>Title</b>
但是当我保存时!Joomla修剪标题并删除所有HTML标签。
我检查了管理员/ com_content,我认为应该负责插入数据库数据,但我找不到答案。
任何人都可以帮助我解决这个问题吗?
答案 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将格式化应用于每个拉开的单词(或视情况而定)。
希望有所帮助。