zoukankan      html  css  js  c++  java
  • 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 UserController;
    
    use CommonControllerMemberbaseController;
    
    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)));

    ____________

  • 相关阅读:
    11 数据的增删改
    10 外键的变种 三种关系
    09 完整性约束
    03 body标签中的相关标签
    02 body标签中的相关标签
    01 HTML介绍和head标签
    08 数据类型(2)
    07 数据类型
    06 表的操作
    偶遇RecyclerView内部Bug
  • 原文地址:https://www.cnblogs.com/cuizhenyu/p/6781409.html
Copyright © 2011-2022 走看看