admin 发布的文章

Typecho评论回复取消回复按钮合并显示


第一步屏蔽默认评论js
将header.php中的<?php $this->header(); ?>改为<?php $this->header('commentReply='); ?>

第二步放置重构的js代码
将下面的一堆js代码放到comments.php下面

     <script type="text/javascript">
function showhidediv(id){var sbtitle=document.getElementById(id);if(sbtitle){if(sbtitle.style.display=='flex'){sbtitle.style.display='none';}else{sbtitle.style.display='flex';}}}
(function(){window.TypechoComment={dom:function(id){return document.getElementById(id)},pom:function(id){return document.getElementsByClassName(id)[0]},iom:function(id,dis){var alist=document.getElementsByClassName(id);if(alist){for(var idx=0;idx<alist.length;idx++){var mya=alist[idx];mya.style.display=dis}}},create:function(tag,attr){var el=document.createElement(tag);for(var key in attr){el.setAttribute(key,attr[key])}return el},reply:function(cid,coid){var comment=this.dom(cid),parent=comment.parentNode,response=this.dom("<?php echo $this->respondId(); ?>"),input=this.dom("comment-parent"),form="form"==response.tagName?response:response.getElementsByTagName("form")[0],textarea=response.getElementsByTagName("textarea")[0];if(null==input){input=this.create("input",{"type":"hidden","name":"parent","id":"comment-parent"});form.appendChild(input)}input.setAttribute("value",coid);if(null==this.dom("comment-form-place-holder")){var holder=this.create("div",{"id":"comment-form-place-holder"});response.parentNode.insertBefore(holder,response)}comment.appendChild(response);this.iom("comment-reply","");this.pom("cp-"+cid).style.display="none";this.iom("cancel-comment-reply","none");this.pom("cl-"+cid).style.display="";if(null!=textarea&&"text"==textarea.name){textarea.focus()}return false},cancelReply:function(){var response=this.dom("<?php echo $this->respondId(); ?>"),holder=this.dom("comment-form-place-holder"),input=this.dom("comment-parent");if(null!=input){input.parentNode.removeChild(input)}if(null==holder){return true}this.iom("comment-reply","");this.iom("cancel-comment-reply","none");holder.parentNode.insertBefore(response,holder);return false}}})();
</script>

第三步
删除comments.php中的取消回复的按钮

    <div class="cancel-comment-reply">
<?php $comments->cancelReply(); ?>
</div>

第四步 将回复按钮替换为回复与取消按钮
如果你的模板重构过评论列表,那么将回复按钮处的代码换成为下面代码即可

    <span class="comment-reply cp-<?php $comments->theId(); ?> text-muted comment-reply-link"><?php $comments->reply('回复'); ?></span><span id="cancel-comment-reply" class="cancel-comment-reply cl-<?php $comments->theId(); ?> text-muted comment-reply-link" style="display:none" ><?php $comments->cancelReply('取消'); ?></span>

如果你的模板没有重构过评论列表,比如默认模板,建议学习下typecho的自定义评论列表的文档

第五步 重构样式
将下面的css加入到模板css中即可

#cancel-comment-reply-link {
    display: inline !important;
}

最终效果展示
最终图片效果


Typecho中文验证码Captcha插件魔改版


Typecho中文验证码Captcha插件魔改版 发布时间:2020-04-2 Typecho中文评论验证码

Typecho中文评论验证码

本插件是在qining & Kimi评论验证码插件基础上完善而来。

更新内容
采用了最新的securimage 3.0.1,并且支持支持Sina App Engine环境;
同时修复了登录用户在前台回复也需要输入验证码的bug;
完善了评论错误时输出的内容;
其它更新。
安装
首选,点击下载本插件;

其次,将Captcha目录放置在Typecho根目录下的usr/plugins/目录中;

再次,在控制台=>插件管理中启用Typecho Captcha插件,并配置相应的参数;

最后,编辑摸板,在评论的表单位置也就是comments的form标签之间的任何你认为合适的地方,加上如下代码

<p><?php Captcha_Plugin::output(); ?></p>

下载插件


HucorePro单栏简洁Typecho主题


HucorePro单栏简洁Typecho主题 发布时间:2020-04-2 单栏简洁Typecho主题

HucorePro单栏简洁Typecho主题

这款单栏Typecho主题来自Typecho官方社区Hucore主题修改版本。在基础上修改增加面包屑、相关文章、菜单、SEO元素,顾命名HucorePro版本。原版权归原作者(tt.nx.tt)以及其参考的原原主题所有。适合专注写作或者喜欢简洁单栏主题的站长使用,且网站有增加不少SEO元素,并不会因为是单栏主题影响网站优化。

添加SEO功能,可以在后台设置LOGO、首页关键字、描述
后台设置常见社交平台地址
添加面包屑导航
添加顶部分类菜单和底部页面菜单
添加相关文章功能

下载主题

演示网站


鼠标点击屏幕后出现爱心特效


大家好,今天给大家分享鼠标点击屏幕后如何出现小爱心的特效代码


JS代码如下:

<script>
        //鼠标点击出现爱心特效
        (function(window, document, undefined) {
            var hearts = [];
            window.requestAnimationFrame = (function() {
                return window.requestAnimationFrame ||
                    window.webkitRequestAnimationFrame ||
                    window.mozRequestAnimationFrame ||
                    window.oRequestAnimationFrame ||
                    window.msRequestAnimationFrame ||
                    function(callback) {
                        setTimeout(callback, 1000 / 60);
                    }
            })();
            init();

            function init() {
                css(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: absolute;}.heart:after{top: -5px;}.heart:before{left: -5px;}");
                attachEvent();
                gameloop();
            }

            function gameloop() {
                for(var i = 0; i < hearts.length; i++) {
                    if(hearts[i].alpha <= 0) {
                        document.body.removeChild(hearts[i].el);
                        hearts.splice(i, 1);
                        continue;
                    }
                    hearts[i].y--;
                    hearts[i].scale += 0.004;
                    hearts[i].alpha -= 0.013;
                    hearts[i].el.style.cssText = "left:" + hearts[i].x + "px;top:" + hearts[i].y + "px;opacity:" + hearts[i].alpha + ";transform:scale(" + hearts[i].scale + "," + hearts[i].scale + ") rotate(45deg);background:" + hearts[i].color;
                }
                requestAnimationFrame(gameloop);
            }

            function attachEvent() {
                var old = typeof window.οnclick === "function" && window.onclick;
                window.onclick = function(event) {
                    old && old();
                    createHeart(event);
                }
            }

            function createHeart(event) {
                var d = document.createElement("div");
                d.className = "heart";
                hearts.push({
                    el: d,
                    x: event.clientX - 5,
                    y: event.clientY - 5,
                    scale: 1,
                    alpha: 1,
                    color: randomColor()
                });
                document.body.appendChild(d);
            }

            function css(css) {
                var style = document.createElement("style");
                style.type = "text/css";
                try {
                    style.appendChild(document.createTextNode(css));
                } catch(ex) {
                    style.styleSheet.cssText = css;
                }
                document.getElementsByTagName('head')[0].appendChild(style);
            }

            function randomColor() {
                return "rgb(" + (~~(Math.random() * 255)) + "," + (~~(Math.random() * 255)) + "," + (~~(Math.random() * 255)) + ")";
            }
        })(window, document);
    </script>

是不是很简单呢,如果有不会的可以在下面评论区说出来,我会一一作答的


广告插入一波:
如果有不会搭建网站的朋友可以花点钱让我帮你搭建,保证以最快的速度搭建完成。
联系qq:2380699980


织梦头部栏目二级栏目调用标签代码


大家好,今天给大家分享织梦如何用标签调用头部栏目,二级栏目代码


代码如下:

{dede:channelartlist typeid='top' }
        <li class="">
            <a><span>{dede:field.typename/}</span></a>
            <ul>
                {dede:channel type='son'}
                <li>
                    <a href="[field:typelink/]">[field:typename/]</a>
                </li>
                {/dede:channel}
            </ul>
        </li>
        {/dede:channelartlist}

希望能帮到你,有什么问题随时在评论区说出来,我会一一作答


广告插入一波:
如果有不会搭建网站的朋友可以花点钱让我帮你搭建,保证以最快的速度搭建完成。
联系qq:2380699980