关于dedecms的标签地址优化 高手来哦
首页:
<title>{dede:globalcfg_webname/}</title>
<meta name="keywords" content="{dede:globalcfg_keywords/}" />
<meta name="description" content="{dede:globalcfg_description/}" />
设置是在“系统->系统基本参数->站点设置”里的“网站名称”、“站点默认关键字”、“站点描述”。
栏目页:
<title>{dede:fieldseotitle/}</title>
<meta name="keywords" content="{dede:fieldkeywords/}" />
<meta name="description" content="{dede:fielddescription/}" />
设置是在各栏目“修改->高级选项”里面的“SEO标题”、“关键字”、“栏目描述”。
文章页:
个人经验是文章标题做title和keywords,文章简介做description
<title>{dede:fieldtitle/}</title>
<meta name="keywords" content="{dede:fieldtitle/}" />
<meta name="description" content="{dede:fielddescription/}" />
楼主你好
你上面的logophp应该是写错了,dedecms有三个登录处理程序文件,前台的有 index_dophp 和 loginphp,不过l oginphp 没有处理数据,仅判断是否登录,登录的话跳转到会员中心首页。后台的有 loginphp 来处理。下面详细说明:
前台 index_dophp 文件。首先不论用户是在网站首页右侧的登录框登录还是会员中心的登录页面登录,两者都会把参数传到 /member/index_dophp 文件中,从登录模板的 action 中我们可以看到登录的时候会把表单数据传递到哪个文件来处理。如下图:
上图是位于/member/templets/loginhtm文件中的部分截图,这是我们前台登录的模板页面,可以看到<form>中将参数传给了index_dophp文件,具体传的参数是每个表单(input)的name值,比如用户名的表单是<input id="txtUsername" class="text login_from" type="text" name="userid"/> ,通过对name的判断知道这个表单提交的是用户名,也就是userid的值,数据库会有对应的userid的字段。比如你登录的用户名是:林羽凡,传过去(到index_dophp)的值就是“userid='林羽凡'”。
type="hidden"的是隐藏域,也就是不在页面上显示,但系统仍能传递参数。比如<input type="hidden" name="fmdo" value="login">就是传递 fmdo的值是 login,这样index_dophp就会知道这里传来的值是用于登录处理的,会有对应的函数(funtion)来处理。
dedecms的$dopost很诡异,通过这个参数的值判断是登入还是登出。
通过以上,我们还有一个登录按钮,类型是submit,也就是提交,这样表单form中的所有信息才会传递到index_dophp文件。
在/member/index_dophp文件240行就可以看到function login()了,也就是登录处理函数,这个时候这个函数就会把传递过来的参数统统接收,这里也是最容易进行sql注入的地方,如果对表单过滤不好,很容易把sql语句写到处理文件中,这里就不细说了。
index_dophp的大概处理过程是这样的,可参考下,不一定每一条都说到。
1、判断是否设置验证码,如果没有,进行用户名验证,如果有设置看对不对,不对的话提示跳转到indexphp文件,如果对,就进行用户名验证。
2、if(CheckUserID($userid,'',false)!='ok')就是通过CheckUserID()来检查用户是否合法,主要是指是不是系统禁用名,是不是长度不够等等,具体语法就不解释了。
3、看你密码是不是空的。
4、接下来就是最重要的,看你的用户名和密码匹配不匹配。$rs = $cfg_ml->CheckUser($userid,$pwd); dedecms这里的验证有点繁琐,还加入了UC机制,就不详细说了。
总结下:说得有点啰嗦,但希望楼主能明白大概的流程,后台的登录传参原理也一样,也是通过<input>把值传到 loginphp 文件,再有对应的函数处理。我们通过传参都会用post方法,也就是你在代码中看到的 method='POST',还有一种是 Get 方式,两种有区别,主要是 post 可传的字节比 get多。
希望可以帮到你。 林羽凡
一、dede后台开启伪静态
二、修改 /include/taglib/taglibphp
找到
$row['link'] = $cfg_cmsurl”/tagsphp/”urlencode($row['keyword'])”/”;
改成
$row['link'] = $cfg_cmsurl”/tags/”urlencode($row['keyword'])”html”;
三、打开templets/default/taglisthtm
找到
<strong>当前位置:</strong>:<a href=”{dede:globalcfg_cmsurl/}/”>主页</a> > <a href=’tagsphp’>TAG标签</a> > {dede:fieldtitle /}
修改为
<strong>当前位置:</strong>:<a href=”{dede:globalcfg_cmsurl/}/”>主页</a> > <a href=’/tagshtml’>TAG标签</a> > {dede:fieldtitle /}
四、httpdini 或者 htaccess 文件里加
RewriteRule ^()/tags\html $1/tags\php
RewriteRule ^()/tags/()html $1/tags\php\$2
参考dedecms的帮助文档中的arclist标签
标签名称:arclist
标记简介:织梦常用标记,也称为自由列表标记,其中imglist、imginfolist、specart、coolart、autolist都是由该标记所定义的不同属性延伸出来的别名标记。
功能说明:获取指定文档列表
适用范围:全局使用
基本语法:
{dede:arclist flag='h' typeid='' row='' col='' titlelen='' infolen='' imgwidth='' imgheight='' listtype='' orderby='' keyword='' limit='0,1'}
<a href='[field:arcurl/]'>[field:title/]</a>
{/dede:arclist}
参数说明:
col='' 分多少列显示(默认为单列),53版中本属性可以通过多种方式进行多行显示
如果col='1'要多列显示的可用div+css实现
以下为通过div+css实现多列的示例:
<style type=text/css>
div{width:400px;float:left;}
</style>
{dede:arclist row='10' titlelen='24' orderby='pubdate' idlist='' col='2'}
•[field:textlink/]([field:pubdate function=MyDate('m-d',@me)/])<br/>
{/dede:arclist}
当col>1将使用原来的table多列方式显示
row='10' 返回文档列表总数
typeid='' 栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目;
getall='1' 在没有指定这属性的情况下,在栏目页、文章页模板,不会获取以","分开的多个栏目的下级子类
titlelen = '30' 标题长度 等同于titlelength
infolen='160' 表示内容简介长度 等同于infolength
imgwidth='120' 缩略图宽度
imgheight='90' 缩略图高度
listtype='all' 栏目类型 image含有缩略图 commend推荐
orderby='sortrank' 文档排序方式
§ orderby='hot' 或 orderby='click' 表示按点击数排列
§ orderby='sortrank' 或 orderby='pubdate' 按出版时间排列
§ orderby='near'
§ orderby=='lastpost' 按最后评论时间
§ orderby=='scores' 按得分排序
§ orderby='id' 按文章ID排序
§ orderby='rand' 随机获得指定条件的文档列表
keyword='' 含有指定关键字的文档列表,多个关键字用","分
innertext = '' 单条记录样式
aid='' 指定文档ID
idlist ='' 提取特定文档(文档ID)
channelid 频道ID
limit='起始ID,记录数' (起始ID从0开始)表示限定的记录范围(如:limit='1,2' 表示从ID为1的记录开始,取2条记录)
flag = 'h' 自定义属性值:头条[h]推荐[c][p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]
noflag = '' 同flag,但这里是表示不包含这些属性
orderway='desc' 值为 desc 或 asc ,指定排序方式是降序还是顺向排序,默认为降序
subday='天数' 表示在多少天以内的文档
用arclist调用于附加表字段的方法:
要获取附加表内容,必须符合两个条件
1、指定 channelid 属性
2、指定要获得的字段 addfields='字段1,字段'
如:
{dede:arclist addfields='filetype,language,softtype' row='8' channelid='3'}
[field:textlink /] - [field:softtype /]<br />
{/dede:arclist}
底层模板字段:
ID(同 id),typeid,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,
source,litpic(同picname),pubdate,senddate,mid, lastpost,scores,goodpost,badpost,notpost,
description(同infos),filename, image, imglink, fulltitle, textlink, typelink,plusurl, memberurl, templeturl,
stime(pubdate 的"0000-00-00"格式)
其中:
textlink = <a href='arcurl'>title</a>
typelink = <a href='typeurl'>typename</a>
imglink = <a href='arcurl'><img src='picname' border='0' width='imgwidth' height='imgheight'></a>
image = <img src='picname' border='0' width='imgwidth' height='imgheight' alt=’titile’>
字段调用方法:[field:varname/]
如:
{dede:arclist infolen='100'}
[field:textlink/]
<br>
[field:infos/]
<br>
{/dede:arclist}
注:底层模板里的Field实现也是织梦标记的一种形式,因此支持使用PHP语法,Function扩展等功能。
如: 给当天发布的内容加上 (new) 标志
[field:senddate runphp='yes']
$ntime = time();
$oneday = 3600 24;
if(($ntime - @me)<$oneday) @me = "<font color='red'>(new)</font>";
else @me = "";
[/field:senddate]
具体方法如下:
1、DedeCMS默认风格里,顶部左边有一段话"织梦CMS - 轻松建站从此开始!",很多朋友想把这段话修改成一个横向登录框,像织梦吧(dedecms8com)顶部一样。
2、打开头部公用模板文件templets/default/headhtm,找到如下汉字:
3、把上图里汉字,替换为如下代码:
<div id="_userlogin">
<form name="userlogin" action="{dede:globalcfg_memberurl/}/index_dophp" method="POST">
<input type="hidden" name="dopost" value="login" />
<span>用户名:</span>
<input type="text" name="userid" size="10" class="ipt-txt" />
<span>密码:</span>
<input type="密码" name="pwd" size="10" class="ipt-txt" />
{dede:php}
if(preg_match("#2#", $safe_gdopen)){
echo '
<span>验证码:</span>
<input type="text" name="vdcode" size="8" class="ipt-txt" />
<img id="vdimgck" align="absmiddle" style="cursor:pointer;margin-left:0px;text-transform:uppercase;" alt="看不清?点击更换" src="'$cfg_cmspath'/include/vdimgckphp"/>';}
{/dede:php}
<button type="submit" class="btn-1">登录</button>
<a href="{dede:globalcfg_memberurl/}/index_dophpfmdo=user&dopost=regnew" >注册账号</a> <a href="{dede:globalcfg_memberurl/}/reset密码php">忘记密码</a>
</form>
</div>
<script language="javascript" type="text/javascript">CheckLogin();</script>
改后:
4、其实仅仅这段代码还不够,还需要完成下一步才能达到效果:
那么,我这里为什么没有加这段代码呢这是因为默认主页模板文件indexhtm里,已经包涵了这段代码。如果没有,或被自己删除了,请添加在indexhtm里之前。
打开member/ajax_loginstaphp文件,找到如下代码
5、上图红色框内的代码,即为登录成功后,返回用户信息。多数时候,我们的顶部导航没太宽的地方,以显示这些数据,所有完全没必要全部返回这些信息,可以适当减少几项,并且对div做美化,以达到美观体验。这里,简单做下调整,如下:
6、更新生成后,可以看到如下效果:
这样一个顶部横向登录框就制作完了。
楼主你好
可以用这个代码:
{dede:arclist row=14 titlelen=32 noflag='h'}
<li>[field:global runphp='yes' name=autoindex]
$a="<SPAN class='num active'>";
$b="</SPAN>";
$c="<SPAN class='num'>";
if (@me > 3) @me = $c@me$b;
else @me = "<span class='top'>"$a@me$b"</span>";
[/field:global]<a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
亲测可以用,代码如下:
前台效果:
这是dedecms默认模板首页最上面的最近更新,希望可以帮到你。
我想你应该是说的这个标签 {dede:channelartlist row='7' }
<li><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a>
<ul>
{dede:channel type='son' noself='yes' }
<li><a href='[field:typelink/]'>[field:typename/]</a></li>
{/dede:channel}
</ul>
</li>
{/dede:channelartlist}
0条评论