首页
留言反馈
网站导航
推荐
毒鸡汤
Search
1
非插件为typecho 文章生成微海报分享
18,821 阅读
2
主题移动端,样式下添加二级分类
15,378 阅读
3
主题 添加author page
14,693 阅读
4
主题添加移动端下边栏
12,711 阅读
5
EMlog添加评论者邮箱等级
9,059 阅读
typecho
dynamic
SuiYu
Emlog
xiuno
登录
/
注册
Search
标签搜索
代码
xiuno
php
css
typecho
评论
模板
say
js
修改教程
标签
珍惜
努力
recommend
善良
样式
调用
微笑
颜色
插件
Vincent
累计撰写
151
篇文章
累计收到
184
条评论
首页
栏目
typecho
dynamic
SuiYu
Emlog
xiuno
页面
留言反馈
网站导航
推荐
毒鸡汤
搜索到
8
篇与
的结果
2023-01-09
Typecho不同分类文章标题显示不同颜色
如果你想在index页面,让文章标题的颜色根据分类显示,那么就打开你的模板文件夹下的index.php文件,将:<h2 class="entry_title"></h2>替换为 <h2 class="entry_title"> <a href="<?php $this->permalink() ?>" class="<?php echo $this->category; ?>"><?php $this->title() ?></a> </h2>这样就会在index页面的每篇文章里加上class=”分类缩略名”,然后我们就可以用这个来修改css样式了。打开你的主题文件夹下style.css文件来定义css,比如我的一个分类是news,想把分类下文章标题都变成红色的,那么添加代码.news{color:red;}同理,你也可以将archives.php,以及post.php等页面都照此法处理。注意如果一篇文章属于多个分类,那么用:<?php echo $this->category; ?>只能输出一个分类缩略名,暂时还没找到更好的办法。
2023年01月09日
4,202 阅读
5 评论
3 点赞
2021-07-11
Xiuno BBS 模板风格开发参考
修罗BBS系统可以用来搞CMS,可以通过自己做模版的方式搞一下文章系统下面是从零开发模版所需要用到的信息首先Xiuno的模板是要放在 plugin 文件夹下, 当做一个插件来使用的关于默认风格的参考模板在 view 文件夹下, 其中 htm 文件夹是主要模板文件如果在原默认模板的基础上开发修改, 就直接复制view/htm这个文件夹到 plugin/你的主题/overwrite/view 下就行样式什么的可以在htm文件里重新定义下overwrite文件夹的意思就是将这里的文件覆盖原始模板, 这个官方文档里有提到.模板文件index.htm : 首页模板 header.inc.htm : 头部模板 footer.inc.htm : 尾部模板 thread_list.inc.htm : 帖子列表模板 (循环) thread.htm : 帖子内容模板 post_list.inc.htm : 留言列表模板 (循环) post.htm : 发布帖子模板 forum.htm : 板块模板 user_create.htm : 用户注册模板 user_login.htm : 用户登录模板 my.htm : 个人中心模板 my_profile.htm : 个人中心 – 资料 模板 user_profile.htm : 用户个人中心 – 资料 模板 browser.htm : 浏览器提示信息属性网站头部必须引用( header.inc.htm )<?php $conf = G(‘conf’);?> <?php $header = G(‘header’);?> <?php $user = G(‘user’);?> <?php $uid = G(‘uid’);?> <?php $gid = G(‘gid’);?> <?php $fid = G(‘fid’);?> <?php $tid = G(‘tid’);?> <?php $pid = G(‘pid’);?> <?php $route = G(‘route’);?> <?php $forumlist_show = G(‘forumlist_show’);?> <?php $static_version = $conf[‘static_version’];?> header.inc.htm : 头部模板常用属性 <?php echo $header[‘title’];?> : 网站名称 <?php echo $header[‘keywords’];?> : 网站关键词 <?php echo $header[‘description’];?> : 网站描述 <?php%20echo%20url(‘user-login’);?> : 网站登录链接地址 <?php%20echo%20url(‘user-create’);?> : 网站注册链接地址 <?php%20echo%20url(‘user-logout’);?> : 注销地址 <?php%20echo%20url(‘my’);?> : 个人中心链接地址 <?php echo $user[‘username’];?> : 当前登录用户名 thread_list.inc.htm : 帖子列表模板常用属性 <?php echo $_thread[‘forumname’];?> : 帖子板块名称 <?php%20echo%20url(“forum-$_thread[fid]”);?> : 板块链接地址 <?php%20echo%20url(“thread-$_thread[tid]”);?> : 帖子链接地址 <?php echo $_thread[‘subject’];?> : 帖子标题 <?php echo $_thread[‘username’];?> : 作者名字 <?php%20echo%20url(“user-$_thread[uid]”);?> : 作者个人中心链接地址 <?php echo $_thread[‘create_date_fmt’];?> : 帖子发布时间( 格式为 几分钟前, 几小时前, 几天前.. ) <?php echo $_thread[‘views’];?> : 帖子浏览数 <?php echo $_thread[‘posts’];?> : 帖子回复数 <?php if($_thread[‘top’] > 0) { ?>[置顶]<?php } ?> : 如果是置顶帖子, 则显示”[置顶]” <?php if($_thread[‘files’] > 0) { ?>[附件]<?php } ?> : 如果是带有附件的帖子, 则显示”[附件]” <?php if($_thread[‘closed’] > 0) { ?>[锁定]<?php } ?> : 如果是锁定的帖子, 则显示”[锁定]” thread.htm : 帖子内容模板常用属性 <?php echo $forum[‘name’];?> : 帖子板块名称 <?php%20echo%20url(“forum-$thread[fid]”);?> : 板块链接地址 <?php%20echo%20url(‘thread-create-‘.$fid);?> : 发布帖子链接地址 <?php echo $thread[‘subject’];?> : 帖子标题 <?php echo $thread[‘username’];?> : 作者名字 <?php%20echo%20url(“user-$thread[uid]”);?> : 作者个人中心链接地址 <?php echo $thread[‘create_date_fmt’];?> : 帖子发布时间( 格式为 几分钟前, 几小时前, 几天前.. ) <?php echo $thread[‘views’];?> : 帖子浏览数 <?php echo $thread[‘posts’];?> : 帖子回复数 <?php if($thread[‘top’] > 0) { ?>[置顶]<?php } ?> : 如果是置顶帖子, 则显示”[置顶]” <?php if($thread[‘files’] > 0) { ?>[附件]<?php } ?> : 如果是带有附件的帖子, 则显示”[附件]” <?php if($thread[‘closed’] > 0) { ?>[锁定]<?php } ?> : 如果是锁定的帖子, 则显示”[锁定]” post_list.inc.htm : 留言列表模板头部引用<?php empty($allowupdate) AND $allowupdate = 0; empty($allowdelete) AND $allowdelete = 0; empty($allowpost) AND $allowpost = 0; ?> <?php echo $_post[‘pid’];?> : 回复ID <?php echo $_post[‘username’];?> : 回复人的名称 <?php%20echo%20url(“user-$_post[uid]”);?> : 回复人的个人中心链接地址 <?php echo $_post[‘floor’];?> : 回复楼数 <?php echo $_post[‘subject’];?> : 引用文字 <?php echo $_post[‘message_fmt’];?> : 回复内容 <?php echo post_file_list_html($_post[‘filelist’]);?> : 附件 方法 循环显示论坛板块 <?php foreach($forumlist_show as $_forum) { ?> <div fid=”<?php echo $_forum[‘fid’];?>”> <a href=”<?php%20echo%20url(“forum-$_forum[fid]”);?>”><?php echo $_forum[‘name’];?></a> </div> <?php } ?>引用( footer.inc.htm ) 其中 bootstrap.js 是必不可少的, 牵扯到实时回帖..<script src=”lang/<?php%20echo%20$conf[‘lang’];?>/bbs.js<?php%20echo%20$static_version;?>”></script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/jquery-3.1.0.js<?php%20echo%20$static_version;?>”></script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/tether.js<?php%20echo%20$static_version;?>”></script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/bootstrap.js<?php%20echo%20$static_version;?>”></script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/bootstrap-plugin.js<?php%20echo%20$static_version;?>”></script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/async.js<?php%20echo%20$static_version;?>”></script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/xiuno.js<?php%20echo%20$static_version;?>”></script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/form.js<?php%20echo%20$static_version;?>”></script> <script> var debug = DEBUG = <?php echo DEBUG; ?>; var url_rewrite_on = <?php echo $conf[‘url_rewrite_on’];?>; var forumarr = <?php echo xn_json_encode($forumarr);?>; var fid = <?php echo $fid;?>; </script> <script src=”<?php%20echo%20$conf[‘view_url’];?>js/bbs.js<?php%20echo%20$static_version;?>”></script>
2021年07月11日
1,394 阅读
0 评论
3 点赞
2021-01-04
主题移动端,样式下添加二级分类
1. 代码修改header.php 相关j-sidebar-xs中的部分,主要是替换下面这一部分 <div class="card"> <div class="title">类目归类</div> <ul class="category-nav"> <?php while ($categorys->next()) : ?> <?php $children = $categorys->getAllChildren($categorys->mid); ?> <?php if ($categorys->levels === 0): ?> <?php if (empty($children)): ?> <li class='<?php if ($this->is('category', $categorys->slug)) _e("active"); ?>'> <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="M325.31499999 764.323l1e-8-508.83099999c0-28.16 22.598-50.934 50.757-50.93400001 13.09300001 0 24.932 5.024 33.901 13.092l335.755 251.633c22.24 16.859 26.905 48.607 10.044 71.024-2.87099999 3.947-6.281 7.355-10.045 10.045l-339.338 254.51c-22.241 16.676-54.16 12.193-70.844-10.225-6.996-9.15-10.225-19.73-10.225-30.31v0z" p-id="6117"></path> </svg> <a href="<?php $categorys->permalink(); ?>"><?php $categorys->name(); ?></a> </li> <?php else: ?> <li class='<?php if ($this->is('category', $categorys->slug)) _e("active"); ?>'> <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="M325.31499999 764.323l1e-8-508.83099999c0-28.16 22.598-50.934 50.757-50.93400001 13.09300001 0 24.932 5.024 33.901 13.092l335.755 251.633c22.24 16.859 26.905 48.607 10.044 71.024-2.87099999 3.947-6.281 7.355-10.045 10.045l-339.338 254.51c-22.241 16.676-54.16 12.193-70.844-10.225-6.996-9.15-10.225-19.73-10.225-30.31v0z" p-id="6117"></path> </svg> <a href="<?php $categorys->permalink(); ?>"><?php $categorys->name(); ?> <span><i class="icon iconfont icon-Chevronrighticon text-right"></i><i class="icon iconfont icon-Chevrondownicon text-down"></i></span> </a> <ul> <?php foreach ($children as $mid):?> <?php $child = $categorys->getCategory($mid); ?> <li <?php if($this->is('category', $child['slug'])): ?> class="active"<?php endif; ?>> <a href="<?php echo $child['permalink'] ?>" title="<?php echo $child['name']; ?>"><?php echo $child['name']; ?></a> </li> <?php endforeach; ?> </ul> </li> <?php endif; ?> <?php endif; ?> <?php endwhile; ?> </ul> </div>2. 添加js 控制 $('.j-sidebar-xs .item.category ul li a').unbind().bind('click',function (ev) { let c = $(this); c.parent().siblings(".active").toggleClass("active") if(c.next().is("ul") && c.parent().toggleClass("active") && ev.preventDefault()) return false; })3. 添加css .item.category{ ul.category-nav li ul{ display: none; padding-left: 2.5em; opacity: 0; height: 0; overflow: auto; -webkit-transition: all .2s ease-in-out 0s; transition: all .2s ease-in-out 0s; li:last-child{ border-bottom: none; } } ul.category-nav li a { span{ float: right; } .text-down{ display: none; } } ul.category-nav li.active { ul { display: block; opacity: 1; height: auto; } a .text-right{ display: none; } a .text-down{ display: block; } } } .j-sidebar-xs .content .item .card ul li { display: block; <!--将原来的flex改为block--> }
2021年01月04日
15,378 阅读
2 评论
17 点赞
2021-01-04
主题添加移动端下边栏
joe 主题移动样式下面无法登录,所以索性给 joe 主题加上下边栏1.首先在component文件夹里新建一个footer.navimobi.php,其中JNavigation是我自己之前美化加的,你可以换成自己的链接。 <?php /** * 手机底部列表菜单 */ if (!Helper::options()->JMobiset) return; //$settings = Helper::options()->JNavmobi; $all = Typecho_Plugin::export(); $loginUrl = $this->options->loginUrl; if (array_key_exists('TePass', $all['activated'])){ if ($this->user->hasLogin()) $loginUrl = $this->options->index.'/admin/extending.php?panel=TePass/theme/ucenter/profile.php'; else $loginUrl = $this->options->index.'/tepass/signin'; } ?> <nav class="navigation-tab"> <!-- --><?php // $navtops_list = array(); // if (strpos($settings,'||')) { // //解析关键词数组 // $kwsets = array_filter(preg_split("/(\r|\n|\r\n)/",$settings)); // foreach ($kwsets as $kwset) { // $navtops_list[] = explode('||',trim($kwset)); // } // } // ?> <div class="navigation-tab-item"><a href="<?php echo $this->options->index ?>" target="_self"><span class="navigation-tab__icon"><i class="iconfont icon-iconfont icon-zhuye"></i></span></a></div> <div class="navigation-tab-item"><a href="<?php echo $loginUrl ?>" target="_blank"><span class="navigation-tab__icon"><i class="iconfont icon-iconfont icon-denglu"></i></span></a></div> <div class="navigation-tab-item <?php if ($this->is('page')) _e('active'); ?>" id="load_mobinav"><a href="<?php echo $this->options->JNavigation ?>" target="_self"><span class="navigation-tab__icon"><i class="iconfont icon-iconfont icon-paihangbang"></i></span></a></div> <div class="navigation-tab-item" id="mob_goTop"><a><span class="navigation-tab__icon"><i class="iconfont icon-iconfont icon-gotop"></i></span></a></div> <div class="navigation-tab-overlay"></div> </nav> 2.然后在functions.php里面加上一个开关 // 手机底部导航栏样式 $JMobiset = new Typecho_Widget_Helper_Form_Element_Select('JMobiset',array(0=>'不开启',1=>'开启'),0,'<h2>移动设置 Info</h2><hr>移动底部菜单设置','移动端页脚底部菜单'); $JMobiset->setAttribute('class', 'j-setting-content j-setting-index'); $form->addInput($JMobiset);3.在 public/config.php 里面(顶部)引入我们刚刚的文件<?php $this->need('component/footer.navmobi.php'); ?>最后加上控制js和 样式css $(".navigation-tab-item").bind('click',function() { $(".navigation-tab-item").removeClass("active"); $(this).addClass("active"); $(".navigation-tab-overlay").css({ left: 25 * $(this).prevAll().length + "%" }) }) $("#mob_goTop").click(function () { $("#backToTop").click() }) let load_mobi = $('#load_mobinav') if (load_mobi.hasClass('active')){ $(".navigation-tab-overlay").css({ left: 25 * load_mobi.prevAll().length + "%" }) }4.以下代码为scss ,自己手动转css @media (max-width: 768px) { .navigation-tab { display: flex !important; } } /* navigation-tab */ .navigation-tab{ height: 60px; width: 100%; line-height: 1; background-color: #fff; box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22); overflow: hidden; border: 10px solid #fff; display: none; flex-shrink: 0; position: fixed; bottom: 0; z-index: 40; .navigation-tab-item{ display: flex; flex-direction: column; align-items: center; justify-content: center; width: 25%; flex-shrink: 0; line-height: 1; cursor: pointer; transition: 0.3s; position: relative; z-index: 2; &.active { width: 25%; } .navigation-tab__icon { display: block; color: #4298e7; transition-duration: 0.3s; line-height: 1; svg{ width: 24px; height: 24px; fill:#4298e7; } i{ font-size: 24px; } } } .navigation-tab-overlay { border-radius: 20px; background-color: #e4f2ff; height: 100%; width: 25%; position: absolute; left: 0; top: 0; transition: 0.3s; } }
2021年01月04日
12,711 阅读
0 评论
9 点赞
2021-01-04
主题添加互动读者及读者等级
1. 我们先在function.php里面添加一个开关 $JactiveUsers = new Typecho_Widget_Helper_Form_Element_Radio( 'JactiveUsers', array( 1 => '开启', 0 => '关闭', ),0,'是否开启互动读者','介绍:显示评论相关用户' ); $JactiveUsers->setAttribute('class', 'j-setting-content j-setting-aside'); $form->addInput($JactiveUsers);2. 然后我们可以给侧栏加代码了aside.php 里面对应位置添加,位置和其他啥广告位的一样不多说 <!--互动读者--> <?php if ($this->options->JactiveUsers and $this->is('index')): ?> <section class="aside aside-hunter-authors"> <h3 class="aside-title"><i class="icon iconfont icon-wodeguanzhu"></i> <span><?php _e('互动读者'); ?></span></h3> <div class="hunter-cont"> <ul class="hunter-authors"> <?php $period = time() - 2592000; // 单位: 秒, 时间范围: 30天 $counts = Typecho_Db::get()->fetchAll(Typecho_Db::get() ->select('COUNT(author) AS cnt', 'author', 'max(authorId) authorId', 'max(mail) mail') ->from('table.comments') ->where('created > ?', $period) ->where('status = ?', 'approved') ->where('type = ?', 'comment') ->group('author') ->order('cnt', Typecho_Db::SORT_DESC) ->limit('4') ); $mostactive = ''; $viphonor = Helper::options()->themeUrl('assets/img/authen.svg','Typecho-Joe-Theme'); foreach ($counts as $count) { $imgUrl = ParseAvatar($count['mail'],1); if ($count['authorId'] == '0') { $c_url = '<li><div class="item"><div class="hunter-avatar"><div class="vatar"><img src="' . $imgUrl . '"></div></div><div class="item-main"><div>' . $count['author'] . ''; } else { $c_url = '<li><div class="item"><div class="hunter-avatar"><a href="' . $this->options->siteUrl . 'index.php/author/' . $count['authorId'] . '" ><div class="vatar"><img src="' . $imgUrl . '"><img class="va_v_honor" src="' . $viphonor . '" title="认证用户"></div></a></div><div class="item-main">' . $count['author'] . ''; } echo '' . $c_url . ''; autvip($count['mail']); $allpostnum = allpostnum($count['authorId']); echo ' <h4>评论 ' . $count['cnt'] . ' 次 | <i>'.$allpostnum.'</i>'; echo ' </h4></div></div></li>'; } ?> </ul> </div> </section> <?php en#dif; ?>3. 我们在functions.php 或者 core.php 添加一些辅助函数函数函数加一些辅助函数数 /** * 显示用户等级,按邮箱 */ function autvip($i){ $db=Typecho_Db::get(); $mail=$db->fetchAll($db->select(array('COUNT(cid)'=>'rbq'))->from('table.comments')->where('mail = ?', $i)/**->where('authorId = ?','0')**/); foreach ($mail as $sl){ $rbq=$sl['rbq'];} if($rbq<1){ echo '<span class="autlv aut-0">Lv.0</span>'; }elseif ($rbq<10 && $rbq>0) { echo '<span class="autlv aut-1">Lv.1</span>'; }elseif ($rbq<20 && $rbq>=10) { echo '<span class="autlv aut-2">Lv.2</span>'; }elseif ($rbq<40 && $rbq>=20) { echo '<span class="autlv aut-3">Lv.3</span>'; }elseif ($rbq<80 && $rbq>=40) { echo '<span class="autlv aut-4">Lv.4</span>'; }elseif ($rbq<100 && $rbq>=80) { echo '<span class="autlv aut-5">Lv.5</span>'; }elseif ($rbq>=100) { echo '<span class="autlv aut-6">Lv.6</span>'; } } /**输出作者文章总数,可以指定*/ function allpostnum($id){ $db = Typecho_Db::get(); $postnum=$db->fetchRow($db->select(array('COUNT(authorId)'=>'allpostnum'))->from ('table.contents')->where ('table.contents.authorId=?',$id)->where('table.contents.type=?', 'post')); $postnum = $postnum['allpostnum']; if($postnum=='0') { return '暂无文章'; } else{ return '文章 '.$postnum.' 篇'; } }4. 最后就是添加样式了scss样式如下,需要css 的可以自己转一下 .autlv { font-size: 10px; color: #fff; display: inline-block; vertical-align: text-top; font-weight: normal; border-radius: 2px; line-height: 1.4; padding: 0 4px; margin-left: 5px; letter-spacing: 0px; } .aut-0 { background: #d1d5dc; } .aut-1 { background: #448EF6; } .aut-2 { background: #f6b044; } .aut-3 { background: #c444f6; } .aut-4 { background: #f69644; } .aut-5 { background-image: -webkit-linear-gradient(0deg, #3ca5f6 0%, #a86af9 100%); } .aut-6 { background: #f64444; } .aside-hunter-authors{ background: var(--background); .vs { border-radius: 100%; } ul{ padding: 14px; list-style: none; line-height: 2.5; } .item{ border-bottom: 1px dashed #eee; margin-bottom: 0px; position: relative; padding-bottom: 4px; .hunter-avatar{ float: left; line-height: 55px; .vatar{ position: relative; img{ width: 45px; border-radius: 100%; } .va_v_honor{ position: absolute; bottom: 3px; right: 0px; width: 18px; height: 18px; } } } .item-main{ min-height: 60px; margin-left: 60px; color: #393939; h4{ font-size: 12px; line-height: 1; margin-bottom: 7px; font-weight: normal; color: #999; i{ font-style: normal; color: #aaa; margin: 0 5px; } } } } }转载于:即刻学术
2021年01月04日
2,995 阅读
4 评论
10 点赞
2020-08-08
模板设置数据备份与恢复
打开模板的functions.php文件(没有的可以自行建立一个可以参考 typecho 的默认模板),然后在 themeConfig($form) 函数里添加以下整理好的代码:[hide] echo('<p style="margin-bottom:14px;font-size:13px;text-align:center;">感谢您使用laoyao主题 1.0版本!此版本首发日期:2020-04-17(<a href="http://2025ly.cn/" target="_blank">检查更新</a>) <br />如果您发现主题存在bug,请<a href="http://2025ly.cn/message.html" target="_blank">留言反馈</a>给我,我将尽力提供修复建议。使用本主题请保留底部链接,您的支持是我最大的动力! </p>'); echo _t('修改后记得<font style="color:red;">备份数据</font>'); $db = Typecho_Db::get(); $sjdq=$db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:laoyao')); $ysj = $sjdq['value']; if(isset($_POST['type'])) { if($_POST["type"]=="备份模板数据"){ if($db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:laoyaobf'))){ $update = $db->update('table.options')->rows(array('value'=>$ysj))->where('name = ?', 'theme:laoyaobf'); $updateRows= $db->query($update); echo '<div class="tongzhi">备份已更新,请等待自动刷新!如果等不到请点击'; ?> <a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">这里</a></div> <script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2500);</script> <?php }else{ if($ysj){ $insert = $db->insert('table.options') ->rows(array('name' => 'theme:laoyaobf','user' => '0','value' => $ysj)); $insertId = $db->query($insert); echo '<div class="tongzhi">备份完成,请等待自动刷新!如果等不到请点击'; ?> <a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">这里</a></div> <script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2500);</script> <?php } } } if($_POST["type"]=="还原模板数据"){ if($db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:laoyaobf'))){ $sjdub=$db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:laoyaobf')); $bsj = $sjdub['value']; $update = $db->update('table.options')->rows(array('value'=>$bsj))->where('name = ?', 'theme:laoyao'); $updateRows= $db->query($update); echo '<div class="tongzhi">检测到模板备份数据,恢复完成,请等待自动刷新!如果等不到请点击'; ?> <a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">这里</a></div> <script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2000);</script> <?php }else{ echo '<div class="tongzhi">没有模板备份数据,恢复不了哦!</div>'; } } if($_POST["type"]=="删除备份数据"){ if($db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:laoyaobf'))){ $delete = $db->delete('table.options')->where ('name = ?', 'theme:laoyaobf'); $deletedRows = $db->query($delete); echo '<div class="tongzhi">删除成功,请等待自动刷新,如果等不到请点击'; ?> <a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">这里</a></div> <script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2500);</script> <?php }else{ echo '<div class="tongzhi">不用删了!备份不存在!!!</div>'; } } } echo '<form class="protected" action="?laoyaobf" method="post"> <input type="submit" name="type" class="btn btn-s" value="备份模板数据" /> <input type="submit" name="type" class="btn btn-s" value="还原模板数据" /> <input type="submit" name="type" class="btn btn-s" value="删除备份数据" /></form>'; [/hide]然后将里面出现的所有“laoyao”改成你的模板目录的名字,如果拿不准就去数据库里看看模板的值名字。
2020年08月08日
3,439 阅读
3 评论
1 点赞
2020-07-14
typecho创建归档页面
创建模版复制一份使用的模版中的page.php,文件名改成你自定义模版的名字。修改模板将复制出的page.php文件内第一行
2020年07月14日
1,870 阅读
0 评论
6 点赞
2020-07-13
typecho模板常用代码
站点动态标题<?php $this->archiveTitle(array( 'category'=>_t('分类 %s 下的文章'), 'search'=>_t('包含关键字 %s 的文章'), 'tag' =>_t('标签 %s 下的文章'), 'author'=>_t('%s 的主页') ), '', ' - '); ?>站点地址,名称与描述<?php $this->options->siteUrl(); ?>//站点地址 <?php $this->options->title(); ?>//名称 <?php $this->options->description() ?>//描述index.php文章循环输出<?php if ($this->have()): ?>//判断文章存在与否 <?php while($this->next()): ?>//开始循环 <a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>//文章标题和超链接 <a href="<?php $this->author->permalink(); ?>"><?php $this->author(); ?></a>//作者名称和超链接 <?php $this->date('F j, Y'); ?>//文章发布时间 <?php $this->category(','); ?>//文章分类 <?php $this->commentsNum('%d Comments'); ?>//评论数量 <?php $this->content('Continue Reading...'); ?>//阅读全文more语法截取缩略内容(可改为<?php $this->excerpt(140,'....'); ?>自动截取前140个字符,根据需要也可以改成 <?php $this->summary(); ?新版功能,自动输出内容中第一个块级元素中的内容>) <?php endwhile; ?>//循环结束 <?php else: ?>暂无与之相关文章<?php endif; ?>//判断结束翻页代码<?php $this->pageNav('上一页', '下一页', '5', '……'); ?>//显示多个页码的 <?php $this->pageLink('下一页','next'); ?> <?php $this->pageLink('上一页'); ?>//只显示上一页下一页页码显示当前页码:<?php if($this->_currentPage>1) echo $this->_currentPage; else echo 1;?> 总页码:<?php echo ceil($this->getTotal() / $this->parameter->pageSize); ?>文章全文显示<?php $this->content(); ?>登陆判断 <?php if($this->user->hasLogin()):?> 登陆才可以看到这里的内容 <?php endif;?>文章作者名称与主页地址<a href="<?php $this->author->permalink(); ?>"><?php $this->author(); ?></a>文章最后编辑时间<?php echo gmdate('Y-m-d H:i', $this->modified + Typecho_Widget::widget('Widget_Options')->timezone); ?>当前文章id<?php $this->cid(); ?>文章中的上一篇和下一篇<?php $this->title(); ?> //标题 <?php $this->category(','); ?> //分类 <?php $this->tags(', ', true, ''); ?> //标签 <?php $this->date('F jS, Y') ?> //时间 <?php $this->content(); ?> //内容 上一篇: <?php $this->thePrev('%s','没有了'); ?> 下一篇: <?php $this->theNext('%s','没有了'); ?>文章标签<?php $this->tags(', ', true, 'none'); ?> 说明:(', ', true, 'none')第一个单引号间的逗号代表标签与标签的间隔用逗号隔开,true是标签以超链接形式输出,none为该文章没有标签时显示的提示信息用户昵称<?php $this->user->screenName(); ?>后台地址与登陆地址<?php $this->options->adminUrl(); ?>//后台地址 <?php $this->options->adminUrl('login.php'); ?>//登陆地址文章rss和评论rss<a href="<?php $this->options->feedUrl(); ?>"><?php _e('文章 RSS'); ?></a> <a href="<?php $this->options->commentsFeedUrl(); ?>"><?php _e('评论 RSS'); ?></a>搜索代码<form method="post"> <p><input type="text" name="s" class="text" autofocus /></p> <p><button type="submit" class="submit"><?php _e('搜索'); ?></button></p></form>分类描述<?php echo $this->getDescription(); ?>随机标签云<?php $this->widget('Widget_Metas_Tag_Cloud', 'ignoreZeroCount=1&limit=30')->to($tags); ?> <ul class="tags-list"> <?php while($tags->next()): ?> <li><a style="color: rgb(<?php echo(rand(0, 255)); ?>, <?php echo(rand(0,255)); ?>, <?php echo(rand(0, 255)); ?>)" href="<?php $tags->permalink(); ?>" title='<?php $tags->name(); ?>'><?php $tags->name(); ?></a></li> <?php endwhile; ?> </ul>标签相关文章<?php $this->related(5)->to($relatedPosts); ?> <ul> <?php while ($relatedPosts->next()): ?> <li><a href="<?php $relatedPosts->permalink(); ?>" title="<?php $relatedPosts->title(); ?>"><?php $relatedPosts->title(); ?></a></li> <?php endwhile; ?> </ul>调用某分类文章,pageSize是数量,mid是分类号:<?php $this->widget('Widget_Archive@index', 'pageSize=6&type=category', 'mid=47′) ->parse('<li><a href="{permalink}">{title}</a></li>'); ?>首行缩进问题,加入css实现.post-content p{ text-indent: 2em; /*em是相对单位,2em即现在一个字大小的两倍*/ } 全部标签列表,按照MID排序<?php $this->widget('Widget_Metas_Tag_Cloud') ->to($taglist); ?><?php while($taglist->next()): ?>//循环输出 <a href="<?php $taglist->permalink(); ?>" title="<?php $taglist->name(); ?>"><?php $taglist->name(); ?></a> <?php endwhile; ?>//循环结束最新文章<?php $this->widget('Widget_Contents_Post_Recent')->to($post); ?> <?php while($post->next()): ?> <a href=”<?php $post->permalink(); ?>” title=”<?php $post->title(); ?>”> <?php $post->title(25, '…'); ?></a> <?php endwhile; ?>判断为当前页的第几篇文章,并单独输出内容<?php if ($this->sequence == 0): ?> //需要的插入 <?php endif; ?>神奇的is语法<?php if ($this->is('post')) : ?> 这里就是内容了 <?php endif; ?> typecho可以使用is语法判断很多东西,比如 $this->is('index'); $this->is('archive'); $this->is('single'); $this->is('page'); $this->is('post'); $this->is('category'); $this->is('tag'); 甚至是 $this->is('category', 'default'); $this->is('page', 'start'); $this->is('post', 1);Typecho 建站首页实现阅读全文Typecho自动显示摘要,200为自动摘要的字数。 1.<p><?php $this->excerpt(200); ?></p> 2.<p class="more"><a href="<?php $this->permalink() ?>" rel="bookmark" title="<?php $this->title() ?>">阅读全文</a></p>给网站添加返回顶部按钮<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript">var scrolltotop={setting:{startline:100,scrollto:0,scrollduration:1e3,fadeduration:[500,100]},controlHTML:'<img src="https://i1155.photobucket.com/albums/p559/scrolltotop/arrow5.png" />',controlattrs:{offsetx:5,offsety:5},anchorkeyword:"#top",state:{isvisible:!1,shouldvisible:!1},scrollup:function(){this.cssfixedsupport||this.$control.css({opacity:0});var t=isNaN(this.setting.scrollto)?this.setting.scrollto:parseInt(this.setting.scrollto);t="string"==typeof t&&1==jQuery("#"+t).length?jQuery("#"+t).offset().top:0,this.$body.animate({scrollTop:t},this.setting.scrollduration)},keepfixed:function(){var t=jQuery(window),o=t.scrollLeft()+t.width()-this.$control.width()-this.controlattrs.offsetx,s=t.scrollTop()+t.height()-this.$control.height()-this.controlattrs.offsety;this.$control.css({left:o+"px",top:s+"px"})},togglecontrol:function(){var t=jQuery(window).scrollTop();this.cssfixedsupport||this.keepfixed(),this.state.shouldvisible=t>=this.setting.startline?!0:!1,this.state.shouldvisible&&!this.state.isvisible?(this.$control.stop().animate({opacity:1},this.setting.fadeduration[0]),this.state.isvisible=!0):0==this.state.shouldvisible&&this.state.isvisible&&(this.$control.stop().animate({opacity:0},this.setting.fadeduration[1]),this.state.isvisible=!1)},init:function(){jQuery(document).ready(function(t){var o=scrolltotop,s=document.all;o.cssfixedsupport=!s||s&&"CSS1Compat"==document.compatMode&&window.XMLHttpRequest,o.$body=t(window.opera?"CSS1Compat"==document.compatMode?"html":"body":"html,body"),o.$control=t('<div id="topcontrol">'+o.controlHTML+"</div>").css({position:o.cssfixedsupport?"fixed":"absolute",bottom:o.controlattrs.offsety,right:o.controlattrs.offsetx,opacity:0,cursor:"pointer"}).attr({title:"Scroll to Top"}).click(function(){return o.scrollup(),!1}).appendTo("body"),document.all&&!window.XMLHttpRequest&&""!=o.$control.text()&&o.$control.css({width:o.$control.width()}),o.togglecontrol(),t('a[href="'+o.anchorkeyword+'"]').click(function(){return o.scrollup(),!1}),t(window).bind("scroll resize",function(t){o.togglecontrol()})})}};scrolltotop.init(); </script> <noscript>Not seeing a <a href="https://www.scrolltotop.com/">Scroll to Top Button</a>? Go to our FAQ page for more info.</noscript>
2020年07月13日
1,965 阅读
0 评论
4 点赞