$ document-> addScript无效

时间:2010-11-16 18:13:24

标签: joomla

我有一个前端组件视图,我需要在头文件中包含一个.js文件(头文件由Joomla生成,而不是在default.php中硬编码)。前端组件文件是mysite.com/components/com_arrcard/views/tmpl/default.php; javascript文件位于mysite.com/administrator/components/com_arrcard/js/CalendarPopup.js。

这是我在default.php中尝试的内容:

$document =& JFactory::getDocument();
$popUrl = JURI::root(true).'/website/documents/ccv.html';
$popImage = JURI::root(true).'/website/documents/cv_card.jpg';
$popPhone = JURI::root(true).'/website/documents/phone.html';

$document->addScript( JURI::root(true).'/administrator/components/com_arrcard/js/CalendarPopup.js' );

$ popImage和$ popPhone变量设置正确,但未添加脚本 - 当我查看呈现的页面源时,CalendarPopup.js不在任何地方。

任何人都可以帮助我吗?我在这做错了什么?我也试过了

$document->addScript('administrator/components/com_arrcard/js/CalendarPopup.js' );

这也不起作用。在管理员com_arrcard组件的视图中包含完全相同的文件时,addScript代码可以正常工作。 addScript的工作原理是否存在一些限制?

2 个答案:

答案 0 :(得分:2)

您的代码看起来确实正确。也许尝试下面的另一种方法,第一行是包含JS,而另一种用于CSS(以防万一有人在将来偶然发现css包括这个)。

JHTML::script( 'javascript.js', 'components' . DS . 'com_component' . DS . 'lib' . DS . 'js' . DS );
JHTML::stylesheet( 'style.css', 'components' . DS . 'com_component' . DS . 'lib' . DS . 'css' . DS );

确保使用DS(目录分隔符),以便Joomla可以填写正确的/或\,具体取决于运行该站点的操作系统。

所以在你的情况下你需要这行代码:

JHTML::script( 'CalendarPopup.js', 'administrator' . DS . 'components'. DS .'com_arrcard'. DS .'js');

答案 1 :(得分:0)

您发布的代码应该有效。您可以在实际呈现和发回页面之前的任何时刻操作JDocument,因此无论您是在模板文件中还是在控制器中执行它或查看文件(这实际上都是它)都不应该是一个问题应该从更好的MVC角度出发。)

检查以确保在模板index.php文件中包含以下标记:

可能是你的管理模板(可能是默认模板),但不是自定义模板..虽然它应该。

另一种简单的测试方法是暂时将模板更改为rhuk_milkyway,以查看代码是否在那里正确注入。