ThinkCMF(二):多个分类下的文章显示并分页;导航高亮;大图轮播图(slides);点赞、收藏、浏览数组件的使用;redirect里用U方法添加地址

一、查找多个分类下的文章放在一个页面显示并分类where:id in(1,2,3);

<php>        $posts=sp_sql_posts_paged('field:post_title,post_date,object_id,term_id;order:post_date desc;where:term_id in(1,2,3)');
        </php> 
        <foreach name="posts['posts']" item="v">
            <div class="more_new_fo_l_do">
            <div class="more_new_fo_l_do_l"><a title="{$v.post_title}" target="_blank" href="{:leuu('article/index',array('id'=>$v['object_id'],'cid'=>$v['term_id']))}">{$v.post_title}</a></div><div class="more_new_fo_l_do_r">{:date('Y-m-d',strtotime($v['post_date']))}</div>//切换时间格式:如2017-01-01
        </div>
        </foreach>
        <div class="fenye"><ul>{$posts.page}</ul></div>//分页
View Code

 二、导航高亮,一个比较笨的方法,多建几个script,对应栏目,根据索引高亮显示

/*导航效果开始*/
    var sj = $(".cd_wai").children("ul").children("li:eq("+4+")");
    sj.append("<div class='sanjiao' id='sjao'></div>");//在高亮的li里面添加一个三角显示效果
    $(".cd_wai").children("ul").children("li:eq("+4+")").addClass("cur");
    $(".cd_wai").mouseenter(function(e) {
        $(this).children("ul").children("li").removeClass("cur");
    }).mouseleave(function(){
        $(this).children("ul").children("li:eq("+4+")").addClass("cur");    
    });
/*导航效果结束*/
View Code

 三、后台幻灯片制作轮播图来调取

<div id="banner_im_g">
    <div id="carousel-ad" class="carousel slide" data-ride="carousel">
       
        <div class="carousel-inner">
            <div class="item active" id="banner_lunbo"><!--banner1-->
               <php>
                $home_slides=sp_getslide("protal_index");
                /*var_dump($home_slides[1]['slide_pic']);*/
                </php>
                     <img class="lb_img banner_lb_img" src="{:sp_get_asset_upload_path($home_slides[1]['slide_pic'])}" alt="First slide">
                <!--<img class="lb_img banner_lb_img" src="__TMPL__Public/assets/images/banner_lb.jpg" alt="First slide">-->
            </div><!--banner1-->
 
            <!--banner2--><div class="item">
                <img class="lb_img banner_lb_img" src="{:sp_get_asset_upload_path($home_slides[0]['slide_pic'])}" alt="Second slide">
            </div><!--banner2-->

        </div>
    </div>
</div>
View Code

 四、点赞、收藏、浏览数组件的使用

1.thinkcmf个人用户中心->我的收藏页面(lzfc/user/favorite.html)、在文章页面(如:articel.html)里面添加收藏、点赞、浏览数组件

2.article_new.html(在此文章的head里面首先引入<link href="__TMPL__Public/assets/simpleboot/font-awesome/4.4.0/css/font-awesome.min.css"  rel="stylesheet" type="text/css">;路径为themes/simplebootx/;此css文件的作用是点赞收藏组件的图标显示)

<php> 
        $tag=M('posts')->where(array('id'=>$id))->select();
        $t=$tag[0];
        $tags=M('term_relationships')->where(array('object_id'=>$id))->select();
        $tas=$tags[0];
        </php>
<div><!--收藏开始-->
                <php>
                    $article_id = $t['id'];
                    $term_id = $tas['term_id'];
                    $post_titlea=mb_substr($t['post_title'], 0, 10, 'utf-8');
                    $post_titleb=mb_substr($t['post_title'], 0, 15, 'utf-8');
                </php>
                <!-- id="favorite_btn" href="{:U('user/favorite/do_favorite',array('id'=>$article_id))}" class="js-favorite-btn"-->
                <a id="favorite_btn" title="收藏此文章"  class="js-favorite-btn sc_dianzan" href="{:U('user/favorite/do_favorite',array('id'=>$article_id))}" data-direction="{$post_titleb}" data-title="{$post_titlea}" data-url="{:leuu('article/index',array('id'=>$article_id,'cid'=>$term_id))}" data-key="{:sp_get_favorite_key('posts',$article_id)}"><i class="fa fa-star-o"></i>
                </a>
                <script>
                $("#favorite_btn").click(function(){
                    var key = $("#favorite_btn").attr("data-key");
                    var title = $("#favorite_btn").attr("data-title");
                    var url = $("#favorite_btn").attr("data-url");
                    var direction = $("#favorite_btn").attr("data-direction");
                    $.ajax({
                        url:"{:U('user/favorite/shoucang')}",
                        data:{key:key,title:title,url:url,direction:direction},
                        datatype:"TEXT",
                        type:"POST"
                    })
                })
                </script>  
            </div><!--收藏结束-->
               <div><!--点赞开始-->
                <a title="点赞此文" href="{:U('article/do_like',array('id'=>$object_id))}" class="J_count_btn sc_dianzan"><i class="fa fa-thumbs-up"></i><span class="count">{$t['post_like']}(点赞次数)</span></a>   
            </div><!--点赞结束-->
            <div><!--浏览数结束-->
                <a title="此文被浏览&nbsp;{$t['post_hits']}&nbsp;次" class="sc_dianzan" href="javascript:;"><i class="fa fa-eye"></i><span>{$t['post_hits']}(浏览次数)</span></a>
            </div><!--浏览数结束-->
View Code

3.FavoriteController.class.php

<?php
namespace User\Controller;

use Common\Controller\MemberbaseController;

class FavoriteController extends MemberbaseController{
    
    // 前台个人中心我的收藏列表
    public function index(){
        $uid=sp_get_current_userid();
        $user_favorites_model=M("UserFavorites");
        $where=array("uid"=>$uid);
        
        $count=$user_favorites_model->where($where)->count();
        
        $page=$this->page($count,10);
        
        $favorites=$user_favorites_model->where($where)
        ->order("createtime desc")
        ->limit($page->firstRow,$page->listRows)
        ->select();
        
        $this->assign("page",$page->show("default"));
        
        $this->assign("favorites",$favorites);
        $this->display(":favorite");
    }
    //用户收藏试用
    //写此方法的作用是在下边的do_favorite里面接受不到前台传过来的key值,试了几种办法后没有实现,没办法,写了一个点击事件,先用ajax传到此方法,session保存,再在do_favorite方法里面提取session使用,前提是先提交shoucang()方法,再提交do_favorite()方法
    public function shoucang()
    {    $key = I('param.key'); 
         $title = I('param.title');
         $url = I('param.url');
        $direction = I('param.direction');
        session('key',$key);
         session('title',$title);
         session('url',$url);
         session('direction',$direction);
    }
    // 用户收藏
    public function do_favorite(){
        $key = session("key");
        $title = session("title");
        $url = session("url");
        $direction = session("direction");
        $key=sp_authcode($key);
        if($key){
            $authkey=C("AUTHCODE");
            $key=explode(" ", $key);
            $authcode=$key[0];
            if($authcode==C("AUTHCODE")){
                $table=$key[1];
                $object_id=$key[2];
                $post=I("post.");
                unset($post['key']);
                session('key',null); //删key++
                $post['table']=$table;
                $post['object_id']=$object_id;
                
                
                $uid=sp_get_current_userid();
                $post['uid']=$uid;
                $user_favorites_model=M("UserFavorites");
                $find_favorite=$user_favorites_model->where(array('table'=>$table,'object_id'=>$object_id,'uid'=>$uid))->find();
                if($find_favorite){
                    $this->error("亲,您已收藏过啦!",0);
                }else {
                    $post['title'] = $title;//++
                    $post['url'] = $url;//++
                    $post['description'] = $direction;//++
                    $post['createtime']=time();
                    $result=$user_favorites_model->add($post);
                    if($result){
                        $this->success("收藏成功!",0);
                        session('title',null); //删title
                        session('url',null); //删url
                        session('direction',null); //删direction
                    }else {
                        $this->error("收藏失败!",0);
                    }
                }
            }else{
                $this->error("非法操作,无合法密钥!",0);
            }
        }else{
            $this->error("非法操作,无密钥!",0);
        }
        
    }
    
    // 用户取消收藏
    public function delete_favorite(){
        $id=I("get.id",0,"intval");
        $uid=sp_get_current_userid();
        $post['uid']=$uid;
        $user_favorites_model=M("UserFavorites");
        $result=$user_favorites_model->where(array('id'=>$id,'uid'=>$uid))->delete();
        if($result){
            $this->success("取消收藏成功!");
        }else {
            $this->error("取消收藏失败!");
        }
    }
}
View Code

 五、redirect方法里面用U方法添加地址

redirect(U('list/index',array('id'=>159)));

 

 

 

 

____________

 

posted on 2017-04-28 14:14  逝年-  阅读(543)  评论(0)    收藏  举报