2010-10-14 4 views
0

Я хочу получить отдельные сообщения из блога блоггера и сделать их отдельными классами и добавить их содержимое на свой сайт. Мне нужно сделать это, потому что аппаратное обеспечение, на котором я размещаю свой веб-сайт, имеет очень мало вычислительной мощности (pentium 3) и очень мало RAM (512 МБ), и если бы я просто разместил на нем блог Wordpress, время отклика будет чрезвычайно медленным, даже через обратный прокси, такой как lighttpd или nginx.Как загрузить контент из блога блоггера с помощью jquery?

Итак, до сих пор я знаю, что мне нужно позвонить jQuery.ajax() и указать на атомную ленту блога блоггера, но после этого я потерялся. Как я могу отделить данные xml после его получения, в отдельные записи/классы в блогах и, возможно, загружать изображения, которые будут размещены в этих сообщениях в блоге?

ответ

0

Ниже приведен пример обработки фида Atom. В этом примере я извлекаю локальный файл XML-файла. В реальном мире вам понадобится простой прокси-скрипт, чтобы получить его для вас, поскольку вы не можете делать запросы на междоменные XML-запросы. В двух словах, чтобы обрабатывать любой XML, используя jQuery, вы просто просматриваете коллекцию узлов, используя их имена «тегов», и захватываете их содержимое, которое впоследствии можно использовать повторно, по своему усмотрению.

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"> 
     </script> 
     <script> 
      //This example shows getting a local ATOM file. I am assuming that you will be using a proxy to fetch the feed as you 
      //are getting it from a remote source 

      //get the feed 
      $.get("feed.xml", function(data){ 

       //if XML loaded successfully find all blog entries 
       html = ""; 
       $(data).find("entry").each(function(){ 

        //get text for title and the content 
        title = $(this).find("title").text(); 

        content = $(this).find("content").text() 

        //create your own html 
        html += "<h1>" + title + "</h1>"; 
        html += "<div class='blogEntry'>" + content + "</div>" 

       }) 
       //append html to the container of yor choice 
       $(".blogClone").append(html) 
      }) 

     </script> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
     <title>Untitled Document</title> 
    </head> 
    <body> 
     <div class="blogClone"> 
     </div> 
    </body> 
</html> 

Если вы используете PHP на вашем сервере, это простой прокси-скрипт, который вы будете нуждаться в

<?php 
// PHP Proxy 
// Responds to both HTTP GET and POST requests 
// 
// Author: Abdul Qabiz 
// March 31st, 2006 
// 

// Get the url of to be proxied 
// Is it a POST or a GET? 
$url = ($_POST['url']) ? $_POST['url'] : $_GET['url']; 
$headers = ($_POST['headers']) ? $_POST['headers'] : $_GET['headers']; 
$mimeType = ($_POST['mimeType']) ? $_POST['mimeType'] : $_GET['mimeType']; 

//Start the Curl session 
$session = curl_init($url); 

// If it's a POST, put the POST data in the body 
if ($_POST['url']) { 
    $postvars = ''; 
    while ($element = current($_POST)) { 
     $postvars .= key($_POST).'='.$element.'&'; 
     next($_POST); 
    } 

    curl_setopt($session, CURLOPT_POST, true); 
    curl_setopt($session, CURLOPT_POSTFIELDS, $postvars); 
} 

// Don't return HTTP headers. Do return the contents of the call 
curl_setopt($session, CURLOPT_HEADER, ($headers == "true") ? true : false); 

curl_setopt($session, CURLOPT_FOLLOWLOCATION, true); 
//curl_setopt($ch, CURLOPT_TIMEOUT, 4); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 

// Make the call 
$response = curl_exec($session); 

if ($mimeType != "") { 
    // The web service returns XML. Set the Content-Type appropriately 
    header("Content-Type: ".$mimeType); 
} 

echo $response; 

curl_close($session); 

?> 
+0

Если бы я использовал прокси-сервер, который вы описываете, я бы добавил Проверка URL-адресов, чтобы хакеры не использовали ваш сервер для взлома других веб-сайтов, избегая проблем с вашим интернет-провайдером. – PleaseStand

+0

Это было бы разумно – Michal

+0

Кажется, что запуск php-прокси-скрипта - это единственный способ получить Atom-канал из другого домена. Спасибо, и я тоже посмотрю на это. – ertemplin