以上就是给各位分享织梦dedecms中LOOP万能标签循环调用arcurl标签(获取链接),dedecmsarcurl_PHP教程,同时本文还将给你拓展DedeCMS5.7标签tag长度限制的修改办法
以上就是给各位分享织梦 dedecms 中LOOP 万能标签循环 调用 arcurl标签(获取链接),dedecmsarcurl_PHP教程,同时本文还将给你拓展DedeCMS 5.7 标签tag长度限制的修改办法、DEDECMS JSON数据生成 DEDECMS JSON接口制作、dedecms list 判断 每隔3次输出内容、dedecms sql标签中调用其它变量值功能修改等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- 织梦 dedecms 中LOOP 万能标签循环 调用 arcurl标签(获取链接),dedecmsarcurl_PHP教程
- DedeCMS 5.7 标签tag长度限制的修改办法
- DEDECMS JSON数据生成 DEDECMS JSON接口制作
- dedecms list 判断 每隔3次输出内容
- dedecms sql标签中调用其它变量值功能修改
织梦 dedecms 中LOOP 万能标签循环 调用 arcurl标签(获取链接),dedecmsarcurl_PHP教程
织梦 dedecms 中loop 万能标签循环 调用 arcurl标签(获取链接),dedecmsarcurl
在dedecmsv5.3中,提供了loop万能循环标签,但是此循环标签只能循环出该表中的字段,而“[field:arcurl/]”链接标签并不能被解析出来,而dedecms官方论坛上也没有找到相关的解决办法,所以只有自己动手写代码了!
这是官方提供的代码:
{dede:loop table=''dede_archives'' sort='''' row=''4'' if=''''}
[field:title/]
{/dede:loop}
以下是我的解决方案:
1.打开include/common.func.php,找到54行,再这里添加一个函数代码如下:
function idreturnurl($id)
{
global $dsql;
$query = "select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,
tp.defaultname,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
from dede_archives arc left join dede_arctype tp on arc.typeid=tp.id where arc.id = ".$id;
$row = $dsql->getone($query);
$returnurl = getfileurl($row[''id''],$row[''typeid''],$row[''senddate''],$row[''title''],$row[''ismake''],
$row[''arcrank''],$row[''namerule''],$row[''typedir''],$row[''money''],$row[''filename''],$row[''moresite''],$row[''siteurl''],$row[''sitepath'']);
return $returnurl;
}
2.而在模板中我们的调用方式的写法也有所改变,代码如下:
{dede:loop table=''dede_archives'' sort='''' row=''4'' if=''''}
{/dede:loop}
问题已经完美解决了!
同样的当你要用自定义sql 标签的时候,也是一样的。
其实,就是用[field:id function=idreturnurl(@me)/]代替了[field:arcurl/]标签,我解决此问题的核心就是[field:id function=idreturnurl(@me)/]和idreturnurl!
在sql标签中
[field:id runphp=''yes'']$arcrow=getonearchive(@me);@me=$arcrow[''arcurl''];[/field:id]
也可以调出来。
dedecms里面的标签datalist,调用arcurl,让它指向内容页
href=后面不要用引号
织梦php代码中 arcurl 怎更改连接地址
[field:arcurl/]这个代码的意思是,调文章的时候,调对应的链接,如果你改成一个链接,所以的文章都是这样的链接。
DedeCMS 5.7 标签tag长度限制的修改办法
大家都知道默认情况下,dedecms的标签tag长度是12个字节,也就是6个汉字,哪知道在织梦5.7中,也没有改掉这个烦恼的事,可能这个设定是基于效率问题考虑的,如果更新的时候设置的长度超过这个字符,系统就会不显示这个tag。有时候需要根据实际情况修改tag的长度,下面是办法,测试可用。
1.修改数据库中表dede_tagindex 和dede_taglist的tag字段属性:varchar(12)修改为varchar(255) 。
这个步骤需要直接操作数据库。
2.修改文件:/include/helpers/archive.helper.php
查找:if(isset($tag[12]) 修改为:if(isset($tag[255]) ;
再将if(isset($tag[20]) 修改为:if(isset($tag[255]) 。
本文章网址:http://www.ppssdd.com/code/13690.html。转载请保留出处,谢谢合作!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 list 判断 每隔3次输出内容
{dede:list pagesize='12' runphp='yes'} [field:global name=autoindex runphp="yes"](@me%3==0)? @me='输出':@me='';[/field:global] {/dede:list}
花了好几个小时才解决,简直坑T,T
本文章网址:http://www.ppssdd.com/code/12681.html。转载请保留出处,谢谢合作!dedecms sql标签中调用其它变量值功能修改
织梦cms的代码除了自身的功能以外在源码标签调用以及自定义模型等方面确实很差,下面是是用sql标签调用匹配其他参数的代码修改:
一般在新闻页使用sql标签匹配另外一个参数我们会按照以下这样写,但结果输出为空:
{dede:sql sql="select title from `dede_archives` where `title` like '%~pername~%'" db='default'}
<li><a href='[field:arcurl/]'>[field:title/]</a> </li>
{/dede:sql}
dedecms源码标签默认编译的结果就是select title from `dede_archives` where `title` like '~%pername%~' 并没有传递进来pername的参数。
此时我们需要对织梦cms的函数进行以下修改:
$sql = str_replace($conditions[0][$key], "'".addslashes($refObj->Fields[$value])."'", $sql);
修改为:(只需把引号去掉就可以实现了)
$sql = str_replace($conditions[0][$key], addslashes($refObj->Fields[$value]), $sql);
或者我们可以复制一份include/taglib/sql.lib.php重命名为likesql.lib.php并将对应代码修改,这样我们可以不影响{dede:sql sql=""}标签而用新的{dede:likesql sql=""}来实现模糊搜索。
本文章网址:http://www.ppssdd.com/code/13636.html。转载请保留出处,谢谢合作!关于织梦 dedecms 中LOOP 万能标签循环 调用 arcurl标签(获取链接),dedecmsarcurl_PHP教程的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于DedeCMS 5.7 标签tag长度限制的修改办法、DEDECMS JSON数据生成 DEDECMS JSON接口制作、dedecms list 判断 每隔3次输出内容、dedecms sql标签中调用其它变量值功能修改等相关知识的信息别忘了在本站进行查找喔。
本文标签: