Загрузить внешнюю навигацию и обновить ссылки - PullRequest
0 голосов
/ 27 ноября 2010

Я в течение часа гуглял по этому вопросу и думал, что посмотрю, есть ли у кого-нибудь быстрый ответ.

У меня есть сайт, работающий на хостинге CMS, и я только что создал блог WordPress, работающий на поддоменена новом сервере.У меня нет доступа к исходному коду размещенного (бизнес-катализатора) CMS.

Я хотел бы загрузить навигацию CMS в мою тему WordPress и рассматривал возможность использования jQuery, но, похоже, ajax имеет ту же политику домена длязагрузка контента.Из того, что я прочитал до сих пор, обходится прокси php, загружающее внешний контент.Не вдаваясь в подробности, я вижу проблему с ссылками навигации, имеющими относительные ссылки на исходный домен, поэтому они не будут работать на blog.domain.com.Я не хочу создавать перенаправления для всех возможных URL-адресов на новом сервере, поскольку навигация CMS будет обновляться регулярно.

Как я могу загрузить содержимое навигации с помощью php для создания прокси-сервера, но автоматически изменить относительные URL-адреса на абсолютные URL-адреса исходного домена?+ в навигации будет один URL, который должен остаться прежним, и это тот, который указывает на поддомен blog.domain.com

Заранее благодарен за помощь.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2010

Привет Обнаружил эту замечательную статью о разборе HTML и очистке экрана с помощью простой HTML-библиотеки DOM:

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

Мне удалось проанализировать навигацию, указав идентификатор div.

Теперь у меня есть 1 последний выпуск.URL-адреса действительны для другого сервера.Как я могу добавить полный абсолютный URL: www.domain.com перед всеми относительными URL?Вот мой код:

<?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>';

?>
0 голосов
/ 30 ноября 2010

Хорошо, я собираюсь ответить на мои собственные вопросы, если кто-то еще столкнется с тем же сценарием.

Простая библиотека 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;

?>

И добавьте абсолютные URL к каждому href с помощью jQuery:

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);
  });
});
0 голосов
/ 27 ноября 2010

Как насчет использования iframe вместо ajax? Тогда вам не нужно заниматься междоменной проблемой и относительным путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...