对于想了解织梦CMS(dedecms)模板制作之二循环一级导航,判断输出二级导航的读者,本文将提供新的信息,我们将详细介绍织梦二级导航调用,并且为您提供关于DEDECMSJSON数据生成DEDECMS
对于想了解织梦CMS(dedecms)模板制作之二循环一级导航,判断输出二级导航的读者,本文将提供新的信息,我们将详细介绍织梦二级导航调用,并且为您提供关于DEDECMS JSON数据生成 DEDECMS JSON接口制作、DedeCMS 数据负载性能优化方案 简单几招让你 DedeCMS 提速 N 倍、dedecms 织梦cms 修改会员登录后内容、Dedecms(织梦CMS)子栏目高亮操作的有价值信息。
本文目录一览:- 织梦CMS(dedecms)模板制作之二循环一级导航,判断输出二级导航(织梦二级导航调用)
- DEDECMS JSON数据生成 DEDECMS JSON接口制作
- DedeCMS 数据负载性能优化方案 简单几招让你 DedeCMS 提速 N 倍
- dedecms 织梦cms 修改会员登录后内容
- Dedecms(织梦CMS)子栏目高亮操作
织梦CMS(dedecms)模板制作之二循环一级导航,判断输出二级导航(织梦二级导航调用)
《织梦CMS(Dedecms)模板制作之二循环一级导航,判断输出二级导航》要点:
本文介绍了织梦CMS(Dedecms)模板制作之二循环一级导航,判断输出二级导航,希望对您有用。如果有疑问,可以联系我们。
《织梦CMS(Dedecms)模板制作之二循环一级导航,判断输出二级导航》是否对您有启发,欢迎查看更多与《织梦CMS(Dedecms)模板制作之二循环一级导航,判断输出二级导航》相关教程,学精学透。小编PHP学院为您提供精彩教程。
@H_301_8@在织梦建站修改模板的时候,现在很多html5+css3的静态网站模板都要有二级导航,Dedecms(织梦)(下文简称dede)没有单独的标签可以直接调用出顶级和二级栏目名.这样在做站点导航的时候,没有二级栏目确实很不爽.那么怎么能力即循环输出一级导航,又能判断输出二级导航,为什么要判断呢,因为有的一级导航没有二级导航的.
经过全栈达人的反复研究,探索出一套完美的办理方案,下图是我想要实现的效果,如何实现呢?
好吧,下面把代码分享给大家.
实现的效果便是这样的.
做为一名法式猿,辛苦了.
DEDECMS JSON数据生成 DEDECMS JSON接口制作
json数据格式可以方便不同站点之间进行数据调用引用,当然我们的DEDECMS也可以实现全站数据生成JSON供其他站点调用,代码很简单,主要用到include/json.class.php。
织梦本身是自带json标签的,调用办法:
{dede:json url='' cache=300}
[field:id/]-[field:title/]<br/>
{/dede:json}
这个标签调用例子在织梦手册里已经给我们提供了,url是一个远程json接口地址,这个接口文件json.php代码 里面,*后的返回必须是把数据通过json_encode($feeds)系统函数,进行json编码后,通过echo或print()函数来打印出来,这二点是必须的,然后,在前台我们就可以通过$.ajax()或$.getjson()来获取数据。织梦系统给我们提供了一个json类,在include/json.class.php文件里面,也就是是说,我们在对php文件转换json编码,就有了二种办法:
1.直接用php系统给我们提供的系统函数,json_encode(),我建立大家用这个,即简单又省事,既然,php系统给我们提供了,我们可以不用织梦系统提供的。
2.就是用织梦系统提供的,encode(),在使用前,首先引入json.class.php,即:
require_once(DEDEINC.'/json.class.php');
$json = new Services_JSON(SERVICES_JSON_SUPPRESS_ERRORS);
echo $json->encode($reval);
$reval这个变量是我们从数据库或其它地方得到的,一般是一个二维数组,例如下:
Array (
[0] => Array ( [id] => 95 [title] => 原图设计)
[1] => Array ( [id] => 113 [title] => ssssssssssss)
[2] => Array ( [id] => 111 [title] => hjhj )
[3] => Array ( [id] => 110 [title] => ssssssssssss)
)
经echo 以后,显示的内容如下所示。
[
{"id":"95","title":"\u539f\u521b"},
{"id":"113","title":"ssssssssssss"},
{"id":"111","title":"hjhj"},
{"id":"110","title":"ssssssssssss"}
]
这是经过encode()或用json_encode()后,显示的内容。即,用中括号括起来的,几个json数据,这个数据回给请求的$.ajax()或$.getjson(),并由其对这个数据进行处理,显示我们相要的结果。
知道了原理,接下来就是详细实现办法,如下:
首先新建一个PHP文件,命名为json.php(也可以新建个文件夹命名为api,然后PHP命名为index.php,这样调用的时候就只需要你的域名/api这样的方式调用),用于作为被调用的API接口,代码如下:
<?php
$cfg_NotPrintHead = false;
header("Content-Type: text/html; charset=utf-8");
include_once (dirname(__FILE__)."/../include/common.inc.php");
error_reporting(E_ALL || ~E_NOTICE);
require_once(DEDEINC.'/json.class.php');
$reval = array();
$dsql->SetQuery("SELECT id,title FROM `dede_archives` ORDER BY id DESC LIMIT 0,10");
$dsql->Execute('me');
while ($row = $dsql->GetArray('me')) {
$row['title'] = gb2utf8($row['title']);
$reval[] = $row;
}
$json = new Services_JSON(SERVICES_JSON_SUPPRESS_ERRORS);
echo $json->encode($reval);
?>
这里代码有进行了GBK转UTF8的操作,所以兼容GBK版的DEDECMS
调用办法:
{dede:json url='域名/json.php' cache=300}
[field:id/]-[field:title/]<br/>
{/dede:json}
把调用代码放到你你需要的地方就行
本文章网址:http://www.ppssdd.com/code/10237.html。转载请保留出处,谢谢合作!DedeCMS 数据负载性能优化方案 简单几招让你 DedeCMS 提速 N 倍
前文介绍了 DedeCMS 栏目列表页实现完美分页的方法,避免了大部分重复栏目标题对搜索引擎的影响,对 SEO 更有利。今天,分享一下 DedeCMS 数据负载性能优化的方法。
接触织梦也有三年多时间了,对它可谓是又爱又恨。它的模板简单易用,标签调用更是灵活,二次开发也非常方便。可是,站点数据庞大起来的时候(30 多 万条),后台就会变得异常缓慢,生成 HTML 也很吃力,毫不夸张的说,头发都等白了。这不禁让我对 DedeCMS 数据负载性能产生了置疑?
查阅了相关资料,结合自身站点实际,还是总结出了一套不错的 DedeCMS 数据负载性能优化方案。废话不说,直接进入正题。
1)数据分表存储 减轻数据单表压力
自织梦 V5 版本起,DedeCMS 开始分表存储以提高系统负载性能,确实在一定程度上缓解了数据压力。现在最新的 DedeCMS V5.7 版本已经出来了,据官方介绍,V5.7 调整了缓存处理,应付 50 万以内数据没问题,至于真实性无从考究。如果官方陈述属实的话,对于中小型站长来 说确实是件好事,正常百万级内数据也不用过多担心了。
分表存储如何操作?
如果你只是个人或企业等小型站点,数据量也就撑死上万,那完全不用考虑分表存储,DedeCMS 完全可以胜任。分表操作很简单,你只需要直接进入后 台,新建模型,然后设置一个栏目对应一个模型。个人建议一个大的频道栏目及子栏目对应一个模型,这要根据你的栏目可能存储的数据来做计划,考虑实际一点的 分表方案。
2)修改系统参数 arclist 标签另类优化
在 DedeCMS V5 版本中,官方其实已经做了极力优化,引入了缓存机制。其实影响 HTML 生成速度的罪魁祸首还是模板中的 arclist 标签,很多站长喜欢用 arclist 标签来调用最新、热门、推荐、头条等文章列表,但是 arclist 标签每次都带着一大堆条件去主表中查询,可能还会关联附加表,对一次性生 成大量文章来说,只是重复使用 arclist 标签对数据库重复查询罢了,自然会花去大量时间。现在 DedeCMS 新的版本中,生成 HTML 时 arclist 标签会直接调用缓存数据,省去 arclist 标签重复查询数据库的时间,顿时让上述工作变得轻松起来,生成速度得到提升也是必然的。你只用在系统参数 -> 性能选项中,找到 arclist 标签调用缓存(cfg_index_cache)(0 不启用,大于 0 值为多少秒),根据自身实际需求调整缓存调用时间。
其实,还有一种解决办法,就是麻烦了一些,但是对性能提升是非常显著的。arclist 标签调用缓存虽说一定程度上提高了 HTML 生成速度,但是还是需要对 arclist 缓存进行判断,如果能把这部分时间也省去,那是不是会更快呢?答案是肯 定确定以及双重否定。我们可以通过 freelist (自由列表) 功能事先生成最新、热门、推荐、头条等文章列表页面,然后用 include 标签直接引入到 模板里,标签格式为:{dede:include file=’文章列表页面文件名称’ ismake=’ no’/}。如果你的站长数据很庞大,服务器硬件配置也一般的话,何不尝试一下呢?
另外,系统参数 - 核心设置里默认的关键字替换功能(cfg_keyword_replace)是开启的,如果文章是采集过来的,还是关闭的好,有很多关键字都毫无意义,甚至会有乱码导致生成出错,关掉此功能对提高系统性能是有一定帮助的。
3)数据库表索引优化 性能大幅提升
为什么要对 DedeCMS 数据库表索引进行优化呢?很简单,在 Mysql 中,索引无疑是最有效的加快查询的工具了,一个合理的索引组合会极大地提升 你的查询效率和系统性能。言归正传,你可以通过 phpmyadmin 或是一个叫 Navicat for MySQL 的软件(推荐)来管理你的数据库。
分析 DEDECMS 数据表信息,不难发现,所有的文章数据是存储在 dede_archives 和 dede_arctiny,以及对应的 dede_addonarticle 附加表中的。生成 HTML 时,sql 查询主要围绕这三张表来的。个人认为,凡是要排序的字段和查询条件的字段及文档 ID 都要建立索引,如果一个没有建立,将会严重影响 MySQL 的查询效率,最终导致生成速度变慢。DEDECMS 数据表索引建立方法如下:
a)dede_archives,是文章的主表,存储文章标题、关键 字、描述、发布时间等信息,10 万数据的表大小可能在 30MB 左右,也是我们优化的重点。你需要建立的索引字段有,id、channel、 pubdate、sortrank、ismake、typeid、mainindex、lastpost;其中,像系统默认的 mainindex 和 lastpost 这两个组合索引,个人认为存在意义不大,可以删除,自己掂量。需要注意的是,click 字段,是文档的点击数,此字段更新频率,建立索引 后会对系统维护带来一定压力,另外也有人说频繁更新的建立索引会容易导致数据库损坏,也无从查证。个人建议 click 字段保留,不建立索引。
b)dede_arctiny,这个表比较小,10 万数据的表大小不到 5MB,建议不建立索引,可以将自带的删除掉,或者只保留 sortrank 索引。
c)dede_addonarticle,是文章附加表,主要是用来存储文章内容的,不作索引考虑。
以上索引成功建立后,再测试下你的 HTML 生成速度,是不是让你精神一振呢?
4)搭建胜过 Apache 十倍的高并发 Web 服务器 Nginx + PHP(FastCGI)
Web 服务器的重要性不需多言,对提升网站性能有着直接影响。在 PHP 开发中,最常用的环境莫过于在 LAMP:Linux+apache+mysql+php 了,在 windows 下有 WAMP:Windows+apache/iis+mysql+php,我的 WEB 站点也是在这种环境下开发的。Nginx + PHP(FastCGI)无疑是你最好的选择,在 Windows 和 Linux 下都可以安装,只是 Windows 下的 Nginx 表现要远远逊色于 Linux。
DedeCMS 系统运行是依赖 PHP+MYSQL 环境的,所以说一个运行快、资源消耗小的 Web 服务器对提升系统性能有多重要。如果条件允许的条件,还是推荐下 Nginx + PHP(FastCGI)这种 WEB 服务器环境。
以上就是 DedeCMS 数据负载性能的优化方案,针对的是有独立 WEB 服务器或控制权限的站长,至于虚拟主机想 达到这个速度还是很费劲的,但是也可以作为 DedeCMS 性能优化的一个参考依据,自己琢磨琢磨了。当然,如果有更好的提高 DedeCMS 数据负载性能的 办法,还希望分享下。其实,正常情况下(不包括采集),一般站点数据量也都有限,20 万就很了不起了吧?我想,以上的 DedeCMS 优化方案足以解决了。 真到了百万级、千万级数据的时候,也不是一般站长需要考虑的事了。
DIV+CSS 布局之浏览器兼容问题及 CSS Hack 使用方法
dedecms 织梦cms 修改会员登录后内容
3.按需要修改以下内容<div> <div>你好:<strong><?php echo $cfg_ml->M_UserName; ?></strong>,欢迎登录 </div> <div> <a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/index.php"><img src=http://www.dede58.com/a/dedejq/"<?php echo $face;?>" width="52" height="52" /></a> </div> <div> <ul> <li><a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/guestbook_admin.php">我的留言</a></li> <li><a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/mystow.php">我的收藏</a></li> <li><a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/article_add.php">发表新闻</a></li> <li><a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/myfriend.php">好友管理</a></li> <li><a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/visit-history.php">访客记录</a></li> <li><a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/search.php">查找好友</a></li> </ul> </div> <div> <a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/index.php">会员中心</a> | <a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/edit_fullinfo.php">资料</a> | <a href=http://www.dede58.com/a/dedejq/"<?php echo $myurl;?>">空间</a> | <a href=http://www.dede58.com/a/dedejq/"<?php echo $cfg_memberurl; ?>/index_do.php?fmdo=日志in&dopost=exit">退出登录</a> </div></div><!--/userinfo -->
本文章网址:http://www.ppssdd.com/code/13988.html。转载请保留出处,谢谢合作!Dedecms(织梦CMS)子栏目高亮操作
前言
继续来说说织梦(坑爹)CMS的问题吧。
场景:
企业动态下,分别有如下六个栏目:
要求点击到哪个栏目,哪个栏目则高亮显示
本来嘛,这不是so easy吗?(这里指PHP的其他cms)
但是对于dede,我上网看了半天,标签调用方法都尝试了,貌似没戏,当然,涉及到改源码一律忽略,没必要。(浪费时间,增加风险)
那么问题来了,怎么在短时间内解决这个问题呢?
方案
这里能想到最简单省事的就是使用Js了,当然,有人说你在栏目中判断id不就行了吗?是啊,但是id不能写死啊,否则后期用户更改栏目岂不是不灵活了。
好了,说正事。
下面是我上面调用的第一张图的html代码:
<divcurrent_typedir="{dede:field name=''typedir''/}">
<ul>
{dede:channelartlist typeid="14"}
<li typedir="{dede:field name=''typedir''/}">
<a href="{dede:field name=''typeurl''/}">
<div>{dede:field name=''typename''/}</div>
<span> </span>
</a>
</li>
{/dede:channelartlist}
</ul>
</div>
结构很简单,就是一个栏目列表的循环,循环中设置一个属性,获取到当前循环到的栏目的typedir(栏目存放目录),然后还获取到当前页面的typedir,下面用js进行比较,起码typedir是不会错的。
下面是js的代码,因为还涉及到hover的效果,所以代码中有一部分是hover的:
$(function(){
// 初始效果
checkMenu();
// 移动效果
$(".neibu_til li").hover(function(){
$(this).siblings().find("span").attr("class","");
$(this).find("span").attr("class","ing");
},function(){
$(this).find("span").attr("class","");
checkMenu();
});
function checkMenu()
{
var the_cur_dir = $(''.neibu_til'').attr(''current_typedir'').split(''/'').pop();
$(".neibu_til").find("li").each(function(){
var dir_last = $(this).attr(''typedir'').split(''/'').pop();
if (dir_last == the_cur_dir) {
$(this).find(''span'').attr(''class'',''ing'');
}
});
}
})
总结
好了,长话短说,就这么多,希望在这个不愉快的周六能给大家带来些许愉快吧。
关于织梦CMS(dedecms)模板制作之二循环一级导航,判断输出二级导航和织梦二级导航调用的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于DEDECMS JSON数据生成 DEDECMS JSON接口制作、DedeCMS 数据负载性能优化方案 简单几招让你 DedeCMS 提速 N 倍、dedecms 织梦cms 修改会员登录后内容、Dedecms(织梦CMS)子栏目高亮操作的相关信息,请在本站寻找。
本文标签: