页面浏览次数


这是我制作的一个方法(我假设我们是在为一个名为“blog.php”的模板构建)-
1. 在模板中定义以下可编辑区域

<cms:template title='Blog' clonable='1'>
   ..
   ..
   <cms:editable label='Page hits' name='page_hits' type='text' search_type='integer' />
</cms:template>

2. 将以下代码置入模板的页面视图中

<cms:if k_is_page>
    <cms:no_cache />
    <cms:php>
        // identify bots
        global $CTX;
        if( isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT']) ){
            $CTX->set( 'is_bot', '1', 'global' );
        }        
    </cms:php>
    <cms:if "<cms:not is_bot />">
        <cms:db_persist 
            _masterpage=k_template_name 
            _page_id=k_page_id 
            _mode='edit'
            page_hits="<cms:add page_hits '1' />"
        /> 
    </cms:if>
</cms:if>

上面的代码只是每次访问页面时,点击计数器增加1(尽量避免机器人使用)。
请注意,我们使用cms:no_cache以防止页面浏览量被缓存,因为显然代码无法正常工作。

在前端,我们可以使用带有cms:pages标签的“page_hits”可编辑区域,例如以下内容将显示浏览量最高的五篇博客文章-

<cms:pages masterpage='blog.php' orderby='page_hits' limit='5'>
   ...
</cms:pages>