我对Joomla不是很有经验。这就是我需要你的建议的原因。想法是在弹出窗口中显示系统消息。
解决方案:
1。我删除了文件库\ joomla \ document \ html \ renderer \ message.php中的下一行,因为我不需要这个div
$buffer .= "\n<div id=\"system-message-container\">";
$buffer .= "\n</div>";
2。在index.php中我替换了
<jdoc:include type=”message” />
与
<?php if ($this->getBuffer('message')) : ?>
<?php
$message = $this->getBuffer('message');
$script = '<div id="popup"><div id="popup-inner">'.$message.'</div></div><div id="popup-mask"></div>';
echo $script;
?>
<?php endif; ?>
div#popup用于弹出窗口,div#popup-mask用于叠加
3。我在css
中设置了#popup和#popup-mask#popup-mask {position: absolute; top: 0; left: 0; z-index: 9997; background: url(../images/bg-overlay.png);}
#popup {position: fixed; width: 400px; top: 40%; left: 50%; margin-left: -200px; z-index: 9999; background: #e6e6e6; border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px;}
4。并添加了一些jQuery
jQuery.fn.showMask = function () {
var maskHeight = jQuery(document).height();
var maskWidth = jQuery(window).width();
jQuery(this).css({'width':maskWidth,'height':maskHeight});
};
jQuery(document).ready(function() {
if (jQuery('#popup-mask').length){
jQuery('#popup-mask').showMask();
jQuery('#popup-mask').click(function () {
jQuery(this).hide();
jQuery('#popup').hide();
});
jQuery(window).resize (function() {
jQuery('#popup-mask').showMask();
});
}
});
它有效,但正如我已经提到的,我对Joomla很新。
所以,问题是:
- 这个解决方案好吗?
- 如何改进?
答案 0 :(得分:4)
我想建议你不要更改joomla的核心文件,除非你真的需要这样做因为某些原因。对于你的情况,你可以试试这可能会对你有帮助。
<强>代码:强>
<jdoc:include type=”message” />
如果它不存在,您通常希望将其添加到此代码的正上方:
<强>代码:强>
<jdoc:include type=”component” />
JHTML :: (“behavior.mootools”); JHTML :: (“behavior.modal”);
注意:您是否收到Mootools冲突错误,您的网站可能已经加载了Mootools。尝试删除此部分代码。
<强>脚本:强>
<script type=”text/javascript”>
window.addEvent(‘domready’, function(){
if( $(‘system-message’) ){
SqueezeBox.initialize();
SqueezeBox.open( $(‘system-message’), {
handler: ‘adopt’,
shadow: true,
overlayOpacity: 0.5,
size: {x: 600, y: 100},
onOpen: function(){
$(‘system-message’).setStyle(‘visibility’, ‘visible’);
}
});
}
});
</script>
根据您的需要,您可以更改JAVASCRIPT
和CSS
。
答案 1 :(得分:0)
除非你真的需要,否则我不会推荐黑客入侵。在这种情况下,我认为你不需要。相反,这应该适合你:
将系统消息包装在DIV中(在模板index.php文件中),如下所示:
<div d="systmsg" onclick="javascript:this.style.display='none';"><jdoc:include type="message" /></div>
然后是一些css:
#systmsg {
position:absolute;
text-align:center;
width:100%;
top:300px (what you want)
}
#system-message {
display:block;
width:(what you want);
max-height:(what you want);
margin-left:auto;
margin-right:auto;
z-index: 100;
}
可以找到此示例的链接here。