2013-07-05 66 views
1

有拉從前端模板PARAMS但他們沒有包含實際的模板ID幾種方法,如何在前端獲取Joomla 2.5和3.x默認/分配的模板ID?

我打印的JFactory模板對象 http://prntscr.com/1dpewc

print_r($app->getTemplate('template')); 

,只是想確保,這是在模板index.php文件中獲取模板標識的唯一方法。

$app   = JFactory::getApplication(); 
$getTemplateId = $app->getTemplate('template')->id; 

一切都失敗了,這 - $>的id,$ APP->是getTemplate() - > ID等

任何幫助表示讚賞。謝謝。

+0

哪裏在前端?在模板index.php或視圖或組件控制器?以及爲什麼您需要模板ID,如果用戶卸載並重新安裝相同的模板(例如,如果他們正在更新它... – Craig

+0

是的前端。我不追求特定的ID,我只是需要它。 – Benn

回答

6

我認爲,這裏有一個命名法問題。

的代碼,你有:

$app   = JFactory::getApplication(); 
$getTemplateId = $app->getTemplate('template')->id; 

- 實際上是給你的模板樣式id。 (是的,這是獲得這種最快捷的方式。

隨着裏卡多指出模板ID實際上只有在擴展管理器表(#__extensions)。

雖然給出了您的應用程序(即使用它來創建一個唯一的Javascript cookie),但模板樣式ID可能是您想要的,因爲它更具體的是您需要擊中數據庫以檢索的模板ID。

或者,如果你只是想爲模板的標識,你可以使用:

$getTemplateName = $app->getTemplate('template')->template; 

,這將給你的模板基本名稱(如beez_20),這是獨一無二的,因爲它也是目錄名稱的模板存儲在中。

+0

謝謝你,看看所有的選項,我們都找到了正確的方法,但問題是哪一個更快更準確。 $ APP->是getTemplate( '模板') - >模板;會給出模板名稱,但問題是如果用戶使用不同風格的同一模板用於不同的頁面(分配模板),那麼我最終會在那裏擁有相同的名稱。因此我必須獲得身份證。但是,謝謝你們的幫助。似乎他們無緣無故地離開了那一個。如果您以與獲取模塊ID相同的方式查詢模塊,但是模板是我找到的。 – Benn

+0

謝謝,我無法在文檔中找到它。 – Nathan

1

這將選擇模板風格ID:

$db->setQuery('SELECT id,template FROM #__template_styles WHERE client_id=0 AND home=1'); 

其中模板將是模板的唯一名稱,說你分配$ TNAME它:

這個

現在你會選擇實際模板來獲得它的ID:

SELECT id FROM #__extensions where `type`='template' and `element`= '$tname' 

請解釋我們的好奇心,並告訴我們爲什麼你想要的模板ID。

+0

謝謝,但我試圖避免不必要的SQL調用。 Joomla擠滿了應該這樣做的課程。如果你只是看看後端模板的ID在那裏。我需要ti基於活動模板創建獨特的javascript cookie(需要少量腳本),這樣可以避免在單獨安裝或分配的模板上使用重複的cookie – Benn

+0

是的,Joomla類最有可能幫助您。但是他們仍然會查詢數據庫,並收集比您需要的更多的數據,因此他們的查詢將會變慢。 –