利用[后台]->[类别管理]为文章前后台添加类别名称【转】

原网址:http://blog.csdn.net/yanhui_wei/article/details/7943176

1.给专题添加文章时,可以选择类别:

2.给文章模型、图片模型、下载模型的栏目下添加文章内容时,默认不能选择类别:

3.文章模型、图片模型、下载模型的栏目下添加文章内容时,能不能像专题一样可以选择类别?

4.如,要完成如下功能:在PHPCMS的文章管理列表,要实现在文章标题前显示文章类别,这样就可以直接在文章列表里看到类别,不需要点击进入编辑页面才可以看到

完成方法:打开 phpcms\modules\content\templates\content_list.tpl.php 文件,找到

 1 <td>
 2         <?php
 3         if($status==99) {
 4             if($r[‘islink‘]) {
 5                 echo ‘<a href="‘.$r[‘url‘].‘" target="_blank">‘;
 6             } elseif(strpos($r[‘url‘],‘http://‘)!==false) {
 7                 echo ‘<a href="‘.$r[‘url‘].‘" target="_blank">‘;
 8             } else {
 9                 echo ‘<a href="‘.$release_siteurl.$r[‘url‘].‘" target="_blank">‘;
10             }
11         } else {
12             echo ‘<a href="javascript:;" onclick=\‘window.open("?m=content&c=content&a=public_preview&steps=‘.$steps.‘&catid=‘.$catid.‘&id=‘.$r[‘id‘].‘","manage")\‘>‘;
13         }?><span<?php echo title_style($r[‘style‘])?>><?php echo $r[‘title‘];?></span></a> <?php if($r[‘thumb‘]!=‘‘) {echo ‘<img src="‘.IMG_PATH.‘icon/small_img.gif" title="‘.L(‘thumb‘).‘">‘; } if($r[‘posids‘]) {echo ‘<img src="‘.IMG_PATH.‘icon/small_elite.gif" title="‘.L(‘elite‘).‘">‘;} if($r[‘islink‘]) {echo ‘ <img src="‘.IMG_PATH.‘icon/link.png" title="‘.L(‘islink_url‘).‘">‘;}?></td>
14         <td align=‘center‘ title="<?php echo L(‘today_hits‘);?>:<?php echo $hits_r[‘dayviews‘];?>
15 <?php echo L(‘yestoday_hits‘);?>:<?php echo $hits_r[‘yestodayviews‘];?>
16 <?php echo L(‘week_hits‘);?>:<?php echo $hits_r[‘weekviews‘];?>
17 <?php echo L(‘month_hits‘);?>:<?php echo $hits_r[‘monthviews‘];?>"><?php echo $hits_r[‘views‘];?></td>
18         <td align=‘center‘>
19         <?php
20         if($r[‘sysadd‘]==0) {
21             echo "<a href=‘?m=member&c=member&a=memberinfo&username=".urlencode($r[‘username‘])."&pc_hash=".$_SESSION[‘pc_hash‘]."‘ >".$r[‘username‘]."</a>";
22             echo ‘<img src="‘.IMG_PATH.‘icon/contribute.png" title="‘.L(‘member_contribute‘).‘">‘;
23         } else {
24             echo $r[‘username‘];
25         }
26         ?></td>

在其前面添加如下几行代码即可:

<span style="color:#CCC">
<?php $TYPE = getcache(‘type_content‘,‘commons‘);?>
【<?php echo $TYPE[$r[‘typeid‘]][‘name‘];?>】
</span>

5.如何在前台显示类别名称?

如果想在前台显示类别名称也可以通过上述方法来完成,

比如:在pc标签中完成类别名称的添加,注明:pc标签调用的都是phpcms/modules/content/libs/classes/content_tag.class文件,文件中的方法对应pc标签中的action属性,如:{pc:content action="lists"}{/pc} 对应文件中  public lists(){//代码}

第一种方法:在pc标签的lists方法中添加类别名称

/**
     * 列表页标签:主要返回的是主表中数据与附表中数据
     * @param $data
     */
    public function lists($data) {
        $catid = intval($data[‘catid‘]);                                    //pc标签中catid属性
        if(!$this->set_modelid($catid)) return false;                        //会根据栏目id->对应的模型id->对应的模型表
        if(isset($data[‘where‘])) {                                            //如果pc标签中设置了where属性,一般情况下不存在
            $sql = $data[‘where‘];
        } else {                                                            //如果pc标签中没有设置where属性
            $thumb = intval($data[‘thumb‘]) ? " AND thumb != ‘‘" : ‘‘;        //如果有thumb属性
            if($this->category[$catid][‘child‘]) {                            //当前栏目下是否存在子栏目
                $catids_str = $this->category[$catid][‘arrchildid‘];        //所有子栏目id,包括当前栏目自身id
                $pos = strpos($catids_str,‘,‘)+1;
                $catids_str = substr($catids_str, $pos);                    //所有子栏目id,不包括当前栏目自身id
                $sql = "status=99 AND catid IN ($catids_str)".$thumb;        //拼接成一个sql语句
            } else {
                    $sql = "status=99 AND catid=‘$catid‘".$thumb;                //如果当前栏目下不存在子栏目
            }
        }
        $order = $data[‘order‘];                                            //pc标签中order属性
        //$sql作为一个条件出现,调用的是model.calss.php文件中的select方法,返回结果集数组,并按照键名‘id‘排序
        $return = $this->db->select($sql, ‘*‘, $data[‘limit‘], $order, ‘‘, ‘id‘);//从数据库中获取主表数据,使用的也是sql语句查询
&nbsp;

        //如果需要在前台显示类别名称,可添加如下代码
        /*
        $TYPES = getcache(‘type_content‘,‘commons‘);//获取类别缓存文件,此文件缓存了所有与类别信息相关的信息
        foreach ($return as $key=>$v) {
            $return[$key][typename]=$TYPES[$v[‘typeid‘]][name];//给$return中的每篇文章追加一个类别字段
        }
        */

               &nbsp;//调用副表的数据
        if (isset($data[‘moreinfo‘]) && intval($data[‘moreinfo‘]) == 1) {    //如果pc标签中设置了moreinfo属性:是否调用附表数据
            $ids = array();
            //$return为返回的主表数据
            foreach ($return as $v) {                                        //循环主表中的记录信息:$v-主表中的每条记录
                if (isset($v[‘id‘]) && !empty($v[‘id‘])) {
                    $ids[] = $v[‘id‘];                                        //ids[]是主表中排序完成的文章id数组
                } else {
                    continue;
                }
            }
            if (!empty($ids)) {
                $this->db->table_name = $this->db->table_name.‘_data‘;        //副表名
                $ids = implode(‘\‘,\‘‘, $ids);                                //以逗号拼接成一个字符串
                $r = $this->db->select("`id` IN (‘$ids‘)", ‘*‘, ‘‘, ‘‘, ‘‘, ‘id‘);//查询与主表中数据有关的副表中的数据
                if (!empty($r)) {
                    foreach ($r as $k=>$v) {                                //副表中的数据
                        //$return:返回的主表中的数据,主表中的id字段值与附表中的id字段值是对应的,也就是说一篇文章在主表中存储的id跟在附表中存储的id的值是相等的
                        if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);//主表中数据与副表中数据合并
                    }
                }
            }
        }
        return $return;
    }

如果在pc标签的lists方法中添加类别名称,则列表页前台代码应该如下:

<!-- 列表页新闻,每页显示25条新闻 -->
        {pc:content action="lists" catid="$catid" num="25" order="id DESC" page="$page"}
        <ul class="list lh24 f14">
{loop $data $r}
    <li>
        <span class="rt">{date(‘Y-m-d H:i:s‘,$r[inputtime])}</span>·

        <!--类别名称-->
       &nbsp;<font color="blue">[$r[typename]]</font>

       &nbsp;<a href="{$r[url]}" target="_blank"{title_style($r[style])}>{$r[title]}</a></li>
    {if $n%5==0}<li class="bk20 hr">
        </li>
        {/if}
{/loop}
        </ul>
        <!-- 分页 -->
        <div id="pages" class="text-c">{$pages}</div>
{/pc}

第二种方法:直接在前台代码添加类别名称

如果直接在列表页前台代码中添加类别名称,则代码应该如下:

<!-- 列表页新闻,每页显示25条新闻 -->

       &nbsp;{php $TYPES = getcache(‘type_content‘,‘commons‘);}

       &nbsp;{pc:content action="lists" catid="$catid" num="25" order="id DESC" page="$page"}
        <ul class="list lh24 f14">
{loop $data $r}
    <li><span class="rt">{date(‘Y-m-d H:i:s‘,$r[inputtime])}</span><font color="blue">[ {$TYPES[$r[typeid]][name]}]</font>·<a href="{$r[url]}" target="_blank"{title_style($r[style])}>{$r[title]}</a></li>
    {if $n%5==0}<li class="bk20 hr"></li>{/if}
{/loop}
        </ul>
        <!-- 分页 -->
        <div id="pages" class="text-c">{$pages}</div>
{/pc}

效果都如下所示:

时间: 2024-08-08 20:31:19

利用[后台]->[类别管理]为文章前后台添加类别名称【转】的相关文章

MVC4做网站后台:模块管理1、修改模块信息

网站可能会包含一些模块:像文章.产品.图片.留言等. 栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等. 权限设置和上传设置以后专门考虑,先来显示或禁用模块. 1.在顶部导航栏添加管理连接 打开Home/Header.cshtml,在<nav>添加代码 2.添加Module接口 using Ninesky.Models; using System.Linq; namespace Ninesky.Areas.Admin.Repository { /// <summary&

如何为自己的博客文章自动添加移动版本(目前仅支持博客园)

前言 从2005年开始撰写第一篇技术博客,我也算是国内最早的一批技术博客作者之一了.其中中断过一段时间,但2008年重新启用之后,这个习惯一直保留到现在,目前已经累积的文章数量已经达到1226篇.这些文章绝大部分都是原创的,转载的有特别注明,文章内容大多是自己实际工作中遇到的问题和解决方案,或者我为企业做顾问服务.培训服务时解决的问题,我尤其喜欢在解决问题后做一点总结,并整理成一篇博客文章分享出来,一来是对思路的重新梳理,同时也希望也许日后能对其他人也有所帮助. 这些年随着移动互联网逐渐占据主流

.Net Core MVC 网站开发(Ninesky) 2.2、栏目管理功能-System区域添加

在asp或asp.net中为了方便网站的结构清晰,通常把具有类似功能的页面放到一个文件夹中,用户管理功能都放在Admin文件夹下,用户功能都放在Member文件夹下,在MVC中,通常使用区域(Areas)来组织,在.Net Core MVC 之前的MVC版本,区域都包含在Areas文件夹下,.Net Core MVC 与以前的版本还是有所不同,固定位置的限制,控制器和视图等都可以放置在任何地方,只要在控制器上注明区域名称就可以了. 创建区域的方式如下: 1.在项目的Startup.cs文件中注册

phpcms--模型管理,推荐位管理,类别管理

phpcms的默认设置不一定能满足需求,这个时候必须启用[模型管理],[推荐位管理],[类别管理]三个高级功能 为什么需要使用这些功能呢,因为后台添加内容的时候需要不同的模型 而模型通过什么来展现呢,必然是表单. 表单总体上就是单文本,多文本,下拉列表或多选项四大类.而其中下拉列表和多选项尤其重要. 所以我猜测三个栏目管理工具就是为此设置的,其中[推荐位管理]对应多选项,[类别管理]对应下拉菜单.如果上面两个都不能满足, 没办法只好修改表的字段了. 总结了上面的结论之后,我们大致可以得出下面的使

django项目后台权限管理功能。

对后台管理员进行分角色,分类别管理,每个管理员登录账号后只显示自己负责的权限范围. 创建后台管理数据库 models.py文件内 # 管理员表 class Superuser(models.Model): super_id=models.AutoField(primary_key=True) super_name=models.CharField(max_length=255) super_pwd=models.CharField(max_length=255) role = models.Ma

三、基础功能模块,用户类别管理——锁、EF并发处理、领域服务、应用服务的划分

在上一章节中,我们处理了MVC多级目录问题,参见<二.处理MVC多级目录问题——以ABP为基础架构的一个中等规模的OA开发日志>.从这章开始,我们将进入正式的开发过程.首先,我们要完成系统的基础设置模块(在后续的功能中,需要大量使用这些基础设置信息).和一般的OA系统不同,在律所OA系统中,用户类别管理是基础模块中非常重要.使用频率非常高的一个基础模块.虽然此功能只是很小的一个字典项设置,但是其中涉及了锁.并发处理.领域服务于应用服务的划分等繁琐问题. UI功能页面介绍(因用户功能未完成,欠缺

公众号群发文章支持添加小程序

微信小程序深夜凌晨放大招,公众号群发文章支持添加小程序,以下是微信公众平台的公告:为了方便用户在阅读文章时使用公众号提供的服务,公众号群发文章支持添加小程序. 公众号可将已关联的小程序添加到群发文章的正文中,点击后打开小程序. 可自定义小程序卡片的标题和图片,指定小程序打开的页面. 支持所有公众号群发文章的正文里添加小程序. 不知道怎么在公众号图文消息里添加小程序卡片?看这里: ①登录公众号后台,点击右侧“小程序”②选择已关联的小程序 ③确认展示方式(查看样式效果)④编辑标题.图片和小程序页面,

利用VSS高效管理项目DLL1

---恢复内容开始--- 一.引言 在实际的项目开发过程中大多数人会利用VSS来管理项目代码文件及其它资源,我们可以把解决方案中要用到的所有的第三方DLL放到解决方案下的某个项目下的一个固定的文件夹中,其它的多个项目都引用该文件夹下的DLL,这样就可以利用VSS来管理项目的DLL,但是这种解决办法还是有些不太合理之处: 1.一个解决方案下有多个项目,多个项目引用相同的DLL,那么这个专门用来存放DLL的文件夹应该放在与解决方案同级目录下面(也就是与.sln文件在同一目录下),而不是放在多个项目中

ecshop后台新功能及权限的添加

1 1.在后台"推荐管理"里添加"推荐人分成"."会员分成"两个操作功能以及权限 2 3 index.php?act=menu 4 5 incluedes/inc_priv.php:权限对照表.inc_menu.php:管理中心菜单数组 6 7 languages/zh_cn/admin/common.php:管理中心公共语言文件 8 9 1)在common.php管理中心公共语言文件中添加 10 11 $_LANG['affiliate_reg