2012-07-31 81 views
4

我之前已經從Joomla文章中以這種方式添加了Joomla模塊:{loadmodule mod_name}但是這次我需要從它傳遞參數。如何將參數傳遞給從文章加載的joomla模塊

如何將參數從文章內傳遞到Joomla模塊?

+0

你是什麼意思?參數在後端/模塊管理器中,而不是文章 – Lodder 2012-07-31 17:09:23

+1

是的,他們是從後端傳遞的,但我想知道是否有方法將它們從文章中傳遞出去......我以前見過插件mod_refresh,當我們{refesh 600},我們可以傳遞600毫秒到插件,所以我想知道是否有類似的方式,我們可以將它傳遞給模塊,如果是的話如何檢索參數中的數據... – JSFan 2012-07-31 18:25:11

回答

4

您需要修改或克隆Joomla插件loadmodule,因爲它不處理除模塊名以外的參數。如果你熟練使用PHP並不是特別困難(假設你不介意用一點正則表達式讓你的手變髒),但是我建議你用這種方法克隆它並使用它:

  1. 文件夾複製到\plugins\content\loadmodule\plugins\content\Myloadmodule(和所有它的文件)
  2. 文件夾,重命名loadmodule.phploadmodule.xmlmyloadmodule.phpmyloadmodule.xml這些是您將完成所有工作的文件。
  3. 在這兩個文件,以取代myloadmoduleloadmodule出現,(案例敏感
  4. myloadmodule.php,開始在各地線36與剔除了什麼是在{loadposition xxx}正在處理的正則表達式。在您的文章中使用{myloadmoduel blah-blah-blah}時,您需要修改此正則表達式以獲取想要提供的參數。
  5. 查找表'_extensions'中的數據庫條目loadposition,並創建並記錄myloadposition。 (除非你想寫和安裝)
  6. 最後,你需要用你的新參數渲染模塊 - 我無法開始幫助,因爲我不知道你會用什麼模塊或參數工作在做,但這renderModule文件將有所幫助。
  7. 7.

我想我已經全部覆蓋了它,但是這應該足以讓它爲您完成大部分工作。完成後,請使用{myloadposition ...}而不是{loadposition ...}

+0

另外,請參閱我的問題正則表達式,當我第一次弄明白在http://stackoverflow.com/questions/11675691/preg-match-all-with-space-and-comma-delimiters/11675712#11675712 – GDP 2012-08-02 23:40:48

0

我將給出關於上一個答案的更多細節,以便能夠將參數傳遞到帶有標籤的模塊{loadmodule mod_name,param} GDP給出的解決方案工作正常:重寫內容很簡單快捷插件(例如myloadmodule),按照上一個答案中的步驟1到5。 對於我來說,問題出現在步驟6:如何將參數放入模塊中,以及如何在模塊中檢索de參數。

步驟7:如何給參數到一個模塊

在創建(在LoadModule基地),你必須找到下面的代碼行中的插件的「渲染」:

echo $renderer->render($module, $params); 

在此行之前,可以將參數放入$ params參數中,但模塊的「render」使用json格式僅使用鍵「params」檢索params。 所以,將參數傳遞給渲染功能,你可以做這樣的事情:

$param = array('param_name' => 'value'); // param_name = value 
$params = array('params' => json_encode($param)); // 'params' (String) should be decoded by the render of the module 
echo $renderer->render($module, $params); 

第8步:如何模塊

在你的模塊的助手裏檢索參數,你可以檢索與$ PARAMS變量參數:

$value = $params->get('param_name'); 

要了解一個幫手,閱讀本教程:http://docs.joomla.org/J3.3:Creating_a_simple_module/Developing_a_Basic_Module

0

我GOOGL編輯相同的問題,並找到你的問題。我知道它的老,但我的發現可能會幫助別人。現在有插件允許嵌入模塊並允許您傳遞參數給它。我的選擇是Module Plant

相關問題