0

次のスクリプトのバリエーションを使用して、カレンダーの XML フィードからイベント情報を取得し、html ページに表示しています。

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "../../../evanced/lib/eventsxml.asp?dm=exml&nd=14&fe=1&alltime=1",
        dataType: "xml",
        success: xmlParserFeatured,
        error: function(){alert("We're sorry. Something didn't load correctly.");}
    });
});
function xmlParserFeatured(xml) {
    $(xml).find("item").each(function () {
        var xml_image           = $(this).find('imagepath').text();
        var xml_imagetext       = $(this).find('imagetext').text();
        var xml_title           = $(this).find('title').text();
        var xml_date            = $(this).find('date').text();
        var xml_time            = $(this).find('time').text();
        var xml_endtime         = $(this).find('endtime').text();
        var xml_location        = $(this).find('location').text();
        var xml_link            = $(this).find('link').text();
        var xml_description     = $(this).find('description').text();
        var xml_signup          = $(this).find('signup').text();
        var xml_eventtype           = $(this).find('prieventtype').text();
        var hasImage            = xml_image != "" && xml_image != "";
        var hasDate             = xml_date != "";
        var noEndTime           = xml_time != "" && xml_endtime == "";
        var hasEndTime          = xml_time != "" && xml_endtime != "";
        var hasLink             = xml_link != "";
        var hasDescription      = xml_description != "";
        var hasLocation         = xml_location != "";
        var hasSignUp           = xml_signup == "1";
        var eventType           = xml_eventtype == "Outreach" || xml_eventtype == "Teen" || xml_eventtype == "Youth";
        var content = ((eventType) ? "<div class='article " + xml_eventtype + "'>" : "<div class='article Adult'>") +
            ((hasImage) ? "<img class='article' src='" + xml_image + "' alt='" + xml_imagetext + "' />" : "")
            + "<p class='article_heading'>" + ((hasLink) ? "<a href='" + xml_link + "'>" + xml_title + "</a></p>" : "<p class='article_heading'>" + xml_title + "</p>") 
            + "<p class='article_subheading'>" + xml_date + ((hasEndTime) ?  " from " + xml_time + " to " + xml_endtime : "") + ((noEndTime) ? " at " + xml_time : "") + ((hasLocation) ? "<br />Location: " + xml_location + "</p>" : "") 
            + ((hasDescription) ? "<p>" + xml_description + "</p>" : "") 
            + ((hasSignUp) ? "<p><a href='" + xml_link + "'>Register Online</a>.</p>" : "") 
            + "<div style='clear: both; height: 1px;'></div></div>";
        $(".event_list").append(content);
});}

サイトを WordPress に移行中ですが、これを WP ページで動作させることができませんでした。私の質問は、a.) これは WordPress で機能するはずであり、b.) WordPress で同じ結果を得る別の/異なる/より良い方法はありますか? 私が Web で見つけたもののほとんどは、XML フィードをブログ投稿としてインポートすることについて説明していますが、これは私が探しているものではありません。

4

2 に答える 2

0

より単純なソリューションを支持して、これを廃棄することになりました。移入が必要なノードのみを使用することを決定し、代わりに php ソリューションを使用しました。

<?php
$url = "/evanced/lib/eventsxml.asp?dm=exml&nd=7&fe=1&alltime=1";
$xml = simplexml_load_file($url);

foreach($xml->item as$item)
    {
        echo "<div class='main-cal-event main-cal-event-".$item->prieventtype."'>";
        echo "<p><span class='event-title'><a href='".$item->link."'>".$item->title."</a></span><br />";
        echo "<span class='event-date'>".$item->date." from ".$item->time." to ".$item->endtime."</span><br />";
        echo "<span class='event-desc'>".$item->description."</span></p>";
        echo "<div class='fix'></div>";
        echo "</div>";
    }
?>
于 2013-02-22T01:00:36.917 に答える
0

まず、XML を HTML に変換するために XSL を試しましたか?

とにかくJavaScriptのソリューションなので、サーバーサイドであるWordpressとは関係ありません。

1) Wordpress で作成された HTML ドキュメントに、「event_list」クラスの要素が少なくとも 1 つ含まれていることを確認してください。これは標準の WP クラスではないようです。忘れてしまったのかもしれません。

2) 引っ越しの際にサイトのドメインを変更しましたか? 1 つのドメインが提供する JavaScript が、他のドメインにリクエストを送信できないことがあります。

于 2013-01-08T15:56:20.357 に答える