2009-06-10 179 views
2

我通常會遇到這樣一種情況:「所需的權力」需要網站上多個地方的頁面的精確副本。而不是實際上覆制內容,我所做的只是覆蓋導航欄中突出顯示的部分,然後包含頁面。最終的頁面看起來是這樣的:爲什麼我不能包含博客?

<?php 
    $top_nav_item_id = 'teen'; 
    include('../interests/teacher-resources.php'); 
?> 

這通常工作。我試圖在wordpress中完成博客類別的複製。無論我做什麼,我似乎都得到了一個空白頁面。我已經嘗試了以下所有行:

<?php 
    include('../blog/index.php'); 
    include('../blog/type/teen/index.php'); 
    include('../blog/type/teen/'); 
    include('../blog/'); 
?> 

有沒有人有任何想法?這是一個URL重寫的東西?我是否必須包含該特定類別的模板文件?

任何幫助表示讚賞。

+1

你確定用apache重寫魔術不會更好嗎? – 2009-06-10 16:05:13

回答

0

這個解決方案有點破解,但是接下來,這個問題有點瑣碎。

我收到了一個很好的解釋,爲什麼我不能包含博客頁面,但沒有任何替代方案適合我。

我最終的解決方案是直接修改該頁面的類別模板。如前所述,我使用$ top_nav_item_id來控制哪些菜單項在導航欄中突出顯示,以顯示屬於該部分的頁面的外觀。我沒有重寫這個,而是簡單地以查詢字符串爲條件。只要用戶在我的網站上查看合法鏈接,他們就會得到正確的查詢字符串並且沒有問題。

$ _POST在Wordpress中被禁用。 $ query_string(內置於WP)使用某種緩存,並且會在第一次加載時顯示。

最終的解決方案:

if(strtolower($_SERVER['QUERY_STRING'])=='display=teen') { 
    $top_nav_item_id = 'teen'; 
} else { 
    $top_nav_item_id = 'programs'; 
} 

感謝所有誰試圖幫助。

2

這是一個相當複雜的話題,從一開始就不是很明顯。 This頁面可以幫助您開始使用。關鍵是要包含WordPress博客標題 - 在鏈接頁面上解釋。您可能還想查看WordPress Codex以瞭解使用WordPress引擎API的資源。

6

PHP include需要文件而不是URL,因此它無法訪問WordPress公開的URL名稱空間。這些文件不存在於磁盤上; mod_rewrite首先將漂亮的URL轉換爲index.php的內部請求,WordPress會根據原始URL找出您真正想要的內容,從數據庫中提取大量內容,然後生成頁面。

0
ini_set('display_errors', true); 
error_reporting(E_ALL); 

不知道怎麼回事,但是確實如此。也許Wordpress無法找到它的環境,也許有些變量被忽略了......實際上,包含像wordpress這樣的解決方案是一個壞主意,因爲你永遠不知道,全局變量,函數,類將會相交。注意:包括使用文件系統路徑而不使用URL。

0

對於類似的問題,我使用iframe來包含內容的副本。您可以編寫原始頁面以在url中查找「?embed = 1」標誌,並且只有當嵌入標誌存在時纔在主頁面中包含可嵌入的內容(這樣您可以省略工具欄和冗餘的框架。)所以iframe src url會使用?embed = 1標籤來嵌入內容。

相關問題