functional quicktag

时间:2012-02-06 作者:dkretz

我想添加quicktags,它不仅仅是添加标记。例如,我想添加一个quicktag来运行一个函数,并在页面内容上应用js正则表达式。如何添加执行函数的quicktag?

为了给出一个具体的示例,我想添加一个按钮,删除整个帖子文本中的所有标记标记。这类似于预定义的quicktags,用于查找不匹配的标记或“校对”等。

2 个回复
SO网友:JasonDavis

这个简单的例子将添加一个Quicktag按钮,当它被点击时调用Javascript函数。。。

<?PHP
function _add_my_quicktags(){ ?>
    <script type="text/javascript">
    QTags.addButton( \'alert\', \'Alert Button\', simple_alert );

        function simple_alert() { 
            alert(\'hello, example callback function\');
        }
    </script>
<?php 
}
add_action(\'admin_print_footer_scripts\',  \'_add_my_quicktags\');
?>
更新。。。。正在添加使用传入变量的回调函数。。。

    // Add a button called \'abbr\' with a callback function
    QTags.addButton( \'abbr\', \'Abbr\', abbr_prompt );
    // and this is the callback function
    function abbr_prompt(e, c, ed) {
        var prmt, t = this;
        if ( ed.canvas.selectionStart !== ed.canvas.selectionEnd ) {
            // if we have a selection in the editor define out tagStart and tagEnd to wrap around the text
            // prompt the user for the abbreviation and return gracefully on a null input
            prmt = prompt(\'Enter Abbreviation\');
            if ( prmt === null ) return;
            t.tagStart = \'<abbr title="\' + prmt + \'">\';
            t.tagEnd = \'</abbr>\';
        } else if ( ed.openTags ) {
            // if we have an open tag, see if it\'s ours
            var ret = false, i = 0, t = this;
            while ( i < ed.openTags.length ) {
                ret = ed.openTags[i] == t.id ? i : false;
                i ++;
            }
            if ( ret === false ) {
                // if the open tags don\'t include \'abbr\' prompt for input
                prmt = prompt(\'Enter Abbreviation\');
                if ( prmt === null ) return;
                t.tagStart = \'<abbr title="\' + prmt + \'">\';
                t.tagEnd = false;
                if ( ! ed.openTags ) {
                    ed.openTags = [];
                }
                ed.openTags.push(t.id);
                e.value = \'/\' + e.value;
            } else {
                // otherwise close the \'abbr\' tag
                ed.openTags.splice(ret, 1);
                t.tagStart = \'</abbr>\';
                e.value = t.display;
            }
        } else {
            // last resort, no selection and no open tags
            // so prompt for input and just open the tag
            prmt = prompt(\'Enter Abbreviation\');
            if ( prmt === null ) return;
            t.tagStart = \'<abbr title="\' + prmt + \'">\';
            t.tagEnd = false;
            if ( ! ed.openTags ) {
                ed.openTags = [];
            }
            ed.openTags.push(t.id);
            e.value = \'/\' + e.value;
        }
        // now we\'ve defined all the tagStart, tagEnd and openTags we process it all to the active window
        QTags.TagButton.prototype.callback.call(t, e, c, ed);
    };

SO网友:boyska

您应该编写一个tinymce插件,然后加载它(使用tinymce高级插件)

结束

相关推荐

More quicktag driving me nuts

我有点困惑。我有自己的定制贴子类型产品。我在产品页面上列出了所有产品。php。每个产品都有自己的页面-单个产品。php。奇怪的是。。。我正在使用更多quicktag:<!-- more --> 而且它不适用于单一产品和页面产品!我不在乎单页,但我喜欢在页面上使用产品列表。但我不能。文件说明:MORE quicktag将不起作用,在模板(如single)中会被忽略。php,其中只显示一篇文章。http://codex.wordpress.org/Function_Reference/t