typecho

Typecho自定义二级菜单样式

背景介绍 先来说说当前的菜单样式吧 系统默认菜单栏实现和样式 // themes/default/sidebar.php 25行 <?php if (!empty($this->options->sidebarBlock) && in_array('ShowCategory', $this->options->sidebarBlock)): ?> <section class="widget"> <h3 class="widget-title"><?php _e('分类'); ?></h3> <?php $this->widget('Widget_Metas_Category_List')->listCategories('wrapClass=widget-list'); ?> </section> <?php endif; ?> 默认模板调用了Widget_Metas_Category_List的listCategories方法来显示导航菜单,那么这个导航菜单的样式就被集成到了listCategories方法中。又是html+php混写。(大家吐槽的不是php, 而是写php的人) 显示效果呢,上个图吧 再来看看Typ...

优雅地自定义遍历输出文章

背景介绍 看了不下十个主题的代码,一个通病,就是控制代码和模板混写在一起。如下图 这么写的问题是什么? 当输出结构比较复杂的时候,html会变得非常难以修改。 typecho自己是如何做的 作为一个typecho新手,很好奇为什么系统内置的文章输出就可以如此优雅。一个while($this->next())实现文章遍历,模板随意修改,数据控制代码也随意修改,互不干涉。 以下是所有模板中都用到的,输出文章列表的代码。 <?php while($this->next()): ?> <article class="post_summary"> <h3 class="title"><a target="_blank" itemtype="url" href="<?php $this->permalink() ?>"><?php $this->title() ?></a></h3> <div class="row"> <div class="col-lg-3"> <a href="<?php $this->permalink() ...

安装RandomArticleList插件无法启用

错误信息: Path '/action/plugins-edit' not found Typecho_Router_Exception: Path '/action/plugins-edit' not found in /...../var/Typecho/Router.php:155 Stack trace: #0 /...../index.php(25): Typecho_Router::dispatch() #1 {main} 没找到插件,看下插件代码吧。 看起来只有这个插件文件名不一样,其他插件都叫做Plugin.php,这个插件叫做RandomArticleList.php。 改文件名,RandomArticleList.php -> Plugin.php。再次运行 还在报错,不过错误内容不一样了。 无法启用插件 Typecho_Widget_Exception: 无法启用插件 in /...../var/Widget/Plugins/Edit.php:98 Stack trace: #0 /...../var/Widget/Plugins/Edit.php(308): Widget_Plugins_Edit->activate('RandomArticleLi...') #1 /...../var/Widget/Do.php(82): Widget...

安装Stat插件无法激活

错误提示:“数据表检测失败,统计插件启用失败” 解决过程: 打开插件源代码看了下, class Stat_Plugin implements Typecho_Plugin_Interface{ } // 来看看这个接口的定义 /** * 插件接口 * * @package Plugin * @abstract */ interface Typecho_Plugin_Interface { /** * 启用插件方法,如果启用失败,直接抛出异常 */ public static function activate(); /** * 禁用插件方法,如果禁用失败,直接抛出异常 */ public static function deactivate(); /** * 获取插件配置面板 */ public static function config(Typecho_Widget_Helper_Form $form); /** * 个人用户的配置面板 */ public static function personalConfig(Typecho_Widget_Helper_Form $form); } 这样看很明显了,启用插...