dcm Feeds - Gadreel/dcraft GitHub Wiki

TODO

Feeds and the CMS

Feed and Channel mean same thing.

Attributes

Examples

Blog

Event Listing

Schedule

Articles

Research

LWV HOME BLOG FEED

  • Show the latest first, going back in time.
  • Do not show entires more than 1 day in the future
  • Show max of 2 entries
<dcm.Feed Channel="Blog" Start="P1D" Max="2">
	<a class="ui-link" href="/Blog/@val|Field|Slug@">
		<h3>@val|Field|Title@</h3>
		<img src="@val|Field|Image@" />
		<dc.Markdown><![CDATA[@val|Field|Summary@ [Read More](/Blog/@val|Field|Slug@)]]></dc.Markdown>
	</a>
</dcm.Feed>

LWV HOME SCHEDULE FEED

  • Show the oldest first, going forward in time
  • Do not show entries that have already passed
  • Show max of 5 entries
<dcm.Feed Channel="Schedule" Reverse="true" Start="P0D" Max="5">
	<p>
		@val|Field|StartAt|tdfmt:MMMM~dd yyyy@ @val|HasField|EndAt|-@ @val|Field|EndAt|tdfmt|MMMM~dd@

		<a class="ui-link" href="/Schedule">
			@val|Field|Title@
		</a>
	</p>
</dcm.Feed>

LWV HOME NEWS FEED

  • Show the latest first, going back in time.
  • Do not show entires more than 1 day in the future
  • Show max of 2 entries
<dcm.Feed Channel="News" Start="P1D" Max="2">
	<div>
		<a class="ui-link" href="/News/@val|Field|Slug@">
			<h3>@val|Field|Title@</h3>
			<img src="@val|Field|Image@" />
			<dc.Markdown><![CDATA[@val|Field|Summary@ [Read More](/News/@val|Field|Slug@)]]></dc.Markdown>
		</a>
	</div>
</dcm.Feed>

MEM HOME EVENTS FEED

  • Show the oldest first, going forward in time
  • Do not show entires more than 1 day in the past
  • Show max of 12 entries
  • Same code used on Calendar page for second column
<dcm.Feed Channel="Calendar" Reverse="true" Start="-P1D" Max="2">
	<dc.Link class="event-entry" Page="/Calendar/@val|Path@">
		<div class="event-title"><h3>@val|Field|Title@</h3></div>
		<div class="event-date">@val|Field|StartAt@</div>
		<dc.Markdown class="event-content"><![CDATA[@val|Field|Description@ [Read More](/News/@val|Field|Slug@)]]></dc.Markdown>
	</dc.Link>
</dcm.Feed>

MEM EVENT DETAIL FEED

<dcm.FeedDetail Channel="Calendar" PathPart="1" PageMain="true">
	<div class="event-title"><h3>@val|Field|Title@</h3></div>
	<div class="event-date">@val|Field|StartAt@</div>
	<dc.Markdown class="event-content"><![CDATA[@val|Part|article@]]></dc.Markdown>
</dcm.FeedDetail>

uses a FeedAdapter to get Field and Part

if PageMain then replace Page attributes with feed's Title, KeyWords, Description, Image

see LWV and DGA

new SelectDirectRequest()
	.withTable("dcmFeed")
	.withSelect(new SelectFields()
		.withField("Id")
		.withField("dcmPath", "Path")
		.withSubField("dcmFields", "Published.en", "Published")
		.withSubField("dcmFields", "StartAt.en", "StartAt")
		.withSubField("dcmFields", "TimeZone.en", "TimeZone")
		.withSubField("dcmFields", "Title.en", "Title")
		.withSubField("dcmFields", "Category.en", "Category")
		.withSubField("dcmFields", "Link.en", "Link")
		.withSubField("dcmFields", "Description.en", "Description")
		.withSubField("dcmFields", "Details.en", "Details")
)
.withCollector(new CollectorFunc("dcmFeedScan").withExtra(new RecordStruct()
	.withField("Channel", "Calendar")
	.withField("Reverse", true)
	.withField("FromDate", new LocalDate().minusDays(1))
)),


new SelectDirectRequest()
	.withTable("dcmFeed")
	.withSelect(new SelectFields()
		.withField("Id")
		.withField("dcmPath", "Path")
		.withSubField("dcmFields", "Published.en", "Published")
		.withSubField("dcmFields", "Title.en", "Title")
		.withSubField("dcmFields", "Image.en", "Image")
		.withSubField("dcmFields", "Description.en", "Description")
		.withSubField("dcmFields", "Apprentice.en", "Apprentice")
)
.withCollector(new CollectorFunc("dcmFeedScan").withExtra(new RecordStruct()
	.withField("Channel", "Case-Studies")
	.withField("Max", 100)			// TODO next page / archive support
)),


** uses tags			

new SelectDirectRequest()
	.withTable("dcmFeed")
	.withSelect(new SelectFields()
		.withField("Id")
		.withField("dcmPath", "Path")
		.withField("dcmContentTags", "Tags")
		.withSubField("dcmFields", "Published.en", "Published")
		.withSubField("dcmFields", "Title.en", "Title")
		.withSubField("dcmFields", "Image.en", "Image")
		.withSubField("dcmFields", "Description.en", "Description")
)
.withCollector(new CollectorFunc("dcmFeedScan").withExtra(new RecordStruct()
	.withField("Channel", "Blog")
	.withField("Max", 100)			// TODO next page / archive support
)),
	
	

new SelectDirectRequest()
	.withTable("dcmFeed")
	.withSelect(new SelectFields()
		.withField("Id")
		.withField("dcmPath", "Path")
		.withSubField("dcmFields", "Published.en", "Published")
		.withSubField("dcmFields", "StartAt.en", "StartAt")
		.withSubField("dcmFields", "EndAt.en", "EndAt")
		.withSubField("dcmFields", "TimeZone.en", "TimeZone")
		.withSubField("dcmFields", "Title.en", "Title")
		.withSubField("dcmFields", "Where.en", "Where")
		//.withSubField("dcmFields", "Description.en", "Description")
)
.withWhere(
	new WhereEqual(new WhereField("dcmFields", "Public.en"), "yes")
)
.withCollector(new CollectorFunc("dcmFeedScan").withExtra(new RecordStruct()
	.withField("Channel", "Calendar")
	.withField("Reverse", true)
	.withField("FromDate", new LocalDate().minusDays(0))
	.withField("Max", 20)
)),
⚠️ **GitHub.com Fallback** ⚠️