Umbraco 工作提要 rss

Umbraco job feed rss

好吧,这个问题已经让我抓狂了一段时间了。我正在为一个在 Umbraco 上有网站的客户工作,他们是一家招聘公司,他们使用的是来自 First Choice (The Access Group) 的数据库。我以前从未使用过 C#,但我从修复站点中学到了很多东西。我遇到的一个主要问题是他们想要一个 RSS Feed 用于他们的工作,这样他们就可以发布到社交媒体上,但是,工作都是通过一个宏从他们的数据库中发布的,技术上 'empty' 当查看但被宏填充。

我已经创建了几种 RSS 风格(甚至求助于 Umbraco 插件,但没有帮助),我已经进入服务器并确保我使用了正确的语法、命名约定和标题工作,但仍然没有任何效果。

现在,我几乎 100% 确定我只是在犯傻,但我被难住了。任何帮助将不胜感激。

这是我目前获得的提要代码:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout = null;
Response.AddHeader("Content-Type", "text/xml");

const string DATE_FORMAT = "ddd, dd MMM yyyy hh:mm:ss zzz";
const string FEED_TITLE = "Millar Cameron Jobs";
const string FEED_DESCRIPTION = "Millar Cameron Jobs | Exciting job opportunites across the globe";
const string CREATOR_NAME = "tPegler";
const string CATEGORY = "Recruitment";
const string UPDATE_PERIOD = "daily";
const int UPDATE_FREQUENCY = 1;
const string LANGUAGE = "en-US";
const string HOME_PAGE_DOC_TYPE_ALIAS = "Home";
const string FEED_PARENT_DOC_TYPE_ALIAS = "TextPage";
const string ARTICLE_DOC_TYPE_ALIAS = "TextPage";
const string ARTICLE_TITLE_PROPERTY_ALIAS = "vm.JobDetails.Title";
const string ARTICLE_DATE_PROPERTY_ALIAS = "vm.JobDetails.Date";
const string ARTICLE_REFERENCE_ALIAS = "vm.JobDetails.JobRefNo";
const string ARTICLE_TERM_ALIAS = "vm.JobDetails.Term";
const string ARTICLE_LOCATION_ALIAS = "vm.JobDetails.Location";
const string ARTICLE_DESCRIPTION_ALIAS = "vm.JobDetails.Description";
const int CONTENT_PREVIEW_LENGTH = 500;

IPublishedContent homePage = Model.Content.AncestorOrSelf(1).DescendantsOrSelf().Where(x => x.DocumentTypeAlias == HOME_PAGE_DOC_TYPE_ALIAS).FirstOrDefault();
IPublishedContent feedParentPage = homePage.Descendants().Where(x => x.DocumentTypeAlias == FEED_PARENT_DOC_TYPE_ALIAS).FirstOrDefault();
IEnumerable<IPublishedContent> feedItems = feedParentPage.Descendants().Where(x => x.DocumentTypeAlias == ARTICLE_DOC_TYPE_ALIAS && x.IsVisible()).OrderByDescending(x => (DateTime)x.GetPropertyValue(ARTICLE_DATE_PROPERTY_ALIAS));
string siteUrl = homePage.UrlWithDomain();
string feedUrl = ((IPublishedContent)CurrentPage).UrlWithDomain();
}

<rss version="2.0"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:wfw="http://wellformedweb.org/CommentAPI/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:atom="http://www.w3.org/2005/Atom"
 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:slash="http://purl.org/rss/1.0/modules/slash/">

<channel>
    <title>@FEED_TITLE</title>
    <atom:link href="http://www.millarcameron.com/jobs" rel="self" type="application/rss+xml" />
    <link>http://www.millarcameron.com/jobs</link>
    <description>@FEED_DESCRIPTION</description>
    <language>@LANGUAGE</language>
    <sy:updatePeriod>@UPDATE_PERIOD</sy:updatePeriod>
    <sy:updateFrequency>@UPDATE_FREQUENCY</sy:updateFrequency>
    @foreach (IPublishedContent item in feedItems.OrderBy(ARTICLE_DATE_PROPERTY_ALIAS + " desc"))
    {
        string articleDescription = Umbraco.Truncate(umbraco.library.StripHtml(item.GetGridHtml("contentGrid", "bootstrap3").ToString()), CONTENT_PREVIEW_LENGTH).ToString().Replace("&hellip;", "...");
        @:<item>
            <title>@(item.HasProperty(ARTICLE_TITLE_PROPERTY_ALIAS) ? item.GetPropertyValue<string>(ARTICLE_TITLE_PROPERTY_ALIAS) : item.Name)</title>
            @:<link>
            @umbraco.library.NiceUrlWithDomain(item.Id)
            @:</link>
            <dc:creator><![CDATA[@CREATOR_NAME]]></dc:creator>
            <category><![CDATA[@CATEGORY]]></category>
            <guid isPermaLink="false">@item.UrlWithDomain()</guid>
                <description><![CDATA[@ARTICLE_LOCATION_ALIAS]]><![CDATA[@ARTICLE_TERM_ALIAS]]><![CDATA[@ARTICLE_DESCRIPTION_ALIAS]]></description>
        @:</item>
    }                                                                 
</channel>

除实际项目外,一切都显示正常。根本找不到。

编辑//**

所以,我仍然完全没有运气,我已经尝试了我能想到的一切。这是您在查看工作板的源代码时获得的代码:

<div class='jobpage'>

    <div ng-include="'/scripts/websuite/views/SearchResultsCtrl.html'"></div>

    <div ng-controller="latestJobsSettingsCtrl" ng-init="vm.setProperties('','10')">
    <div ng-include="'/scripts/websuite/views/LatestJobsCtrl.html'"></div>
</div>

这里是每个职位发布的代码。:

 <div class='container'>
    <div class="row clearfix">
          <div class="col-lg-4 column">
            <div class='jobpage'>




    <div ng-include="'/scripts/websuite/views/SearchFiltersCtrl.html'"></div>



            </div>
        </div>              <div class="col-lg-8 column">
            <div class='jobpage'>




    <div ng-include="'/scripts/websuite/views/JobDetailsCtrl.html'"></div>







    <div ng-include="'/scripts/websuite/views/ApplyForJobCtrl.html'"></div>

就是这样。如果我检查页面,一切都在那里,但在源代码中却没有。我知道很难将动态创建的内容拉到 RSS 提要,因为它实际上不是 'there' 但必须有某种方式。

你的主页下面有多个TextPage类型的页面吗?除非包含 Feed 项的页面是列表中的第一个页面,否则您只会看到其他页面之一。

最简单的测试方法是将 feed parent 页面的 ID 放在 RSS 标题或其他内容中,看看它是否提取了正确的 ID(您可以在后台查看以获取parent 页面的 ID)。如果他们的 ID 不同,那就是问题所在。

我注意到 parent 页面和文章页面都是 TextPage 类型,通常您会有一个单独的 DocType 来使定位和查询更容易。