在本文中,我们将带你了解dedecmslikearticle怎么增加addfields在这篇文章中,我们将为您详细介绍dedecmslikearticle怎么增加addfields的方方面面,并解答d
在本文中,我们将带你了解dedecms likearticle 怎么增加 addfields在这篇文章中,我们将为您详细介绍dedecms likearticle 怎么增加 addfields的方方面面,并解答dedecms怎么用常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的$addFields $size 属性总是返回零 - 猫鼬、DEDECMS JSON数据生成 DEDECMS JSON接口制作、dedecms likearticle 效率问题、dedecms list 判断 每隔3次输出内容。
本文目录一览:- dedecms likearticle 怎么增加 addfields(dedecms怎么用)
- $addFields $size 属性总是返回零 - 猫鼬
- DEDECMS JSON数据生成 DEDECMS JSON接口制作
- dedecms likearticle 效率问题
- dedecms list 判断 每隔3次输出内容
dedecms likearticle 怎么增加 addfields(dedecms怎么用)
OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代
DedeCMS 的 likearticle.lib.php 文件并且添加了 addfields
源码如下 //获取附加表信息 $addfield = trim($ctag->GetAtt(''addfields'')); $addfieldsSql = ''''; $addfieldsSqlJoin = ''''; if($addfield != '''' && !empty($channelid)) { $row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id=''$channelid'' "); if(isset($row[''addtable'']) && trim($row[''addtable'']) != '''') { $addtable = trim($row[''addtable'']); $addfields = explode('','', $addfield); $row[''addtable''] = trim($row[''addtable'']); $addfieldsSql = ",addf.".join('',addf.'', $addfields); $addfieldsSqlJoin = " LEFT JOIN `$addtable` addf ON addf.aid = arc.id "; } } 请问还需修改什么吗
$addFields $size 属性总是返回零 - 猫鼬
如何解决$addFields $size 属性总是返回零 - 猫鼬
嗨,我在聚合查询中添加了 $addFields 属性,文档的 $size 总是返回 0。这是我的表和查询
桌柱:
{
_id: 1,text: ''some text'',}
表格评论:
{
_id: 1,text: ''comment text'',postId: 1
}
总的来说,我有以下内容
let aggregateDataQuery = [
{
$lookup: {
from: ''comments'',localField: ''_id'',foreignField: ''postId'',as: ''numberOfComments'',},{
$addFields: {numberOfComments: { $size: { $ifNull: [''$numberOfComments'',[]] } }},];
此查询总是导致 numberOfComments: 0。我确信有针对 postId 1 的评论,但结果始终为零。知道我在这里缺少什么。谢谢
解决方法
您好,from
中的子句 $lookup
留在集合中比您想加入的要多。 起始集合必须是 posts
集合。 所以你应该用 comments
代替 posts
。 $size
属性不起作用,因为加入未加入。
代码必须是这样的:
let aggregateDataQuery = [
{
$lookup: {
from: ''comments'',localField: ''_id'',foreignField: ''postId'',as: ''numberOfComments'',},{
$addFields: {numberOfComments: { $size: { $ifNull: [''$numberOfComments'',[]] } }},];
Posts.aggregate(aggregateDataQuery);
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 likearticle 效率问题
OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代
在使用 dedecms 发布文章 站内文章到达近 30w 的时候出现问题,发布新闻后有个相关新闻的需求,需要用到 likearticle 标签,仔细看了一下 dedecms 的 taglib 发现时这么调取的
if(!empty($refObj->Fields[''keywords''])) { $keywords = explode('','' , trim($refObj->Fields[''keywords''])); $keyword = ''''; $n = 1; foreach($keywords as $k) { if($n > 3) break; if(trim($k)=='''') continue; else $k = addslashes($k); $keyword .= ($keyword=='''' ? " CONCAT(arc.keywords,'' '',arc.title) LIKE ''%$k%'' " : " OR CONCAT(arc.keywords,'' '',arc.title) LIKE ''%$k%'' "); $n++; } }
也就是如果我设置了 a,b,c 3 个关键词为文档关键词,最后生成的 sql 语句片段为
and ( CONCAT(arc.keywords,'' '',arc.title) like ''%a%'' OR CONCAT(arc.keywords,'' '',arc.title) like ''%b%'' OR CONCAT(arc.keywords,'' '',arc.title) like ''%c%'' )
不知哪位大侠使用过有优化的经验
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 likearticle 怎么增加 addfields和dedecms怎么用的分享就到这里,谢谢您的阅读,如果想了解更多关于$addFields $size 属性总是返回零 - 猫鼬、DEDECMS JSON数据生成 DEDECMS JSON接口制作、dedecms likearticle 效率问题、dedecms list 判断 每隔3次输出内容的相关信息,可以在本站进行搜索。
本文标签: