可能是没啥用的骚操作QAQ。
在编写日记页面的时候我发现由于$comments->listComments();
自身的特性,输出的评论会被<ol class="comment-list"></ol>
包起来,导致有些时候会很麻烦。因此我搜了一下能不能去掉这个东西,结果当然是……啥都没搜到。
实在没办法,我就去看了源码,发现listComments()
其实是可以加参数的QAQ……
默认参数长这样:
$this->_singleCommentOptions->setDefault(array(
'before' => '<ol class="comment-list">',
'after' => '</ol>',
'beforeAuthor' => '',
'afterAuthor' => '',
'beforeDate' => '',
'afterDate' => '',
'dateFormat' => $this->options->commentDateFormat,
'replyWord' => _t('回复'),
'commentStatus' => _t('您的评论正等待审核!'),
'avatarSize' => 32,
'defaultAvatar' => NULL
));
这些参数其实都很熟悉……很明显<ol class="comment-list"></ol>
的罪魁祸首就是before
和after
。
所以只要这样就可以把外层套着的东西去掉啦:
$comments->listComments(array('before'=>'','after'=>''));
由于想要实现日记按月归档的功能,我需要把所有评论先拿出来再输出。
到网上搜了一下,发现方法千篇一律……都是直接从数据库中拿出评论。然而这样是没法拿到解析之后的评论的(评论是可以支持Markdown的),表情解析就更加不行了。
这时候我忽然想到一个骚操作QAQ,我在评论输出的函数中,不输出评论,而是存到另外的数组里,就可以避免调用数据库,还可以得到解析后的评论了!
Helper::options()->commentsPageBreak=false; //当前页评论不分页,从而获取所有评论
global $total;global $diary;$total=0; //全局变量
function threadedComments($comment,$options){
$GLOBALS['diary'][$GLOBALS['total']][0]=$comment->date; //用于之后的归档
$GLOBALS['diary'][$GLOBALS['total']][1]='
<div class="mdui-col">
<div id="'.$comment->theId.'" class="mdui-card mdui-m-t-2">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="'.GravatarURL($comment->mail,100).'" />
<div class="mdui-card-header-title">'.$comment->author.'</div>
<div class="mdui-card-header-subtitle">'.$comment->date->format(Helper::options()->commentDateFormat).'</div>
</div>
<div class="mdui-card-content" style="min-height:200px">'.RewriteComment($comment).'</div>
</div>
</div>'; //把评论字符串存到数组里而不是直接输出
$GLOBALS['total']++;
}
为了在函数中调用外部的数组,需要使用全局变量,具体定义和使用方法可以到网上搜一下QAQ(我PHP水平这么菜这个当然是搜的)。
结合下骚操作1,调用一下:
$comments->listComments(array('before'=>'','after'=>''));
就可以不留痕迹的获取到评论数组啦。
想问下怎么用关键词来获取相应的评论,然后进行前端输出。比如搜“#生活日记”相关的评论。。。 🤔
@枫叶
Typecho自带的功能应该实现不了,估计得直接查询数据库
@ZigZagK
我直接用typecho api插件,用js把需求撸了出来。就是不知道json api带参数怎么才能给某篇文章的所有评论都获取到,默认的是获取第一页的。
@枫叶
这我就不太清楚了,主要好久没有维护博客,可能提供不了更多帮助了,抱歉
大佬,添加文章输入自定义字段的内容怎么变成数组在前端读取呢?就比如[1,2,3,4]
@xxx
前端想要读取后端的数据一般得写api,然后用ajax在前端获取
@ZigZagK
那有没有办法把自定义字段的STR转成数组形式
@xxx
不是很清楚哎,可能得看Typecho文档
@ZigZagK
或者有没有其他骚操作
ZZK 大佬太强啦!!刚遇到这个问题,一搜就是大佬的博客 👍
@SkyWT
竟然能百度搜到,泪目了 😭
所有数据库查出来的数据,如果typecho有原生对应类可以直接使用filter函数过滤一下,然后就是处理过的数据什么,比如拼接好的slug,解析完的content
@Ryan
这个我不是很懂唉
主要是typecho官方文档极其不详细,所以我就脑补了一个解决方案出来
@ZigZagK
脑洞还是可以的
zigzagk nb
@ohmyga
并不啊