2015-08-08 55 views
3

使用我的Joomla插件,我想在創建輸出之前獲取並修改所有內容。Joomla插件在輸出前獲取整個頁面的內容

function newContent($html) 
    { 
    $html = "new content"; 
    return $html; 
    } 

function onContentPrepare() 
    { 
    ob_start(array($this, "newContent")); 
    return true; 
    } 

function onContentBeforeDisplay() 
    { 
    ob_end_flush(); 
    return true; 
    } 

我試着用onContentAfterDisplay但它仍然只改變一小部分,而不是所有的輸出。

回答

2

爲什麼你不只是做:

public function onContentPrepare($context, &$article, &$params, $page = 0) 
{ 
    $article->text = "new content"; 
} 

編輯

此基礎上您的回覆,這裏是修改整個頁面的內容/體插件的方式。這種方法添加到您的插件:

public function onAfterRender() 
{ 
    $app = JFactory::getApplication(); 
    $currentBodyToChange = $app->getBody(); 

    //do something with $currentBodyToChange 
    //$bodyChanged is modified $currentBodyToChange 

    $app->setBody($bodyChanged); 
} 
+0

嗨,我想獲得和修改所有內容(頭,體,尾),所有的頁面,不僅文章 –

+0

@Vasile亞歷喜獸疫,我我更新了我的答案。 – arbogastes

+0

嗨,它的工作原理,謝謝。 –