模板 usr\themes\defaultfunctions.php
<?phpif (!defined('__TYPECHO_ROOT_DIR__')) exit;
function themeConfig($form)
{
$logoUrl = new \Typecho\Widget\Helper\Form\Element\Text(
'logoUrl',
null,
null,
_t('站点 LOGO 地址'),
_t('在这里填入一个图片 URL 地址, 以在网站标题前加上一个 LOGO')
);
$form->addInput($logoUrl);
$sidebarBlock = new \Typecho\Widget\Helper\Form\Element\Checkbox(
'sidebarBlock',
[
'ShowRecentPosts' => _t('显示最新文章'),
'ShowRecentComments' => _t('显示最近回复'),
'ShowCategory' => _t('显示分类'),
'ShowArchive' => _t('显示归档'),
'ShowOther' => _t('显示其它杂项')
],
['ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'],
_t('侧边栏显示')
);
$form->addInput($sidebarBlock->multiMode());}
/*
function themeFields($layout)
{
$logoUrl = new \Typecho\Widget\Helper\Form\Element\Text(
'logoUrl',
null,
null,
_t('站点LOGO地址'),
_t('在这里填入一个图片URL地址, 以在网站标题前加上一个LOGO')
);
$layout->addItem($logoUrl);}
*/
在: $form->addInput($sidebarBlock->multiMode());
}
后面加上:
/**
- 主题初始化
- 自定义分类显示数量
*/
function themeInit($archive)
{
// 只在分类页面生效
if ($archive->is('category')) {
// 获取当前分类标识(可以是别名或ID)
$category = $archive->getArchiveSlug();
// 定义需要特殊显示数量的分类
// 格式:'分类标识' => 显示篇数
$specialCategories = [
'default' => 10, // 分类别名为"news"显示10篇
'ds-music' => 6, // 技术分类显示12篇
];
// 检查当前分类是否需要特殊设置
if (isset($specialCategories[$category])) {
$archive->parameter->pageSize = $specialCategories[$category];
// 调试信息(正式使用时可以注释掉)
// error_log("分类 [{$category}] 已设置为显示 " . $specialCategories[$category] . " 篇");
}
// 如果需要所有分类都显示10篇(覆盖后台设置),取消下面的注释
/*
else {
$archive->parameter->pageSize = 10;
}
*/
}}
/**
- 自定义函数:获取分类显示数量配置(可选)
*/
function getCategoryPageSizeConfig()
{
// 这里可以改为从数据库或配置文件中读取
return [
'news' => 10, // news为分类的别名,10为显示文章的数量
'technology' => 12, // 技术分类
];}
/**
- 自定义函数:根据分类获取显示数量(可选)
*/
function getCategoryPageSize($categorySlug)
{
$config = getCategoryPageSizeConfig();
return isset($config[$categorySlug]) ? $config[$categorySlug] : null;}
// 如果需要添加更多自定义函数,可以在这里添加
// ... 把以上修改为:.md文本格式