分类 帝国CMS 下的文章

帝国CMS把栏目下的文章转移到新栏目里,URL地址保持不变

有时候需要把一个栏目下的部分或全部文章,转移到别的栏目下。比如某个栏目现在要创建子栏目,创建子栏目之前,要先把它转换成非终极栏目,要转换成终极栏目,就必须把栏目下的文章转移了。

文章较多,且文章都被搜索引擎收录了,最好要保持URL地址不变,这样对SEO更友好。

如果是转移到新建栏目下,那很好办,可以保持URL地址不变。在新建栏目的“生成选项”里,找到“内容页存放目录”一项。
1,如果以前文章的URL结构是/AAA/BBB/文章id.html,选择“自定义”,输入AAA/BBB
2,下面的“内容页目录存放形式”,选择不设置目录
帝国CMS把栏目下的文章转移到新栏目里,URL地址保持不变.png

剩下就是更新系统各种缓存,更新信息页地址,然后重新生成新的栏目页及下面的文章页。如果没配置错的话,文章的URL是一点也不会改变的。

如果是转移到已存在的栏目下,怎么保持文章URL地址不变? 我之前实现过了几次,当时没有记录到博客里,现在倒搞忘记了。

帝国CMS列表模板list.var使用程序代码

1、增加模板时list.var模板需要勾选“使用程序代码”选项。
2、直接添加PHP代码,不需要加<??>程序开始和结束标记。
3、字段值数组变量为$r,对应的字段变量为$r[字段名],如:标题字段变量就是$r[title]。另外编号变量为$no。
这只是读取当前主表字段,如果是附表,要用副表或者其他表的字段值,要先用SQL取
4、将最终模板内容赋给$listtemp变量。





阅读剩余部分

帝国CMS批量提取正文内容到简介

代码:

<?php
define('EmpireCMSAdmin','1');
require("../class/connect.php");
require("../class/db_sql.php");
require("../class/functions.php");
require LoadLang("pub/fun.php");
require("../class/t_functions.php");
require("../data/dbcache/class.php");
require("../data/dbcache/MemberLevel.php");
$link=db_connect();
$empire=new mysqlquery();
$tbname="news";
$sid=(int)$_GET['startid'];
$b=0;
$rs=$empire->query("SELECT id,newstext FROM {$dbtbpre}ecms_{$tbname}_data_1 WHERE id>{$sid} limit 20");
        while($r=$empire->fetch($rs))
        {
                $smalltext='';
                !$r['newstext'] or $smalltext=SubSmalltextVal($r['newstext'],200);
                $smalltext=addslashes($smalltext);
                $smalltext &&
                $empire->query("UPDATE {$dbtbpre}ecms_{$tbname} SET smalltext='{$smalltext}' WHERE id=".$r[id]);
                $b=$r['id'];
        }
$b or exit('转换结束!');
echo "<meta http-equiv=\"refresh\" content=\"1;url=ChangeByID.php?startid=".$b."\">";
echo "已转换ID".$b;
db_close();
$empire=null;
?>

使用方法:
1、先备份数据库
2、以上代码保存到:/e/admin/ChangeSmallText.php
3、浏览器访问:www.xx.com/e/admin/ChangeSmallText.php

帝国CMS 用关键字做出Tags链接效果

思路:
1,帝国CMS的关键字一般是用英文逗号分隔,比如:小红,小明,小华
2,需要把英文逗号去掉,并且给每个关键字用html标签包起来,比如:<li>小红</li><li>小明</li><li>小华</li>

代码:

<?php 
$cr=$empire->fetch1("select classpagekey from {$dbtbpre}enewsclass where classid='$GLOBALS[navclassid]'");
$source=$cr[classpagekey];
$hello = explode(',',$source); 
for($index=0;$index<count($hello);$index++) 
{ 
echo "<li><a href='/e/tags/?tagname=$hello[$index]&tempid=8'>"; echo $hello[$index];echo "</a></li>"; 
} 
?>

说明:
1,先把关键字内容取出来
2,用php的explode函数,把字符串打散为数组
3,然后用for循环,把数组中的每个词语用指定的HTML标签包起来

帝国cms自定义列表和内容的动态页面

当帝国CMS栏目启用静态生成之后,这种/action/ListInfo.php动态页面就访问不到了,系统做了跳转。有时候我们希望栏目生成静态html之后,还可以通过动态地址访问栏目,并且启用另外的模板。

下载附件,上传到网站根目录。

1,列表页面使用方法:http://你的域名/info/ListInfo.php?classid=64&tempid=2
classid是栏目ID,tempid是列表模板ID

2,内容页面使用方法:http://你的域名/info/ShowInfo.php?id=23&tempid=1&classid=64
id是文章ID,tempid是内容模板ID,classid是栏目ID

如果模板id不指定,程序会自动判断栏目或内容设置的模板。

可以灵活应用,比如同一个列表,可以通过不同的模板ID,组成不同的URL,看不同的页面效果。

这两个PHP程序文件就是官方的e/action/ListInfo.php和ShowInfo.php这两个文件,只不过拿来简单地修改了一下,做下判断,就可以单独拿出来用了。

我甚至通过这种方式,制作过帝国cms的接口API地址。

info.zip