最后更新于2019年01月25日; 如遇到问题,请留言及时通知站长; 欢迎加入 三生三世,讨论各种问题!

说明

Typecho主题Initial不带表情功能,我们可以通过一个插件给主题添加表情功能,插件名为Smilies。不过,在使用过程发现如果先进入首页再访问文章页面,就无法点击表情了。这当然是因为主题的pjax导致,所以需要重载下Smilies

Smilies插件

点击下载Smilies插件,上传到插件目录,重命名为Smilies。然后,在需要显示表情的地方,输入如下代码即可调用。

<?php $comments->smilies(); ?>

然后,当你先进入网站首页,刷新页面,再进入文章页面,发现表情无法点击,那么这时你就需要pjax重载script了。

Typecho Smilies插件Pjax重载函数
Typecho Smilies插件Pjax重载函数

Pjax重载

如果你的主题有pjax功能,并且你启用了pjax,请务必在footer.php中添加如下代码。

<script type="text/javascript">
$(document).on('pjax:complete', function() {
Smilies = {
    domId: function(id) {
        return document.getElementById(id);
    },
    domTag: function(id) {
        return document.getElementsByTagName(id)[0];
    },
    showBox: function() {
        this.domId("smiliesbox").style.display = "block";
        document.onclick = function() {
            Smilies.closeBox();
        }
    },
    closeBox: function() {
        this.domId("smiliesbox").style.display = "none";
    },
    grin: function(tag) {
        tag = ' ' + tag + ' ';
        myField = this.domTag("textarea");
        document.selection ? (myField.focus(), sel = document.selection.createRange(), sel.text = tag, myField.focus()) : this.insertTag(tag);
    },
    insertTag: function(tag) {
        myField = Smilies.domTag("textarea");
        myField.selectionStart || myField.selectionStart == "0" ? (startPos = myField.selectionStart, endPos = myField.selectionEnd, cursorPos = startPos, myField.value = myField.value.substring(0, startPos) + tag + myField.value.substring(endPos, myField.value.length), cursorPos += tag.length, myField.focus(), myField.selectionStart = cursorPos, myField.selectionEnd = cursorPos) : (myField.value += tag, myField.focus());
    }
};
});
</script>

后续说明

如果你在使用过程中,还有其他问题,请留言评论,感谢支持!