聯(lián)系官方銷售客服
1835022288
028-61286886
請教一個代碼實現(xiàn):在hooks里如何實現(xiàn)生成首頁靜態(tài)文件。
思路:在“module_content_after”內(nèi)容發(fā)布后掛鉤點中執(zhí)行生成首頁靜態(tài)代碼。
問題:以下代碼從“dayrui/Core/Controllers/Home.php”代碼中復(fù)制過來的,雖然成功生成了index.html文件,但是里邊的內(nèi)容不對,檢查了下發(fā)現(xiàn)主要是
\Phpcmf\Service::V()->display('index.html');方法并沒有渲染出index模板內(nèi)容,而是渲染了“/dayrui/Core/Views/share_list.html"的內(nèi)容。
請問各路大神,應(yīng)該如何修改才能實現(xiàn)內(nèi)容發(fā)布后生成首頁靜態(tài),謝謝。
附思路實現(xiàn)代碼:
\Phpcmf\Hooks::on('module_content_after', function($data, $old) { // 內(nèi)容發(fā)布或者修改之后 ob_start(); \Phpcmf\Service::V()->assign([ 'indexc' => 1, 'fix_html_now_url' => defined('IS_MOBILE') && IS_MOBILE ? SITE_MURL : SITE_URL, ]); \Phpcmf\Service::V()->assign(\Phpcmf\Service::L('Seo')->index()); \Phpcmf\Service::V()->display('index.html'); $html = ob_get_clean(); // 開啟過首頁靜態(tài)時 if (SITE_INDEX_HTML) { if (defined('IS_MOBILE') && IS_MOBILE) { // 移動端,當(dāng)移動端獨立域名情況下才生成靜態(tài) if (SITE_MURL != SITE_URL) { file_put_contents(\Phpcmf\Service::L('html')->get_webpath(SITE_ID, 'site', 'mobile/index.html'), $html); } } else { // pc file_put_contents(\Phpcmf\Service::L('html')->get_webpath(SITE_ID, 'site', 'index.html'), $html); } } });
樓主的代碼完全錯誤的,一樓的代碼理論上應(yīng)該是對的
回復(fù)@靠懸賞(設(shè)置懸賞)賺錢買授權(quán)
并沒有成功生成首頁,生成一個0kb的index.html,請大俠明示。
哥,你代碼太多了,改成我一樓梯寫的代碼啊,你為什么加一些無用的代碼啊,你這樣肯定是0kb啊
回復(fù)@靠懸賞(設(shè)置懸賞)賺錢買授權(quán) 還是不行啊,好像明白你意思了,相當(dāng)于直接用這個函數(shù)訪問一下首頁,然后就會自動生成這個文件了,但實際并沒有生成,你可以測試一下。
另外你這個思路雖然可以解決需求,但相當(dāng)于多了一次網(wǎng)絡(luò)請求,不如官方的那種直接讀取模板文件然后生成index.html內(nèi)容效率高呀。
還是非常感謝你的回復(fù)。
pc和移動都有了,兩句話就搞定,不用那么多,多了反而無用
回復(fù)@百鬼夜行 感謝回復(fù),測試并不能成功生成。
你要在hook里面二次開發(fā),就不能使用控制器里面的代碼,只能用一樓的代碼,是最完美的了
回復(fù)@官方研發(fā)實習(xí)技術(shù) 謝謝官方技術(shù),但是為什么實際使用中沒有生成靜態(tài)文件呢,直接訪問首頁是可以生成的。
這樣寫
回復(fù)@易學(xué)習(xí) 成功執(zhí)行!有點奇怪官方dr_catcher_data函數(shù)是file_get_contents函數(shù)的加強版,不知道那個函數(shù)為什么沒有成功生成靜態(tài)首頁
可能一樓的兄弟加了10參數(shù)吧,我習(xí)慣用php自帶的函數(shù),原理跟一樓一樣
回復(fù)@易學(xué)習(xí)
去掉10參數(shù)也不行,找到官方dr_catcher_data的定義了,可能是官方用了curl。但是我的服務(wù)器也是支持curl的。
可能是題外話了,但是強迫癥還是想研究清楚,請大家不吝賜教。
我不太懂程序,只是我經(jīng)驗比較多而已,能實現(xiàn)就行,我從來不去研究為什么
新版程序已支持自動生成首頁了
最新版,首頁自動生成靜態(tài),不起作用,是怎么回事?