首页 > 其他分享 >Typecho——如何查看已经提供的方法是否支持传入参数

Typecho——如何查看已经提供的方法是否支持传入参数

时间:2023-02-21 11:12:33浏览次数:67  
标签:Widget pageSize 查看 传入 Comments Typecho latestComment options select

前言

最近在开发EasyBe主题,打算对侧边一些列表展示数量做成后台可配置的,但是有些列表使用的是typecho本身提供的一些方法,本来打算在function.php中来重写,然后想了下是不是可以看看对应的源码,一看源码才知道原来有些方法是支持传参的;

widget设计文档: https://docs.typecho.org/develop/widget

内容

?> Widget在typecho代码中位于'var/'目录下

查看代码

根据设计文档中的说明,我们可以知道Widget_Comments_Recent代表文件位置是'Widget/Comments/Recent';
所以我们只需要到对应的路径下,找对应的文件,然后查看里面的方法即可;

<?php

namespace Widget\Comments;

use Typecho\Config;
use Typecho\Db;
use Typecho\Db\Exception;
use Widget\Base\Comments;

if (!defined('__TYPECHO_ROOT_DIR__')) {
    exit;
}

/**
 * 最近评论组件
 *
 * @category typecho
 * @package Widget
 * @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
 * @license GNU General Public License 2.0
 */
class Recent extends Comments
{
    /**
     * @param Config $parameter
     */
    protected function initParameter(Config $parameter)
    {
        $parameter->setDefault(
            ['pageSize' => $this->options->commentsListSize, 'parentId' => 0, 'ignoreAuthor' => false]
        );
    }

    /**
     * 执行函数
     *
     * @throws Exception
     */
    public function execute()
    {
        $select = $this->select()->limit($this->parameter->pageSize)
            ->where('table.comments.status = ?', 'approved')
            ->order('table.comments.coid', Db::SORT_DESC);

        if ($this->parameter->parentId) {
            $select->where('cid = ?', $this->parameter->parentId);
        }

        if ($this->options->commentsShowCommentOnly) {
            $select->where('type = ?', 'comment');
        }

        /** 忽略作者评论 */
        if ($this->parameter->ignoreAuthor) {
            $select->where('ownerId <> authorId');
        }

        $this->db->fetchAll($select, [$this, 'push']);
    }
}

参数 说明
pageSize 查询数据数量
parentId 对应文章的ID
ignoreAuthor 是否忽略作者评论

前端使用

主要分为两部分,首先在function.php添加对应的配置,其次是在对应的调用方法中进行调用;

后台增加主题配置

!> 在function.php中的themeConfig函数中追加以下代码;

    $latestComment = new Typecho_Widget_Helper_Form_Element_Text('latestComment', NULL, '10', _t('最新评论'), _t('最新评论展示数量'));
    $latestComment->input->setAttribute('class', 'w-60');
    $form->addInput($latestComment->addRule('isInteger', _t('请输入纯数字')));

前端模板调用

?> widget('Widget_Comments_Recent', "pageSize={$this->options->latestComment}")->to($comments); ?>

<!-- 最新评论 -->
                <div id="sidebar_recentcomments" class="sidebar-block">
                    <div class="catListComment">
                        <h3 class="catListTitle">
                            <a href="" class="sidebar-card-title-a">最新评论</a>
                        </h3>
                        <div class="RecentCommentBlock">
                            <ul>
                                <?php if (!empty($this->options->sidebarBlock) && in_array('ShowRecentComments', $this->options->sidebarBlock)): ?>
                                    <?php $this->widget('Widget_Comments_Recent', "pageSize={$this->options->latestComment}")->to($comments); ?>
                                    <?php while($comments->next()): ?>
                                        <li class="recent_comment_title">
                                            <a href="<?php $comments->permalink(); ?>"><?php $comments->title() ?></a>
                                        </li>
                                        <li class="recent_comment_body"><p><?php $comments->excerpt(35, '...'); ?></p></li>
                                        <li class="recent_comment_author">--<?php $comments->author(false); ?></li>
                                    <?php endwhile; ?>
                                <?php endif; ?>
                            </ul>
                        </div>
                    </div>
                </div>

标签:Widget,pageSize,查看,传入,Comments,Typecho,latestComment,options,select
From: https://www.cnblogs.com/wangyang0210/p/17140205.html

相关文章

  • java web项目在linux部署、启动,查看系统配置常用的linux命令总结
    本文为博主原创,未经允许不得转载:      以下为在工作中常用的linux命令进行了总结,主要在项目安装及启动,及编辑部署文件时应用较多1.gz文件是一种压缩文件。以·ta......
  • linux lsof/netstat查看进程和端口号相关命令:
    本文为博主原创,未经允许不得转载:      在linux操作时,经常要查看运行的项目的进程和端口号,在这里总结了以下常用到的相关命令:      1.查看系统运行的java项目,......
  • 怎么查看office版本 如何查看office版本
    http://www.ccschy.com/internet/6688.html1、在桌面右键,菜单中选择新建‘MicrosoftExcel工作表’。2、在打开文件的时候,启动页上就会出现office的大版本,示例是2010版本......
  • 查看sap object type的类型
    1:进入到object,点击Goto下面的objectdirectory   查看到类型为SUSO  2:使用ZDEP查看改object在哪些地方使用了。  3:根据component过滤结果 ......
  • 关于一维数组传入函数的使用 //西电oj214题字符统计
    #include<stdio.h>voidcount(charstr[],intnum[]){//形参用【】,传递数组首地址后可以直接正常用数组str[i] inti; for(i=0;str[i]!=0;i++){ if(str[i]>=65&&str[......
  • 查看版本日志 git 230220
    查看提交日志简易日志gitlog--oneline完整日志gitlog......
  • Linux查看系统占用
    ##查看内存占用#CPU占用最多的前10个进程:psauxw|head-1;psauxw|sort-rn-k3|head-10#内存消耗最多的前10个进程psauxw|head-1;psauxw|sort-rn-k4|head......
  • 开心档-Git 查看提交历史
    Git查看提交历史Git提交历史一般常用两个命令:gitlog -查看历史提交记录。gitblame<file> -以列表形式查看指定文件的历史修改记录。 gitlog{#git-log}......
  • IDEA GItToolBox的安装-用于查看Git 注释信息
    一、GitToolBox是什么?GitToolBox是基于IDEA的一种工具,该工具是为了查看自己本地所在Git分支。二、使用步骤1.打开File→setting2.选中插件Plugins安装GitToolBox3.重......
  • 开心档之Git 查看提交历史
    Git查看提交历史Git提交历史一般常用两个命令:gitlog -查看历史提交记录。gitblame<file> -以列表形式查看指定文件的历史修改记录。​​gitlog{#git-log}​​在......