2010-11-16 88 views
3

我有一個前端組件視圖,我需要在頭文件中包含一個.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

您的代碼看起來不錯。也許可以嘗試下面的另一種方法,第一行是包含JS,而另一個是CSS(以防有人在未來尋找css include時遇到此問題)。

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'); 
+0

的JHTML ::腳本沒有工作;我在joomla開發谷歌組得到了相同的答案。我很好奇爲什麼當addScript沒有時它會工作;每種方法何時可用都存在某種限制嗎? – EmmyS 2010-11-17 15:00:57

+0

我不確定。我以前成功使用過這兩個。你有沒有嘗試把硬編碼的網址,而不是使用JURI :: root()? – Martin 2010-11-17 15:20:23

+0

是的,同樣的事情發生。我之前也使用過這兩種方法,所以我不確定爲什麼一個人在另一個不在的地方工作。 – EmmyS 2010-11-17 17:46:39

0

您發佈的代碼應該工作。您可以在頁面實際呈現並返回之前的任何時刻操作JDocument,因此無論您是在模板文件中還是在控制器或視圖文件中執行該操作都不應該成爲問題(實際上它在何處應該從更好的MVC角度出發)。

檢查以確保在模板的index.php文件,下面的標籤包括:

這可能是因爲在你的管理模板(默認的,有可能的),而不是自定義模板..雖然這應該。

另一個簡單的測試方法是暫時將您的模板更改爲rhuk_milkyway,以查看代碼是否在此處正確注入。