Typecho并没有像wordpress那样单独管理菜单的功能,而是需要在header文件里面修改,所以也没有相对便捷管理菜单的方法,如果在一级菜单下面添加了子菜单,那么二级菜单也会跟一级菜单并排显示,那怎么样实现把二级菜单放到一级菜单的下拉呢?研究了一下,可以通过单独读取出来写入一个动态的菜单里面去,代码如下:

function mainmenu(){
    $html = '<ul id="mainmenu"><li><a href="/">首页</a></li>
<li><a class="hot" href="/cuxiao.html">热门促销<hd>活动</hd></a></li>
<li><a href="/taobao.html">淘宝<hd>优惠券</hd></a></li>
<li><a href="/jingdong.html">京东<hd>优惠券</hd></a></li>
<li><a href="/brands.html">品牌</hd></a></li>';
    $db = Typecho_Db::get();
    $categories = $db->fetchAll($db->select('table.metas.*')->from('table.metas')
    ->where('table.metas.type = ?',"category")
    ->order('table.metas.order', Typecho_Db::SORT_ASC));
    $category_arr = [];
    if($categories){
        foreach($categories as $category){
            $parent = $category["parent"];
            $category_arr[$parent][] =$category;
        }
    }
    $category_level_1 = $category_arr[0];
    foreach($category_level_1 as $_category){
        $mid = $_category["mid"];
        if($category_arr[$mid]){
            $has_submenu = " class='has_submenu'";
        }
        else{
            $has_submenu = "";
        }
        $html .= "<li".$has_submenu."><a href='/".$_category["slug"]."'>".$_category["name"]."</a>";
        if($category_arr[$mid]){
            $html .= "<ul class='sub_menu'>";
            foreach($category_arr[$mid] as $_sub_category){
                $html .= "<li><a href='/".$_sub_category["slug"]."'>".$_sub_category["name"]."</a>";
            }
            $html .= "</ul>";        
        }
        $html .= "</li>";
    }
    $html .= "</ul>";
    return $html;
}

把上面这段代码加入到主题的function.php文件里央,然后只需要在调用的地方引用这个菜单函数即可。

css样式:

mainmenu{ list-style:none; margin:0px; padding:0px;}#mainmenu li{ display:inline-block;margin-bottom: -4px; position:relative;}#mainmenu li ul li{ display:block; width:100px; text-align:center;}#mainmenu li ul li a{ width:100%; padding:0px;}#mainmenu li ul li:last-child a{ border:1px solid #eee;}.sub_menu{ display:none; position:absolute; top:32px; left:0px; padding:0px; margin:0px; background-color:#fff; z-index:9;}

阅读全文

最近突发奇想,想把骑行运动记录回放功能搬运到网站上,因为在行者APP上,这个回放功能是需要收费的,因此感觉这个需求还是很多人所需要的。

1111.png

现在开放给有需要的骑友使用。

使用方法:

阅读全文

弄了一个类似微信朋友圈发布动态的功能,可以发布文字及上传图片。但是一直没有想好怎么展示图片,直到发现jqPhotoSwipe。它可以浏览单张图片,也可以以相册形式浏览图片,可以跟手机查看照片一样通过手势放大及缩小,可以滑动屏幕左右滚动切换图片,非常好用。

效果可以看本站首页及动态分类栏目。

jqPhotoSwipe是基于PhotoSwipe封装的一款强大的图片展示插件,有PhotoSwipe所有的功能,但是经过封装jqPhotoSwipe使用起来比PhotoSwipe要简单得多。

使用方法详见jqPhotoSwipe官网,本站就不累述了。

阅读全文

怎么让typecho首页不显示某一个分类的文章?

在网上搜索到了一个CateFilter插件,下载安装之后,打开首页报错:

Call to undefined method Typecho\Router::getPathInfo()

没有深入研究typecho,也不知道这个到底是什么引起,但是我用的是最新版的typecho,但是这个插件已经一年多未更新,大概就是不兼容当前版本了吧。

根据报错的位置,尝试进行了一些小修改,没想到成功了。

阅读全文