统计页面浏览量并按此排序


按页面浏览量排序,首先得统计浏览量,模版头部先定义一个可编辑区域:page_hits

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

然后在页面处统计并提交到数据库:

<cms:if k_is_page>
    <cms:no_cache />
    <cms:php>
        // 识别机器人程序
        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>

调用的话就是:

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

如果后台还想编辑此数据,使用自定义表单:

<cms:config_form_view>
    <cms:field 'page_hits'>
        <cms:show page_hits />
    </cms:field>
</cms:config_form_view>

 

注意2点:

1. 上面使用<cms: no_cache /> 禁用缓存,保证点击正常统计。
2. 需要开启databound-form插件,因为db_persist写入数据库需要用到。
在addon里kfunction.php里:
require_once( K_COUCH_DIR.'addons/data-bound-form/data-bound-form.php' );