2010-11-27 7 views
0

Ich habe seit einer Stunde gegoogelt und dachte, ich würde sehen, ob jemand eine schnelle Antwort hatte.Externe Navigations- und Update-Links laden

Ich habe eine Website auf einem gehosteten CMS ausgeführt und habe gerade ein Wordpress-Blog auf einer Sub-Domain auf einem neuen Server erstellt. Ich habe keinen Zugriff auf den Quellcode des gehosteten CMS (Business Catalyst).

Ich möchte die CMS-Navigation in mein Wordpress-Theme laden und dachte darüber nach, jQuery zu verwenden, aber ajax scheint dieselbe Domain-Richtlinie zum Laden von Inhalten zu haben. Von dem, was ich bisher gelesen habe, ist der Weg mit einem PHP-Proxy, der den externen Inhalt lädt. Ohne darin tauchen zu müssen, sehe ich ein Problem mit den Navigationslinks, die relative URLs zur ursprünglichen Domain haben, so dass sie nicht auf blog.domain.com funktionieren. Ich möchte keine Weiterleitungen für alle möglichen URLs auf dem neuen Server erstellen müssen, da die CMS-Navigation regelmäßig aktualisiert wird.

Wie kann ich die Navigationsinhalte mithilfe von PHP laden, um den Proxy zu erstellen, aber die relativen URLs automatisch in absolute URLs zur ursprünglichen Domain ändern? + Es wird eine URL in der Navigation geben, die gleich bleiben muss und die auf die Subdomain verweist. blog.domain.com

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

Ok, ich werde meine eigenen Fragen (s) im Fall, dass jemand beantworten sonst läuft in das gleiche Szenario.

Einfache HTML-DOM-Bibliothek lassen Sie die Navigation analysieren, indem Sie die div id-Targeting:

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

Sie können dann Ihre Navigation direkt in Ihrem PHP-Vorlage analysieren:

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

?> 

Und füge absolute URLs zu jedem href mit jQuery hinzu:

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

Wie wäre es mit Iframe anstelle von Ajax? Dann müssen Sie sich nicht mit dem Cross-Domain-Problem und dem relativen Pfad befassen.

+0

Das würde die Dinge SEHR einfach machen. Ich war besorgt über SEO, da es die Hauptnavigation ist. Ich nehme an, ich könnte Links zur Fußzeile irgendwo zurückgeben. – Jackson

+0

Eigentlich ist es ziemlich problematisch, die Navigation für die cms zu einer leeren Seite auf den gehosteten cms hinzuzufügen und das System fügt automatisch Tags und Standard css hinzu. Wenn Sie iframes verwenden möchten, müsste der HTML-Quelltext ohne HTML-Tags unstyled sein? – Jackson

+1

Sie können versuchen, die CMS-Seite mit PHP zu erweitern und den Menüinhalt extrahieren. Platziere den Inhalt dann in deinem Blog. – WaiLam

0

Hallo Fand dieses großen Artikel auf der HTML-Analyse und mit der einfachen HTML-DOM-Bibliothek Scraping Screen:

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

ich es geschafft haben, die Navigation, indem sie auf die div id zu analysieren.

Jetzt habe ich 1 letzte Ausgabe. Die URLs sind für den anderen Server echt. Wie kann ich die vollständige absolute URL: www.domain.com vor allen relativen URLs hinzufügen? Hier ist mein Code so weit:

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

?> 
Verwandte Themen