论坛风格切换
  • 2318阅读
  • 0回复

[经验分享]phpwind87文章后台可控制分栏前台是否显示方案 [复制链接]

上一主题 下一主题
离线rickyleo
 

发帖
315
金币
0
威望
99
只看楼主 倒序阅读 使用道具 楼主  发表于: 2012-05-03
可能文章的分栏太多?想隐藏掉一些不必要的分栏?那就往下看吧
先添加个字段:
  1. alter table pw_cms_column add ifdisplay tinyint(3) not null default '1' after allowoffer;

打开mode/cms/template/admin/column.htm文件
找到:
  1. <tr class="tr1 vt">
  2.                           <td class="td2">投稿</td>
  3.                           <td class="td2">
  4.                               <input type="radio" name="allowoffer" value="1" $allowoffer_Y> 开启
  5.                               <input type="radio" name="allowoffer" value="0" $allowoffer_N> 关闭
  6.                           </td>
  7.                       </tr>
下方添加:
  1. <tr class="tr1 vt">
  2.                           <td class="td2">前台显示</td>
  3.                           <td class="td2">
  4.                               <input type="radio" name="ifdisplay" value="1" $ifdisplay_Y> 开启
  5.                               <input type="radio" name="ifdisplay" value="0" $ifdisplay_N> 关闭
  6.                           </td>
  7.                       </tr>
打开mode/cms/admin/column.php
找到:
ifcheck(0, 'allowoffer');
下方添加如下代码:
ifcheck(1, 'ifdisplay');

找到:
S::gp(array('name', 'parentId', 'allowoffer', 'order', 'seotitle', 'seodesc', 'seokeywords'));
替换成:
S::gp(array('name', 'parentId', 'allowoffer', 'ifdisplay', 'order', 'seotitle', 'seodesc', 'seokeywords'));

找到:
$datas = array(array($parentId, $name, (int)$order, $allowoffer, $seotitle, $seodesc, $seokeywords));
替换成:
$datas = array(array($parentId, $name, (int)$order, $allowoffer, $ifdisplay, $seotitle, $seodesc, $seokeywords));


找到:
ifcheck($column['allowoffer'], 'allowoffer');
下方添加代码:
ifcheck($column['ifdisplay'], 'ifdisplay');

找到:
S::gp(array('cid', 'name', 'parentId', 'allowoffer', 'order', 'seotitle', 'seodesc', 'seokeywords'));
替换成:
S::gp(array('cid', 'name', 'parentId', 'allowoffer', 'ifdisplay', 'order', 'seotitle', 'seodesc', 'seokeywords'));

找到:
$data = array($parentId, $name, $order, $allowoffer, $seotitle, $seodesc, $seokeywords);
替换成:
$data = array($parentId, $name, $order, $allowoffer, $ifdisplay, $seotitle, $seodesc, $seokeywords);

打开mode/cms/lib/columnservice.class.php
找到方法:

function updateColumn($cid, $data) {.....}
替换成:
  1. function updateColumn($cid, $data) {
  2.         $_columnDB = $this->loadColumnDB();
  3.         $data = array('parent_id' => $data[0], '`name`' => $data[1], '`order`' => $data[2], 'allowoffer' => $data[3], 'ifdisplay' => $data[4],
  4.             'seotitle' => $data[5], 'seodesc' => $data[6], 'seokeywords' => $data[7]);
  5.         return $_columnDB->updateColumn($cid, $data);
  6.     }

打开mode/cms/lib/db/columndb.class.php
找到方法:

function insertColumn($datas) {...}
替换成:
  1. function insertColumn($datas) {
  2.         $_sql = "INSERT INTO " . $this->_tableName . " (`parent_id`,`name`,`order`,`allowoffer`,`ifdisplay`,`seotitle`,`seodesc`,`seokeywords`) VALUES " . S::sqlMulti($datas, false);
  3.         return $this->_db->update($_sql);
  4.     }

以上就可以在后台设置分栏前台显示是否开启或者关闭.下面在文章首页和阅读页进行显示控制.
打开mode/cms/template/default/list.htm
找到:
foreach($columns as $var){
下方添加代码:
if ($var[ifdisplay] == '0'){continue;}

打开mode/cms/template/default/view.htm
找到:
foreach($columns['sub'] as $var){
下方添加代码:
if ($var[ifdisplay] == '0' && ($var['column_id'] != $articleModule->columnId)){continue;}

修改完成!
下面提供phpwind87(20111111)版本的懒人包!










1条评分bug优化分+1
云天河 bug优化分 +1 - 2012-05-08
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
提到某人:
选择好友
上一个 下一个