Làm đẹp code trong bài viết bằng SyntaxHighlighter

Posted by chiasedamme on Saturday, December 11, 2010

Nếu bạn muốn đặt một số đoạn mã HTML, JavaScript hay các ngôn ngữ lập trình khác trong bài viết Blogger theo một cách có thể làm nổi bật code và hiển thị số thứ tự dòng code thì bạn có thể sử dụng công cụ SyntaxHighlighter do Alex Gorbatchev phát triển.

Công cụ này giúp làm đẹp code hơn song điểm yếu của nó là phải sử dụng nhiều file javascript nên tốc độ load trang hơi nặng một chút. Khuyến cáo các blogspot chứa nhiều file javascript nặng rồi thì không nên sử dụng công cụ này.

Xem Demo.

Để cài đặt công cụ này cho blogspot của bạn, bạn chỉ cần đặt toàn bộ đoạn code dưới đây vào trước thẻ </body> trong Template.

<!-- Syntax Highlighter -->
<link href='http://huguogang.googlepages.com/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJScript.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js' type='text/javascript'></script>
<script class='javascript'>
//<![CDATA[
function FindTagsByName(container, name, Tag)
{
var elements = document.getElementsByTagName(Tag);
for (var i = 0; i < elements.length; i++)
{
if (elements[i].getAttribute("name") == name)
{
container.push(elements[i]);
}
}
}
var elements = [];
FindTagsByName(elements, "code", "pre");
FindTagsByName(elements, "code", "textarea");

for(var i=0; i < elements.length; i++) {
if(elements[i].nodeName.toUpperCase() == "TEXTAREA") {
var childNode = elements[i].childNodes[0];
var newNode = document.createTextNode(childNode.nodeValue.replace(/<br\s*\/?>/gi,'\n'));
elements[i].replaceChild(newNode, childNode);

}
else if(elements[i].nodeName.toUpperCase() == "PRE") {
brs = elements[i].getElementsByTagName("br");
for(var j = 0, brLength = brs.length; j < brLength; j++) {
var newNode = document.createTextNode("\n");
elements[i].replaceChild(newNode, brs[0]);
}
}
}
//clipboard does not work well, no line breaks
// dp.SyntaxHighlighter.ClipboardSwf =
//"http://huguogang.googlepages.com/clipboard.swf";
dp.SyntaxHighlighter.HighlightAll("code");
//]]>
</script>

Nếu blog của bạn chuyên giới thiệu về các ngôn ngữ lập trình thì có thể lựa chọn trong danh sách dưới đây để thêm vào đoạn code ở trên.

<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPhp.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCpp.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushRuby.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushDelphi.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushSql.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushVb.js' type='text/javascript'></script>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPython.js' type='text/javascript'></script>

Khi bạn muốn đưa một đoạn code vào bài viết thì trước tiên mã hóa chúng (bằng công cụ mã hóa) sau đó đặt như sau khi viết bài ở chế độ Chỉnh sửa HTML.

<pre name="code" class="js">
Đặt code đã giải mã ở đây…
</pre>

Hoặc

<textarea name="code" class="js">
Đặt code đã giải mã ở đây…
</textarea>

Thay thế js bằng các định dạng ngôn ngữ tương ứng như: cpp, c, c++, c#, c-sharp, csharp, css, delphi, pascal, java, jscript, javascript, php, py, python, rb, ruby, rails, ror, sql, vb, vb.net, xml, html, xhtml, xslt.

{ 0 comments... read them below or add one }

Post a Comment