在众多内容管理系统(CMS)中,DedeCMS因其强大的功能、良好的扩展性和简洁的界面设计而备受开发者喜爱。DedeCMS代码作为其核心,掌握其原理和技巧对于开发者来说至关重要。本文将从DedeCMS代码的组成、原理、实战技巧等方面进行深入解析,帮助开发者更好地理解和运用DedeCMS。
一、DedeCMS代码组成
DedeCMS代码主要由以下几个部分组成:
1. 核心文件:包括dede.php、config.php、common.inc.php等,是DedeCMS的核心文件,负责整个系统的运行和管理。
2. 模型文件:包括文章模型、产品模型、图片模型等,用于处理不同类型的数据。
3. 模板文件:包括index.html、list.html、show.html等,用于展示页面内容。
4. 插件文件:包括搜索插件、评论插件、友情链接插件等,用于扩展系统功能。
5. 模块文件:包括首页模块、文章模块、产品模块等,用于实现系统功能。
二、DedeCMS代码原理
1. MVC模式:DedeCMS采用MVC(Model-View-Controller)模式,将系统分为模型、视图和控制器三层,使代码结构清晰,易于维护。
2. 标签库:DedeCMS内置丰富的标签库,方便开发者快速实现页面布局和功能。
3. 缓存机制:DedeCMS采用缓存机制,提高系统运行效率。
4. 插件机制:DedeCMS支持插件机制,方便开发者扩展系统功能。
三、DedeCMS代码实战技巧
1. 模板编写技巧
布局标签:使用{dede:include filename=’head.html’ /}标签引入头部文件,使用{dede:include filename=’footer.html’ /}标签引入尾部文件。
内容标签:使用{dede:field.title/}标签获取文章标题,使用{dede:field.body/}标签获取。
循环标签:使用{dede:arclist/}标签遍历文章列表,使用{dede:field.title/}标签获取文章标题。
2. 模型开发技巧
继承:使用DedeCMS提供的模型类,继承并扩展其功能。
插件开发:开发插件,扩展模型功能。
3. 缓存优化技巧
开启缓存:在config.php文件中设置缓存参数,开启缓存。
缓存策略:根据实际情况,选择合适的缓存策略,如页面缓存、数据缓存等。
4. 性能优化技巧
数据库优化:优化数据库结构,提高查询效率。
代码优化:优化代码,减少资源消耗。
四、DedeCMS代码案例分析
以下是一个简单的DedeCMS代码案例分析:
1. 需求:实现一个文章列表页面,展示文章标题、作者、发布时间等信息。
2. 实现步骤
创建模型:创建一个文章模型,继承DedeCMS提供的文章模型类。
编写模板:编写文章列表模板,使用{dede:arclist/}标签遍历文章列表。
调用模型:在控制器中调用文章模型,获取文章列表数据。
3. 代码示例
“`php
// 文章模型
class ArticleModel extends DedecmsArticleModel
{
// 获取文章列表
public function getArticleList()
{
$where = “
dedecms如何执行PHP代码
你和我前二天的需求一样,都是在主站上调用bbs的内容.不过如果你的bbs和主站的数据库在一台服务器上的话,你的方法有可能导致dedecms解析模板出问题,因为你select_mysql_db了..我的解决方法是在bbs上开一个类似api的东东,用file_get_content远程抓取过来.用的是这篇文章里说的例子: dedecms模板中使用php语法
dedecms5.7伪静态怎么设置
dede5.7伪静态设置方法。
dede5.7伪静态设置七步法:
第一步、后台-系统参数-核心设置-是否使用伪静态:选择“是”;
注:你的网站空间是否支持伪静态,你可以与空间的IDC商联系一下,如果是自己的服务器,那就更好办了,自己动手,丰衣足食。一般来说,空间都是支持伪静
态的。Apache服务器伪静态相对简单,直接在.htaccess文件中加入相应伪静态规则即可;而IIS服务器伪静态的实现,则需要加载
Rewrite组件,然后配置httpd.ini文件。
第二步、如果你的网站已经存在生成的静态栏目或文章HTML,那么只需在后台-系统-SQL命令行工具中执行如下语句:
将所有文档设置为“仅动态浏览”:
update dede_archives set ismake=-1
将所有栏目设置为“使用动态页”:
update dede_arctype set isdefault=-1
第三步、列表页、文章页伪静态修改
打开/include/helpers/channelunit.helper.php。
(1)查找:
//动态文章
if($cfg_rewrite=='Y')
{
return$GLOBALS[“cfg_plus_dir”].”/view-“.$aid.'-1.html';
}
替换为
//动态文章
if($cfg_rewrite=='Y')
{
return”/DedeCMS/DedeCMS5.7-“.$aid.'-1.html';
}
意思是:将默认的/plus/view-1-1.html文章链接格式改为/DedeCMS/DedeCMS5.7-1-1.html。
(2)查找:
//动态
$reurl=$GLOBALS['cfg_phpurl'].”/list.php?tid=”.$typeid;
替换为
//动态
$reurl=”/category/list-“.$typeid.”.html”;
意思是:将默认的频道或是列表页URL/plus//list.php?tid=1变更为/dedecms/list-1.html形式。
第四步、列表分页伪静态修改
打开/include/arc.listview.class.php
查找:
$plist= str_replace('.php?tid=','-',$plist);
替换为
$plist= str_replace('plus/list.php?tid=',‘DedeCMS/DedeCMS5.7-',$plist);
将默认的plus/list.php?tid=替换成RMB/list-;
意思是:将默认的列表分页链接格式plus/list.php?tid=x$x$xl修改为DedeCMS/DedeCMS5.7-x-x-x.html。
第五步、文章分页伪静态
打开/include/arc.archives.class.php,找到获取动态的分页列表GetPagebreakDM()函数末尾处:
查找:
$PageList= str_replace(“plus/view.php?tid=”,”DedeCMS/DedeCMS5.7-“,$PageList);
替换为
$plist= str_replace('plus/view.php?tid=',’DedeCMS/DedeCMS5.7-',$plist);
将默认的plus/view.php?tid=替换成RMB/huilv-;
意思是:将默认的文章分页链接格式plus/view.php?tid=x$x$xl修改为DedeCMS/DedeCMS5.7-x-x-x.html
第六步、TAG标签伪静态
DedeCms默认的TAG标签URL,形如/tags.php?/dedecms模板/,是不是觉得有个问号不怎么爽,我们改成/tags/dedecms模板/,是不是好看多了。
下面我们来改一下,打开/include/taglib/tag.lib.php:
查找:
$row['link']=$cfg_cmsurl.”/tags.php?/”.urlencode($row['keyword']).”/”;
替换为
$row['link']=$cfg_cmsurl.”/tags/”.urlencode($row['keyword']).”/”;
这样就修改好了,上传你到你的网站,切记:要记得将原网站备份哦!!
第七步、httpd.ini伪静态规则:
[ISAPI_Rewrite]
# 3600= 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule ^(.*)/RMB/list-([0-9]+)\.html$1/plus/list\.php\?tid=$2 [I]
RewriteRule ^(.*)/RMB/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$1/plus/list\.php\?tid=$2&TotalResult=$3&PageNo=$4 [I]
RewriteRule ^(.*)/RMB/huilv-([0-9]+)-([0-9]+)\.html$1/plus/view\.php\?arcID=$2&pageno=$3 [I]
RewriteRule ^(.*)/(.*)_(.*)_([0-9]+)\.html$1/huilv/?from=$2&to=$3&num=$4 [I]
RewriteRule ^(.*)/tags\.html$1/tags\.php [I]
RewriteRule ^(.*)/tags/(.*)(?:(\?.*))*$1/tags\.php\?\/$2 [I]
RewriteRule ^(.*)/tags/(.*)\/(?:(\?.*))*$1/tags\.php\?\/$2\/ [I]
RewriteRule ^(.*)/tags/(.*)\/([0-9])(?:(\?.*))*$1/tags\.php\?\/$2\/$3 [I]
RewriteRule ^(.*)/tags/(.*)\/([0-9])\/(?:(\?.*))*$1/tags\.php\?\/$2\/$3\/ [I]
将上面代码保存为:httpd.ini上传到网站的根目录。
如无特特殊需求建议采用官方默认的生成静态的页面方式浏览。
dede怎么实现伪静态呢dedecms伪静态
如何将dedecms改为伪静态页面?
设置DEDE5.7伪静态的七步法:
第一步:后台-系统参数-核心设置-使用伪静态:选择是;
注:无论您的网站空是否支持伪静态,您都可以在空中联系IDC提供商。如果是自己的服务器,处理起来会比较容易。自己动手,丰衣足食。一般来说,空支持伪静态。Apache服务器伪静态相对简单,只需在。htaccess文件;要实现IIS服务器的伪静态,需要加载重写组件,然后配置httpd.ini文件。
第二步。如果生成的静态列或文章HTML已经存在于您的网站中,那么只需在后台-系统-SQL命令行工具中执行以下语句:
将所有文档设置为“仅动态浏览”:
updatedede_archivessetismake=-1将所有栏设置为“使用动态页面”:
updatedede_arctypesetisdefault=-1第三步,列表页,文章页伪静态修改。
打开/include/helpers/channelunit.helper.PHP
(1)查找:
if($cfg_rewrite==Y)
{
return$GLOBALS[cfg_plus_dir.$援助。-1.html;
}替换为
if($cfg_rewrite==Y)
{
return.$援助。-1.html;
}含义:将默认的/plus/view-1-1.html文章链接格式改为//DedeCMS/DedeCMS5.7-1-1.html1-1.html。
(2)查找:
$reurl=$GLOBALS[cfg_phpurl]./list.php?tid=.$typeid;替换为:
$reurl=/category/list-.$typeid..html;会默认频道或列表页面URL/plus//list.php吗?Tid=1更改为/dedecms/list-1.html形式。
步骤4:列表分页的伪静态修改。
打开/include/arc.listview.class.PHP。
查找:
$plist=str_replace(.php?tid=,-,$plist);用?替换
$plist=str_replace(plus/list.php?tid=,‘DedeCMS/DedeCMS5.7-,$plist);设置默认的plus/list.php?Tid=替换为人民币/列表-;
会默认列表分页链接格式plus/list.php吗?Tid=x$x$xl修改为DedeCMS/DedeCMS5.7-x-x-x.htmlx-x-x.html。
第五步,文章分页伪静态。
打开/include/arc.archives.class.PHP,找到GetPagebreakDM()函数的结尾,得到动态分页列表:
查找:
$PageList=str_replace(plus/view.php?tid=,DedeCMS/DedeCMS5.7-,$PageList);用?替换
$plist=str_replace(plus/view.php?tid=,’DedeCMS/DedeCMS5.7-,$plist);会默认plus/view.php吗?Tid=换成人民币/吕慧-;
含义:链接默认文章分页格式plus/view.php?Tid=x$x$xl修改为DedeCMS/DedeCMS5.7-x-x-x.htmlx-x-x.html。
步骤6:标记伪静态
DedeCms默认标签tagURL,比如/tags.php?/dedecmstemplate/,你不觉得有个问号太酷了吗?我们改成/tags/dedecmstemplate/,不是好很多吗?
我们改一下,打开/include/taglib/tag.lib.php:
查找:
$row[link]=$cfg_cmsurl./tags.php?/.urlencode($row[keyword])./;用?替换
$row[link]=$cfg_cmsurl./tags/.urlencode($row[keyword])./;所以修改一下,上传到你的网站,记得备份原网站!!
第七,httpd.ini伪静态规则:
[ISAPI_Rewrite]
#3600=1小时
高速时钟速率3600
重复限制32
重写者^(.*)/RMB/list-([0-9])\。html/plus/list\。php\?tid=[I]
重写者^(.*)/RMB/list-([0-9])-([0-9])-([0-9])\。html/plus/list\。php\?tid=$2&TotalResult=$3&PageNo=[I]
重写者^(.*)/人民币/吕慧-([0-9])-([0-9])\。html/plus/view\php\?arcID=$2&pageno=[I]
重写者^(.*)/(.*)_(.*)_([0-9])\.html$1/吕慧/?from=$2&to=$3&num=[I]
重写者^(.*)/tags\。html/tags\。php[I]
重写者^(.*)/tags/(。*)(?:(\?.*))*/tags\。php\?\/[I]
重写者^(.*)/tags/(。*)\/(?:(\?.*))*/tags\。php\?\/\/[I]
重写者^(.*)/tags/(。*)\/([0-9])(?:(\?.*))*/tags\。php\?\/\/[I]
重写者^(.*)/tags/(。*)\/([0-9])\/(?:(\?.*))*/tags\。php\?\/\/\/[I]将上述代码另存为:httpd.ini,上传到网站根目录。
如果没有特殊需求,建议按官方默认的静态页面生成方式浏览。
织梦网站伪静态是用apche还是nginx好呢?
Apache资格更老一些,比Nginx出来的早,在处理程序方面,Apache我个人认为更好一些!伪静态的作用是优化收录更好,浏览更人性化,例如伪静态的URL还可以被记住,动态的url根本没法记住!当然我说的是很少的一部分。




