我想做的是添加一些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对每个拆分的单词(或单词字符串)应用格式化。
希望对你有帮助。