這可能是一個非常簡單的問題,因此不要提出更具挑戰性的道歉!在HTML中查找自定義標記的發生,執行函數並用函數輸出替換標記
我正在開發一個內部使用模板系統的CMS。
爲了使CMS儘可能擴展,我想使用「模塊」。因此,在模板文件中我想放置表示模塊的自定義HTML標籤。
這將是這樣的:
ob_start();
include "templatefile.tpl";
$buffer= ob_get_contents();
ob_end_clean();
現在我想通過的$buffer
內容和<Module name="moduleName" />
我的每一次出現:
<p><Module name="newsTicker" property="value" anotherProperty="anotherValue" /></p>
我用得到我的模板文件想要include "moduleName.class.php"
,創建該類的新實例,運行該模塊的getOutput()
函數,並將返回值放置在標記爲<Module />
的位置 以前是。
我不知道該怎麼去......:/有什麼想法?
如果你不明白新聞股票的想法。我可以編寫一些代碼,查看我的數據庫中的新聞表,並列出10條最新的新聞報道,然後將其輸出到html <ul>
。我想抽象這個,以便它可以在很多頁面上使用。所以在我的主頁模板中,我可能會有標籤<Module name="newsTicker" />
。現在,當我訪問主頁時,我需要查看主頁tpl文件,我會找到它說<Module name="newsTicker" />
的位置,我將提取name
屬性幷包含基於該名稱的類(在這種情況下,它將是newsTicker.class.php
)。這將有一個名爲getOutput()
的功能,所以我將能夠類似於:$output = $current_module->getOutput();
然後我需要返回到我的tpl文件並更改<Module name="newsTicker" />
的內容爲$output
的內容。
感謝您的幫助。 :)
湯姆
看起來不錯,但它會工作,如果這些模板文件不是完整的HTML文件?例如,我將要使用的文件可能只是頁面內的一塊內容,而不是整個HTML文檔。 – 2011-03-12 16:48:54
@Thomas是的,它應該可以工作,但是當你使用'$ dom-> saveHTML()'的時候,你可能需要從'body'元素中提取。 – alex 2011-03-12 16:52:08