eyoucms添加附属栏目功能

CMS:eyoucms
项目需求:一篇文档对应多个栏目
解决思路:
后端:在文档数据表添加一个附属栏目字段fslm_id,在文档编辑,添加页面添加附属栏目选项,获取当前模型对应的所有栏目放入到附属栏目选项中。

后台修改:

1.添加表字段
文档存储数据表:archives
添加数据字段:fslm_id

2.文章文档编辑
控制器:app>admin>controller>Article.php
列表视图:app>admin>template>article>index.htm
编辑视图:app>admin>template>article>edit.htm
添加视图:app>admin>template>article>add.htm

3.产品文档编辑
控制器:app>admin>controller>Product.php
列表视图:app>admin>template>product>index.htm
编辑视图:app>admin>template>product>edit.htm
添加视图:app>admin>template>product>add.htm

//
/5.5版本后台数据列表*/
/
/


<dl class="row">
  <dt class="tit">
    <label for="title"><em>*em>附属栏目label>
  dt>
  <dd class="opt">
    <select multiple class="form-control" name="fslm_id[]" id="fslm_id">
        {$arctype_html}
    select>
   dd>
dl>

Article.php

/**
* 文章列表
*/
public function index(){
//查询所有文档数据
$fslmcx = Db::name('archives')->select();

 /*遍历所有附属栏目id */
foreach($fslmcx as $k => $y){
    //筛选附属栏目为空的文档            
   if($y['fslm_id'] != false){
      //附属栏目获取反序列化
      $fslm_id = unserialize($y['fslm_id']);
      // 获取附属栏目id 
      foreach($fslm_id as $tyid){
      //筛选与当前栏目相同附属栏目id
        if($typeid == $tyid){
        //筛选同栏目下相同文档(重复文档)
        if(!($typeid == $y['typeid'])){
          //查询组装文档URL
          $newids = [$y['aid']];
                        
          $row_fslm = Db::name('archives')
              ->field($fields)
              ->alias('a')
              ->join('__ARCTYPE__ b', 'a.typeid = b.id', 'LEFT')
              ->where('a.aid', 'in', $newids)
              ->getAllWithIndex('aid');
                                                    
          // 查询栏目列表
           $fslm_column = Db::name('arctype')->where('id',$y['typeid'])->select();                           
          // 获取所属栏目名称
          $y['typename'] = $fslm_column['0']['typename'];
          // 获取文档URL,get_arcurl:自定义函数,可用url()助手函数重新定义
          $y['arcurl'] = get_arcurl($row_fslm[$y['aid']]);
          //放入$list数组中          
          $list[] = $y;
    
         }                    
       }
    }
}
}
/*附属栏目*/
}

//
/5.5版本前端数据获取*/
/
/
前端修改:
根据项目需求:首页有多个分类栏目需要展示附属栏目文档
修改文件:
视图:app>template>pc>index.htm

 
{php}  
$fslmd = [];
foreach ($fslmcx as $ks => $wendang){               
  if($wendang['fslm_id'] != false){                 
  $fslm_id = unserialize($wendang['fslm_id']);            
   foreach($fslm_id as $fskms){                     
    if($fskms == $field3['typeid']){                          
     if(!($field3['typeid'] == $wendang['typeid'])){                        
       // 获取文档URL
       $wendang['arcurl'] = url('home/View/index','aid='.$wendang['aid']);
       $fslmd[] = $wendang;
    }
   }
 }
}
}
{/php}


{volist name="fslmd" id="vo" offset="0" length='6'}
<li class="tupian_Column_p cpbk_changdu">
  <a href="{$vo.arcurl}"><div><img src="{$vo.litpic}" alt="">div>a>
  <a href="{$vo.arcurl}"><p>{$vo.title}p>a>
li>
{/volist}

控制器:app>home>controller>index.php

//查询附属栏目数据
$fslmcx = Db::name('archives')->where('is_recom', '1')->where('lang', 'cn')->select();
$this->assign('fslmcx', $fslmcx);

*5.6版本后不需要另外单独调用前端数据,只需把后台数据调用出来方便后台管理
/**********************/
/5.6版本后台数据列表
/
/**********************/

//查询所有文档数据
$fslmcx = Db::name('archives')->select();

// 获取附属栏目文章
        foreach($fslmcx as $k => $chanping){
            if(!empty($chanping['stypeid'])){
          
                $chanping['stypeid'] = explode(',',$chanping['stypeid']);
                foreach($chanping['stypeid'] as $kstypeid => $fushulm){
                   

                    if($fushulm == $typeid){
                        $newids = [$chanping['aid']];
                        $fields = "b.*, a.*, a.aid as aid";
                        $row_fslm = Db::name('archives')
                        ->field($fields)
                        ->alias('a')
                        ->join('__ARCTYPE__ b', 'a.typeid = b.id', 'LEFT')
                        ->where('a.aid', 'in', $newids)
                        ->getAllWithIndex('aid');

                        // 查询栏目列表
                        $fslm_column = Db::name('arctype')->where('id',$chanping['typeid'])->select();                           
                        $chanping['typename'] = $fslm_column['0']['typename'];
                        $chanping['arcurl'] = get_arcurl($row_fslm[$chanping['aid']]);      
                        $list[] = $chanping;

                    }
                }
            }
        }
/**********************/

//编辑
public function edit(){
//序列化数组
$fslm_id = serialize($post['fslm_id']);

// 存储数据,添加一条记录
$newData = array(
'fslm_id' => $fslm_id,
);
}

你可能感兴趣的:(php,php,开发语言,后端)