加载外部导航和更新链接

时间:2010-11-27 02:28:25

标签: php jquery ajax

我一直在谷歌搜索一个小时,并认为我会看到有人快速回答。

我在托管的cms上运行了一个站点,并且刚创建了一个在新服务器上的子域上运行的wordpress博客。我无权访问托管(业务催化剂)CMS的源代码。

我想将CMS导航加载到我的wordpress主题,并考虑使用jQuery,但ajax似乎有相同的域策略来加载内容。从我到目前为止所读到的方式来看,这是一个加载外部内容的php代理。如果没有深入研究,我可以看到导航链接存在问题,该链接具有原始域的相对URL,因此它们无法在blog.domain.com上运行。我不想为新服务器上的所有可能URL创建重定向,因为CMS导航将定期更新。

如何使用php加载导航内容来创建代理,但是会自动将相对网址更改为原始域的绝对网址? +导航中将有一个网址需要保持不变,这是指向子网域的网站blog.domain.com

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

如何使用iframe代替ajax?然后你不需要处理跨域问题和相对路径。

答案 1 :(得分:0)

您好,通过简单的HTML DOM库找到了关于HTML解析和屏幕抓取的精彩文章:

http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/

我设法通过定位div id来解析导航。

现在我有最后一期。网址对其他服务器是实际的。如何在所有相对网址前添加完整的绝对网址:www.domain.com?到目前为止,这是我的代码:

<?php
include_once('simple_html_dom.php');

$html = file_get_html('http://www.domain.com/');

foreach($html->find('div#cat_514340_divs') as $e)
    echo $e->innertext . '<br>';

?>

答案 2 :(得分:0)

好的,我会回答我自己的问题,以防其他人遇到同样的情况。

简单的HTML DOM库可让您通过定位div id解析导航:

http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/

然后,您可以直接将导航解析到您的php模板:

<?php
include_once('simple_html_dom.php');

$html = file_get_html('http://www.domain.com/');

foreach($html->find('div#cat_514340_divs') as $e)
    echo $e->innertext;

?>

使用jQuery为每个href添加绝对URL:

jQuery(document).ready(function($) {
/* Add absolute urls to top navigation */
  $('#nav a').each(function() {
    var href = $(this).attr('href');
    $(this).attr('href', 'http://www.originalsitedomain.com' + href);
  });
});