当前位置:K88软件开发文章中心编程全书编程全书02 → 文章内容

将代码高亮插件codecolorer替换为highlight

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-4 9:18:02

-->

转自“唐磊的博客”

最近在写一个Wordpress小的客户端发布工具,就是直接写markdown,然后转为html发布到Wordpress,为什么要写?

  • 不太想换之前已有的blogs,试过相应的工具将已有的Wordpress blog转为markdown,效果不是很好。//直接用github+jekyll之类的静态站点
  • WordPress已有的支持markdown的插件貌似都不怎么理想,想兼容之前的比较麻烦,特别是用了代码高亮之类的插件//用Wordpress已有的支持markdown的插件

所以就写了,目前的技术方案是:

1
本地markdown+pandoc——>html——>Wordpress-xmlrpc——>Wordpress server

这样的好处是:

  • 仅仅要对已有的blog进行细小的改动即可,即改下那些po了代码的文章;
  • 本地的markdown方便管理和备份,也方便生成其他如pdf等格式;
  • win下之前还有wlw工具方便发布带有图片的blog,但在mac、linux下找不到相应方便的工具,现在用这个统一的client就比较方便传图片等资源。

本篇文章是讨论解决之前文章代码高亮的问题。一方面,现在的代码高亮是基于pandoc的,pandoc会把代码拆分添加各种tag,然后根据tag去css,且生成的html是与之前的codecolorer不兼容的,开启codecolorer插件后,现在的文章乱得一塌糊涂; 另外一方面,关闭codecolorer后,由于现在的文章代码已经不是独立的代码,是带有各种html标签的文本,解决方案是将之前的所有post中含有的代码都用pandoc转换一下,这个成本太高;后来找到一个代码高亮的插件可以自定义代码区域的标签,且是通过前端实现的,不占用服务器资源,于是就采用了这款插件hightlight

codecolorer之前的代码区域基本上都是通过

1
<div>::CODECOLORER_BLOCK_1::</div>

实现的,hightlight可以自定义html标签, 所以大致只需要将原来的文章中所有的

1
2
3
4
<div>::CODECOLORER_BLOCK_2::</div>

'</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[/cc]%'</span><span class="p">);</span>

当试图用以上sql进行查询更新时,提示 “You can’t specify target table ‘wp_posts’ for update in FROM clause”,因为这样对同一个表操作会冲突,中间加一个临时表解决问题。2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[/cc]'</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[/cc]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'

<div>::CODECOLORER_BLOCK_3::</div>

'</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[/cc]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span>
<span class="cm">/*66*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'<code'</span><span class="p">,</span> <span class="s1">'<pre><cc'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%<code%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*11*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'</code>'</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%</code>%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*11*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[cc lang="sql"]'</span><span class="p">,</span> <span class="s1">'<pre><cc class="sql">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[cc lang="sql"]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*5*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[cc lang="c"]'</span><span class="p">,</span> <span class="s1">'<pre><cc class="c">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span>
<span class="k">in</span> <span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[cc lang="c"]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*4*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[cc lang="javascript"]'</span><span class="p">,</span> <span class="s1">'<pre><cc class="javascript">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span>
<span class="k">in</span> <span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[cc lang="javascript"]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*2*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="nv">"[cc lang='python']"</span><span class="p">,</span> <span class="s1">'<pre><cc class="python">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="nv">"%[cc lang='python']%"</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*2*/</span>
<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">wp_postmeta</span> <span class="p">(</span><span class="n">post_id</span><span class="p">,</span> <span class="n">meta_key</span><span class="p">,</span> <span class="n">meta_value</span><span class="p">)</span>
<span class="k">SELECT</span> <span class="n">wp_posts</span><span class="p">.</span><span class="n">ID</span><span class="p">,</span> <span class="s1">'enable_highlight'</span><span class="p">,</span>
<span class="s1">'<link rel="stylesheet" href="/wp-content/blogresources/highlightconfig/highlight.default.min.css">
<script src="/wp-content/blogresources/highlightconfig/jquery-2.1.4.min.js"></script>
<script src="/wp-content/blogresources/highlightconfig/enable_highlight.js"></script>'</span>
<span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">wp_posts</span><span class="p">.</span><span class="n">ID</span> <span class="k">in</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">wp_posts</span><span class="p">.</span><span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%```</pre>%'</span><span class="p">);</span>

参考文献:


将代码高亮插件codecolorer替换为highlight