织梦dedecms经验汇总
二级域名配置
1、只有顶级栏目可以使用二级域名 而且顶级栏目的存放目录最好放在cms的根目录
2、将二级域名绑定到顶级栏目的文件夹
3、织梦后台系统设置-核心设置-是否支持多站点。。。-选择是
4、织梦后台系统设置-基本设置-网页主页连接和站点根网址填上
5、在需要绑定二级域名的顶级栏目的高级选项中 选择启用多站点支持 并填好域名
6、选择应用到子栏目
7、更新缓存 更新栏目 更新文档
——————————————————————————————————————————
标签内调用函数
{dede:sql sql="SELECT * FROM `jk_feedback` WHERE `ischeck`='1' limit 0,1;"}
<div>问:[field:msg function="getCommentAskOrAnswer(@me,0)" function="cn_substr(@me,30)"/]</div>
<div>答: [field:msg function="@me=getCommentAskOrAnswer(@me,1);@me=cn_substr(@me,60);" /] </div>
{/dede:sql}
时间格式
[field:pubdate function="MyDate('Y-m-d',@me)"/] 用这样的形式调用就可
——————————————————————————————————————————
分页调用
在页面用iframe 调用php分页文件 (a.php)
a.php文件里调用分页类 写好查询语句 放置参数 然后display输出模版(a.html)
a.html里是分页模版(显示分页文章列表)
案例请看fenye文件夹
——————————————————————————————————————————
取文章地址
{dede:sql sql=”select * from archives”}
[field:id runphp='yes']
$id=@me;@me=";$url=GetOneArchive($id);@me=$url['arcurl'];
[/field:id]
{/dede:sql}
通过id取文章地址方法
在common.func.php里已经有了GetOneArchive()方法;
该方法已经取得了文章的路径和其他文章信息 返回的是一个数组;
可以将返回值直接改为返回文章路径;
也就是return return $reArr['arcurl'];
——————————————————————————————————————————
增加自定义文档属性
需要改动的数据库表及字段:archives表中的flag字段
另需要在arcatt表中增加定义的字母
比如我们增加一个ID是“w”,属性名称是“网络”的自定义属性
注意:一经添加,ID是不能修改的,而属性名称可以修改
默认是
'c','h','p','f','s','j','a','b'
我们增加的属性ID是w,则这个值改为
'c','h','p','f','s','j','a','b','w'
4、把上面的修改好了以后,打开表arcatt,如下图所示
5、在打开的arcatt表加入自定义的属性,
函数这个地方不要进行任何的修改
sortid 值填写一个数字,必须不能以前用的重复
att 就是属性的值,这里我们是 w
attname 这个是属性名称,我们这里是 网络
——————————————————————————————————————————
月排行周排行
<ul><!-- 周排行--> |
月排行引用的代码如下:
<ul><!-- 月排行--> |
———————————————————————————————————————————
ID递增 [field:global name=autoindex/]使用方法
{dede:arclist row='8' att='3' type='p_w_picpath.'}
[field:litpic/]
[field:global name=autoindex runphp="yes"](@me!=8)? @me="|":@me="";[/field:global]
{/dede:arclist}
[field:global name=autoindex runphp="yes"] (@me%2==1)?@me="":@me="alt";[/field:global]
autoindex itemindex 的使用心得区别
channelartlist 标签下使用 {dede:global name='itemindex' runphp='yes'}@me;{/dede:global}
自增1
arclist 标签下使用 [field:global.autoindex/] 默认从1开始
channel 标签下使用 [field:global.autoindex/] 默认从0开始
channelartlist 标签下使用 {dede:global.itemindex/} 默认从1开始
arclist从0开始[field:global name=autoindex runphp="yes"]@me=@me-1;[/field:global]
channel从1开始[field:global name=autoindex runphp="yes"]@me=@me+1;[/field:global][field:typename/]
channelartlist从0开始{dede:global name=itemindex runphp='yes'}@me=@me-1;{/dede:global}
——————————————————————————————————————————
dedecms解决描述和关键字太短的方法
此方法是直接修改表字段的类型
1.改变栏目的关键词和描述字数:
在系统工具---SQL命令行工具---运行SQL命令行:
alter table dede_arctype change column description description text;
alter table dede_arctype change column keywords keywords text;
这样几个解决栏目的关键词和描述字数的限制,想要多少字数就多少字
2.改变文章内容的关键词和描述字数:
同样在,系统工具---SQL命令行工具---运行SQL命令行:
alter table dede_archives change column description description text;
alter table dede_archives change column keywords keywords text;
接下来修改dede 文件下的 article_add.php 和 article_edit.php
$description = cn_substrR($description,500);
$keywords = cn_substrR($description,120);
其中红色的就是你想要字符数,分别是描述和关键词。
——————————————————————————————————————————
DEDE快速实现列表页读取内容页图片方法
怎么才可以在织梦模板的建的站里实现列表读取文章页的图片呢?下面是方法:
百度和谷歌中搜索了一下只找到了从列表页获取文章内容第一张图片的解决方法。最后自己也解决了列表页获取图片集第一张图片。今日和大家一并分享一下:
1:在列表页获取文章内容页第一张图片
在通常情况下图片的缩放图是有文章第一张图片生成的。缩放图和文章第一张图片直接存在一定的关系。我们先看一下缩放图和第一张图片的路径:
缩放图:
第一图片:
我们观察可以发现:两张图片的后七位是不同的:
我们可以通过函数删除缩略图字符串最后七位,然后再补上后缀.jpg
函数如下:
//将缩放图转变为文章第一张图片
function firstimg($str_pic)
{
$str_sub=substr($str_pic,0,-7).".jpg";//删除缩略图字符串最后七位,然后再补上后缀.jpg
return $str_sub;
}
将该函数添加到../ include/ common.func.php
调用的方法是:[field:litpic function='firstimg(@me)'/]
2:在列表页获取图片集中第一张图片
图片集中的图片获取到图片有一点麻烦,分析图片集的数据库表结构后发现,织梦将图片集的描述、标题、图片地址都存放到了字段(addonimages)中。
我们来看一下addonimages字段内的内容:
{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='2'/}
{dede:img ddimg='/uploads/allimg/100830/1-100S0140H8.jpg' text='美甲师 何玲' width='270' height='403'} /uploads/allimg/100830/1-100S0140H8.jpg {/dede:img}
【/uploads/allimg/100830/1-100S0140H8.jpg】
这个就是我们需要的网址。只有想办法将其过滤出来就可以了。
看一下我们的功能函数:
//取图片集中的第一张图片
function imgurlsfirstimg($imgurls)
{
$start=strpos($imgurls,'ddimg=')+6;//寻找开始标记
if ($start) $imgurls=substr($imgurls,$start);//删除前面
$end=strpos($imgurls,'text=');//寻找结束标记
if ($end) $imgurls=substr($imgurls,0,$end);//删除后面
return $imgurls;
}
其中标记为蓝色的部分是截取的标记。
将该函数添加到../ include/ common.func.php
使用的办法如下:
{dede:sql sql='select * from dede_archives, dede _addonimages where aid=id and dede _addonimages.typeid=16'}
<Atitle="[field:title/]"href="/zuopin/"rel=[field:imgurlsfunction='imgurlsfirstimg(@me)'/]>[field:title/]</A>
{/dede:sql}
我使用的办法是用sql语句直接读取,大家可以修改为符合自己的。
——————————————————————————————————————————
列表页取栏目的简介、关键词、描述、名称、等等
<meta name="keywords" content="{dede:field name='keywords'/}" />
将name改为所取内容的名字如:name=’description’
获取栏目名称{dede:field name=typename/}
获取栏目路径{dede:field name=arcurl/}
——————————————————————————————————————————
在栏目列表和文章页面中获得当前栏目
找到include/inc_functions.php(此函数为公共函数,当程序运行时自动加载)
在尾部添加新的函数如下:
//通过栏目ID获取栏目的名称
function GetTypeName($typeid){
$dsql = new DedeSql(false);
$row = $dsql->GetOne("select typename From dede_arctype where ID=$typeid; ");
return $row['typename'];
}
调用方法示例:
{dede:field name='typeid' function=”GetTypeName(@me)”/}
DeDeCMS缩略图地址过长导致无法显示的解决方法
将表dede_archives 中litpic字段默认值由60改为100(不够再加大)即可,可以用phpmyadmin
调用body内容
{dede:arclist typeid='194' titlelen='140' addfields='body' channelid='1' row='1' flag='c'}
<a href="[field:arcurl/]">
[field:body runphp="yes"]@me=html2text(@me);@me=cn_substr(@me,'540');
[/field:body]
</a>
{/dede:arclist}
织梦模版全局变量 $refObj
{dede:php}
echo GetTypeUrl($refObj->Fields['id'],$refObj->Fields['typedir'],$refObj->Fields['isdefault'],$refObj->Fields['defaultname'],$refObj->Fields['ispart'],$refObj->Fields['namerule2'],'',$refObj->Fields['siteurl'],$refObj->Fields['sitepath']);
{/dede:php}