GVKun编程网logo

dedecms likearticle 怎么增加 addfields(dedecms怎么用)

5

在本文中,我们将带你了解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怎么用)

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 属性总是返回零 - 猫鼬

嗨,我在聚合查询中添加了 $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接口制作

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 效率问题

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次输出内容

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 怎么增加 addfieldsdedecms怎么用的分享就到这里,谢谢您的阅读,如果想了解更多关于$addFields $size 属性总是返回零 - 猫鼬、DEDECMS JSON数据生成 DEDECMS JSON接口制作、dedecms likearticle 效率问题、dedecms list 判断 每隔3次输出内容的相关信息,可以在本站进行搜索。

本文标签: