Table of contents:
This is a Stub article. Help the eZ Publish community by expanding it!
This article which describes in detail using the layout/set module view in various ways.
These are the example settings of an average layout.ini.append.php
span style="background-color: yellow;"> [podcast] PageLayout=podcast_rss_pagelayout.tpl ContentType=application/rss+xml # Related issue, https://issues.ez.no/12677 # If you remove this line, URLs that are built using url_alias_list will have the following prepended, '/layout/set/json/'. UseAccessPass=false UseFullUrl=true [podcast_episode] PageLayout=podcast_episode_pagelayout.tpl ContentType=text/html # Related issue, https://issues.ez.no/12677 UseAccessPass=false UseFullUrl=true [discussions] PageLayout=discussions_pagelayout.tpl ContentType=application/rss+xml [author] PageLayout=author_rss_pagelayout.tpl ContentType=application/rss+xml # ContentType=text/xml [comments] PageLayout=comment_rss_pagelayout.tpl ContentType=application/rss+xml # ContentType=text/xml [article_statistics.csv] PageLayout=article_statistics_pagelayout.tpl ContentType=text/csv # ContentType=text/txt
Example template overrides for layout/set view.
Example uri, '/layout/set/author?user=938'
{set-block scope=root variable=cache_ttl}0{/set-block} {def $user_id=ezhttp( 'user', 'get' )} <?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom"> <channel> <atom:link href="https://example.com/rss/feed/user/{$user_id}" rel="self" type="application/rss+xml"/> <title>Example User Feed</title> <link>https://example.com</link> <description>A feed of the articles being started at example.com!</description> <language>en-US</language> <image> <url>https://example.com/var/ezwebin_site/storage/images/media/images/example_logo_rss.png</url> <title>example BETA User Feed</title> <link>https://example.com</link> </image> {* ezhttp( 'user', 'get' )} |-- <b>{$view_parameters.user}</b> {$view_parameters|attribute(show,1) *} {if ezhttp_hasvariable( 'user', 'get' )} {def $topics=fetch( 'content', 'list', hash( 'parent_node_id', 42, 'limit', 30, 'depth', 3, 'class_filter_type', 'include', 'class_filter_array', array( 'article','comment' ), 'attribute_filter', array( array( 'owner', '=', $user_id ) ), 'sort_by', array( 'published', false() ) ) )} {foreach $topics as $t} <item> <title>{if $t.object.owner.data_map.pen_name.has_content}{$t.object.owner.data_map.pen_name.content}{else}{$t.data_map.author.data_text}{/if}{if $t.object.class_identifier|eq('article')} : {$t.name|trim|htmlentities}{else} on {$t.parent.name|trim|htmlentities}{/if}</title> <author>{$t.object.owner.data_map.user_account.content.email} ({if $t.object.owner.data_map.pen_name.has_content}{$t.object.owner.data_map.pen_name.content}{else}{$t.data_map.author.data_text}{/if})</author> <link>https://example.com/{$t.url_alias}</link> <guid>https://example.com/{$t.url_alias}</guid> <description><![CDATA[{$t.data_map.body.content.output.output_text}]]></description> <pubDate>{$t.object.published|datetime('custom', '%D, %d %M %Y %H:%i:%s PDT')}</pubDate>{* <pubDate>Sat, 04 Jul 2010 13:54:12 GMT</pubDate> *} </item> {/foreach}{/if} </channel> </rss>
Example uri, '/layout/set/articles'
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom"> <channel> <atom:link href="https://example.com/rss/feed/articles" rel="self" type="application/rss+xml"/> <title>example BETA article Feed</title> <link>https://example.com</link> <description>A feed of the articles from example.com</description> <language>en-US</language> <image> <url>https://example.com/var/ezwebin_site/storage/images/media/images/example-block-logo_rss.png</u rl> <title>Example article Feed</title> <link>https://example.com</link> </image> {def $topics=fetch( 'content', 'list', hash( 'parent_node_id', 77, 'limit', 30, 'sort_by', array( 'published', false() ) ) )}{foreach $topics as $t} <item> <title>{if $t.object.owner.data_map.pen_name.has_content}{$t.object.owner.data_map.pen_name.content}{else}{$t.data_map.author.data_text}{/if}: {$t.name|trim|was h}</title> <author>[email protected] ({if $t.object.owner.data_map.pen_name.has_content}{$t.object.owner.data_map.pen_name.content}{else}{$t.data_map.author.data_text}{/if })</author> <link>https://example.com/{$t.url_alias}</link> <guid>https://example.com/{$t.url_alias}</guid> <description><![CDATA[{$t.data_map.body.content.output.output_text}]]></description> <pubDate>{$t.object.published|datetime('custom', '%D, %d %M %Y %H:%i:%s PDT')}</pubDate>{* <pubDate>Sat, 04 Jul 2010 13:54:12 GMT</pubDate> *} </item> {/foreach} </channel> </rss>
Example uri, '/layout/set/podcast'
{def $podcast_node_id=4200 $max_episodes=50 $podcast=fetch( 'content', 'node', hash( 'node_id', $podcast_node_id ) ) $episodes=fetch( 'content', 'list', hash( 'parent_node_id', $podcast_node_id, 'limit', $max_episodes, 'class_filter_type', 'include', 'class_filter_array', array( 'podcast_episode' ), 'sort_by', array( 'published', false() ) ) ) $podcastDescription='Example.com: The home of ...' $podcastItunesSubtitle='Example subtitle' $podcastItunesSummary='Example summary' $podcastItunesKeywords='Example, keywords' $podcastItunesCategory='News & Opinion' $podcastImageUrl=concat('https://',ezsys('hostname'),'/extension/example/design/ezwebin/images/podcast/blocklogo144.jpg') $podcastItunesImageUrl=concat('https://',ezsys('hostname'),'/extension/example/design/ezwebin/images/podcast/ituneslogo.jpg') $podcastTitle=$podcast.data_map.title.content|trim|wash $siteUrl='https://example.com' $podcastUrl=concat($siteUrl,'/rss/feed/podcast') $podcastPageUrl=concat($siteUrl,'/podcast') $podcastItunesEmail='[email protected]' $audioFileUrl='' $audioFileLength='' $episodeDatamap='' }<?xml version="1.0" encoding="utf-8"?> <rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:itunes="https://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"> <channel> <title>{$podcastTitle}</title> <link>{$siteUrl}</link> <description>{$podcastDescription}</description> <language>en-US</language> <copyright>(C) example.com {currentdate()|datetime( 'custom', '%Y' )}</copyright> <image> <url>{$podcastImageUrl}</url> <title>{$podcastTitle}</title> <link>{$siteUrl}</link> <width>144</width> <height>144</height> </image> <atom:link href="{$podcastUrl}" rel="self" type="application/rss+xml"/> <category>{$podcastItunesCategory}</category> <itunes:image href="{$podcastItunesImageUrl}" /> <itunes:author>example.com</itunes:author> <itunes:subtitle>{$podcastItunesSubtitle}</itunes:subtitle> <itunes:summary>{$podcastItunesSummary}</itunes:summary> <itunes:keywords>{$podcastItunesKeywords}</itunes:keywords> <itunes:explicit>no</itunes:explicit> <itunes:owner> <itunes:name>example.com</itunes:name> <itunes:email>{$podcastItunesEmail}</itunes:email> </itunes:owner> <itunes:block>no</itunes:block> <itunes:category text="{$podcastItunesCategory}"/> <pubDate>{if $episodes[0]}{if $episodes[0].data_map.published.has_content}{$episodes[0].data_map.published.content.timestamp|datetime('custom', '%D, %d %M %Y %H:% i:%s -0700')}{else}{$episodes[0].object.published|datetime('custom', '%D, %d %M %Y %H:%i:%s -0700')}{/if}{/if}</pubDate> <lastBuildDate>{currentdate()|datetime('custom', '%D, %d %M %Y %H:%i:%s -0700')}</lastBuildDate> {foreach $episodes as $episode} {set $episodeDatamap=$episode.data_map $audioFileUrl=$episodeDatamap.audio.content $audioFileLength=$episodeDatamap.audio_length.content } <item> <title>{$episode.name|trim|wash}</title> {if $episodeDatamap.audio.has_content} <link>{$audioFileUrl}</link> {else} <link>{$podcastPageUrl}</link> {/if} <description>{$episodeDatamap.description.content|trim|wash}</description> <pubDate>{if $episodeDatamap.published.has_content}{$episodeDatamap.published.content.timestamp|datetime('custom', '%D, %d %M %Y %H:%i:%s -0700')}{else}{$episode.object.published|datetime('custom', '%D, %d %M %Y %H:%i:%s -0700')}{/if}</pubDate> {if $episodeDatamap.audio.has_content} <enclosure url="{$audioFileUrl}" length="{$audioFileLength}" type="audio/mpeg"/> <guid isPermaLink="false">{$audioFileUrl}</guid> {/if} <category>{$episodeDatamap.category.content|trim|wash}</category> <itunes:author>example.com</itunes:author> <itunes:subtitle>{$episodeDatamap.subtitle.content|trim|wash}</itunes:subtitle> <itunes:summary>{$episodeDatamap.description.content|trim|wash}</itunes:summary> <itunes:keywords>{$episodeDatamap.keywords.content.keyword_string|trim|wash}</itunes:keywords> <itunes:explicit>{if $episodeDatamap.explicit.content}yes{else}no{/if}</itunes:explicit> <itunes:duration>{$episodeDatamap.duration.content|trim}</itunes:duration> </item> {/foreach} </channel> </rss>
Example uri, '/layout/set/comment'
{set-block scope=root variable=cache_ttl}0{/set-block} <?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom"> <channel> <atom:link href="https://example.com/rss/feed/comments" rel="self" type="application/rss+xml"/> <title>Example Comment Feed</title> <link>https://example.com</link> <description>A feed of the comments from example.com.</description> <language>en-US</language> <image> <url>https://example.com/var/ezwebin_site/storage/images/media/images/example-block-logo-rss.png</url> <title>example BETA Comment Feed</title> <link>https://example.com</link> </image> {def $topics=fetch( 'content', 'list', hash( 'parent_node_id', 77, 'limit', 30, 'depth', 3, 'class_filter_type', 'include', 'class_filter_array', array( 'comment' ), 'sort_by', array( 'published', false() ) ) )} {if $topics|count|gt(0)} {foreach $topics as $t} <item> <title>{if $t.object.owner.data_map.pen_name.has_content}{$t.object.owner.data_map.pen_name.content}{else}{$t.data_map.author.data_text}{/if}{if $t.object.class _identifier|eq('article')} : {$t.name|trim|htmlentities}{else} on {$t.parent.name|trim|htmlentities}{/if}</title> <author>{$t.object.owner.data_map.user_account.content.email} ({if $t.object.owner.data_map.pen_name.has_content}{$t.object.owner.data_map.pen_name.content}{else}{$t.data_map.author.data_text}{/if})</author> <link>https://example.com/{$t.parent.url_alias}/(comment)/{$t.node_id}#comment-{$t.node_id}</link> <guid>https://example.com/{$t.parent.url_alias}/(comment)/{$t.node_id}#comment-{$t.node_id}</guid> <description><![CDATA[{$t.data_map.body.content.output.output_text}]]></description> <pubDate>{$t.object.published|datetime('custom', '%D, %d %M %Y %H:%i:%s PDT')}</pubDate>{* <pubDate>Sat, 04 Jul 2010 13:54:12 GMT</pubDate> *} </item> {/foreach}{/if} </channel> </rss>
Example uri, '/layout/set/article_statistics.csv?startDate=2010-07-14&endDate=2010-07-19'
{* Example: https://example.com/layout/set/article_statistics.csv?startDate=2010-07-14&endDate=2010-07-19 *} {def $articles=false() $commentCount=false() $articleTitle=false() $articleOwner=false() $articleDate=false() $articleTime=false() $articleWordCount=false() $articleFollowCount=false() $articleShareCount=false()} {if and( ezhttp_hasvariable( 'startDate', 'get' ), ezhttp_hasvariable( 'endDate', 'get' ) )} {def $startDate=ezhttp( 'startDate', 'get' )|explode("-") $endDate=ezhttp( 'endDate', 'get' )|explode("-")} {def $startDateTimestamp=maketime(0,0,0,$startDate.1,$startDate.2,$startDate.0) $endDateTimestamp=maketime(23,59,59,$endDate.1,$endDate.2,$endDate.0)} {set $articles=fetch( 'content', 'list', hash( 'parent_node_id', 77, 'class_filter_type', 'include', 'class_filter_array', array( 'article' ), 'sort_by', array( 'published', false() ), 'attribute_filter', array( array( 'published', '>=', $startDateTimestamp ), array( 'published', '<', $endDateTimestamp ) ) ) )} {else} {set $articles=fetch( 'content', 'list', hash( 'parent_node_id', 77, 'class_filter_type', 'include', 'class_filter_array', array( 'article' ), 'sort_by', array( 'published', false() ), 'limit', 10000 ) )} {/if}"Date","Time","Title","Who","Words","Comments","Followers","Shared","Post or Comment","Url" {foreach $articles as $con}{* article variables count etc. Counts the words in the body xml string *}{set $commentCount=fetch( 'content', 'tree_count', hash( 'parent_node_id', $con.object.main_node_id, 'class_filter_type', 'include', 'class_filter_array', array( 'comment' ) ) ) $articleTitle=$con.object.name|explode('"')|implode("") $articleOwner=$con.object.owner.name|explode('"')|implode("") $articleWordCount=$con.data_map.body.content.output.output_text|explode( '>' )|implode( '> ' )|strip_tags|simplify|explode( ' ' )|count $articleFollowCount=fetch( 'example', 'getfollowerscount', hash( 'id', $con.node_id ) ) $articleShareCount=fetch( 'example', 'getsharecounts', hash( 'id', $con.node_id ) ) $articleDate=$con.object.published|datetime( 'custom', '%d-%M' ) $articleTime=$con.object.published|datetime( 'custom', '%h:%i:%s %A' ) } "{$articleDate}",{$articleTime},"{$articleTitle}","{$articleOwner}",{$articleWordCount},{$commentCount},{$articleFollowCount},{$articleShareCount},"P","https://example.com/{$con.url_alias}" {/foreach}
Article provided by eZpedia
All text is available under the terms of the GNU Free Documentation License
Powered by eZ Publish Community Project 4.2011
Hosted by Swiss eZ Publish partner YMC