2009-06-10 89 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标签来嵌入内容。

相关问题