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

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

前言

最近在开发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(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>

学无止境,谦卑而行.

目录
相关文章
|
网络协议
udhcpc 参数使用说明
当没有网络的时候,板子一直发送dhcp请求,导致程序不往下执行,解决的办法是把它切换到后台运行,可是如何切换到后台呢,有办法,它自带参数可以实现该功能。如下:   udhcpc -b -i eth0 -p /var/run/udhcpc.pid -R解释一下,-b就是切换到后台指令,-i是指定使用哪个网络接口,双网卡的时候一定要使用它来指定eth0  or  eth1。
2503 0
|
1月前
|
测试技术
云函数创建错误解决方案
云函数创建错误解决方案
34 0
|
6月前
|
SQL 关系型数据库 数据库
postgresql数据库修改参数的方式
在PostgreSQL数据库中,你可以通过多种方式修改数据库参数,以更改其行为。以下是一些常见的修改数据库参数的方式: 1. **通过配置文件修改(postgresql.conf):** PostgreSQL的配置文件是 `postgresql.conf`。你可以直接编辑该文件,找到要修改的参数,修改其值,然后重新启动PostgreSQL服务以使更改生效。 通常,`postgresql.conf` 文件位于 PostgreSQL 数据目录下。修改完毕后,确保重新启动 PostgreSQL 服务。 2. **使用 ALTER SYSTEM 命令:** PostgreSQL
398 2
|
5月前
|
运维 安全 Serverless
函数计算产品使用问题之登陆函数实例之后如何查看函数的日志
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
存储 PHP
PHPlstat函数的使用方法与实例解析
PHP是一种广泛应用于Web开发的编程语言,它的开放性、通用性和易用性使其成为了Web领域中的主流语言。在PHP编程中,我们经常需要使用到一些函数来完成任务,其中非常重要的一个函数就是“PHPlstat”。这个函数可以用来获取文件的相关信息,本文将介绍PHPlstat函数的使用方法以及一些实例解析。
85 0
|
PHP
php常用自建函数学习(4):ShowMsg返回弹出信息并进行返回、跳转、刷新等操作
php常用自建函数学习(4):ShowMsg返回弹出信息并进行返回、跳转、刷新等操作
132 0
|
监控 应用服务中间件 PHP
zabbix用户自定义参数监控 php-fpm 服务的状态及导出模板和自定义参数
zabbix用户自定义参数监控 php-fpm 服务的状态及导出模板和自定义参数
206 0
zabbix用户自定义参数监控 php-fpm 服务的状态及导出模板和自定义参数
如何查看方法的返回值
如何查看方法的返回值
113 0
一分钟学会使用ApiPost中的全局参数和目录参数
一分钟学会使用ApiPost中的全局参数和目录参数
一分钟学会使用ApiPost中的全局参数和目录参数