ezPublish - 获取日期之间发布的对象

时间:2015-04-09 14:08:08

标签: ezpublish

我需要在“现在”和“一个月前”之间发布fetch篇文章(或对象)。代码如下所示:

{def $date = currentdate()}
{def $day = currentdate()|datetime( 'custom', '%d' )}
{def $month = currentdate()|datetime( 'custom', '%m' )}
{def $year = currentdate()|datetime( 'custom', '%Y' )}
{def $fromDate = maketime(0,0,0,$month|dec(), $day, $year)}

{def $items = fetch(content, list, hash(
    'parent_node_id', 10,
    'attribute_filter', array('and', 
                                    array('article/publish_date', '<=', $data),
                                    array('article/publish_date', '>', $fromDate),
                                    array( 'priority', '>=', 0 )),                           
    'class_filter_type',    'include',
    'class_filter_array',   array('article')
))}

不幸的是,没有任何结果。当我从$fromDate中移除fetch数组时,它可以正常工作。

1 个答案:

答案 0 :(得分:1)

简而言之,您的模板提取代码不准确(无论是在此处还是在您的模板中)。

行,“array('article / publish_date','&lt; =',$ data),”应该是“数组('article / publish_date','&lt; =',$ date),”而不是修复变量拼写错误。

此外,您的日期时间戳比较逻辑(运算符)用法也不正确(我认为)。自从我上次做了你正在做的事情已经有一段时间了,但是当我最后做了它时,我使用了以下逻辑。

{* Example: http://example/layout/set/content_statistics.csv/(startDate)/2010-07-14/(endDate)/2010-07-19/ *}
{def $articles=false()}

{if and( is_set( $view_parameters.startDate ), is_set( $view_parameters.endDate ) )}

{def $startDate=$view_parameters.startDate|explode("-")
$endDate=$view_parameters.endDate|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}

请注意,属性过滤日期时间戳比较运算符使用了一个非常不同的公式,re:'&gt; =''&lt;'我认为这个例子对你来说会更好。

     'attribute_filter', array( array( 'published', '>=', $startDateTimestamp ),
                                array( 'published', '<', $endDateTimestamp ) )
 ) )}

我希望这有帮助!

干杯, 荒地

注意:我从eZpedia借用了上述示例,但由于我不确定链接到社区文档的政策(即使它有问题的答案),我也不敢在这里链接:http://www.ezpedia.org/en/solution/how_to_fetch_content_based_on_view_parameter_date_range < / p>