2017-04-19 14 views
2

さて、この問題は私を今やしばらく運転しています。私はUmbracoにサイトを持っている顧客のために働いています。彼らは採用会社であり、First Choice(アクセスグループ)のデータベースを使用しています。以前はC#を使ったことはありませんでしたが、サイトに修正を加えるだけで多くのことを学びました。私が抱えている主な問題の1つは、ソーシャルメディアに投稿できるように自分たちの仕事のためのRSSフィードが必要だということです。しかし、ジョブはすべてデータベースから、見たときに技術的に「空」なマクロを通して投稿されます。マクロによって設定されます。Umbracoの求人情報rss

私は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> 

すべてが実際の項目を除いて細かい表示されます。

は、ここで私はこれまでフィードの持っているコードです。彼らはまったく見つからない。

EDIT // **

だから、私はまだ全然これで運がなかったと私は私が考えることができるすべてのものを試してみました。ここでジョブボードのソースを表示するときに取得コードは次のとおりです。

<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フィードに動的に作成されたコンテンツをプルするのは難しいことはわかっています。なぜなら、実際にはそこには存在しませんが、何らかの方法が必要だからです。

+0

Umbracoの記事は実際にノードになっているのですか、どこかのカスタムデータベーステーブルのエントリですか?上のコードではコンテンツノードであることを示し、説明には後者を示します。 –

+0

はい、ジョブの項目は外部データベースのものですが、上記のコードは、FEED_PARENT_DOC_TYPE_ALIASのdocタイプを持つ最初のノードのすべての欲望を反復処理します。これはUmbracoのコンテンツであり、外部データベースからロードされたコンテンツではありません。 – wingyip

+0

アイテムは公開されますか?実際にインデックスに登録されている(キャッシュ内にある)場合は、[プロパティ]タブを確認します。また、ローカルでデバッグできますか、これは可能ではありませんか? – Mark

答えて

0

ホームページの下に複数のテキストページタイプのページがありますか?フィードアイテムを含むものがリストの最初のアイテムでない限り、代わりに他のページの1つを取得します。

これをテストする最も簡単な方法は、フィードの親ページのIDをRSSのタイトルなどに入れて、正しいIDを引き出しているかどうかを確認することです(バックオフィスでチェックして親のIDを取得できます)あなたが望むページ)。彼らが同じIDでないなら、それは問題になるでしょう。

親ページと記事ページの両方がTextPage型であることに気付きました。通常、ターゲティングとクエリの両方を容易にするために、別々のDocTypeを使用します。

+0

はいです。残念ながら私はサイトを作っていないので、そこにあるものがたくさん設定されているので、回避策や修正を見つけることができますが、ちょっと混乱します。私はそれを委託した会社から委託してそれを外注した会社に継承したので、それは単なる混乱です。 ジョブ自体が動的にロードされている場合、RSSはページから情報を削るのに問題がありますか?ジョブはどこにあるのかは技術的には空ですが、ページ自体はスクリプトからいっぱいです。 –