domingo, 23 de agosto de 2009

Codigo fuente en tu blog - SyntaxHighlighter

Vamos a ver como insertar código fuente en el blog, de manera simple sin necesidad de pasarse horas formateando en html el código fuente de nuestras aplicaciones. Para ello he encontrado SyntaxHighlighter http://code.google.com/p/syntaxhighlighter/.
Descarga
En este caso vamos a usar la version 1.5.1, me ha parecido mas sencilla que la nueva version de SyntaxHighlighter 2.0 que la podeis encontrar en http://alexgorbatchev.com/wiki/SyntaxHighlighter, mas adelante ya la probaremos.

<html>
<head></head>
<body></body>
</html>


Hay varias opciones para agregar SyntaxHighlighter a nuestro blog, voy a explicar la forma de usarlo sin necesidad de alojar el codigo en un servidor externo. Usaremos los archivos javascript del repositorio de google.

Lo primero que tenemos que hacer es agregar los estilos y los scripts a nuestra plantilla de blogger. Para ello, nos vamos a la pestaña Diseño y al apartado Edición de HTML. En el código html, buscamos el bloque donde están los estilos. En mi caso la ultima classe de css es la siguiente:

#footer {
width:660px;
clear:both;
margin:0 auto;
padding-top:15px;
line-height: 1.6em;
text-transform:uppercase;
letter-spacing:.1em;
text-align: center;
}


A continuación de esto vamos a agregar todo el contenido de la hoja de estilos http://syntaxhighlighter.googlecode.com/svn/trunk/Styles/SyntaxHighlighter.css. Podeis copiarlo de aquí:
.dp-highlighter
{
font-family: "Consolas", "Monaco", "Courier New", Courier, monospace;
font-size: 12px;
background-color: #E7E5DC;
width: 99%;
overflow: auto;
margin: 18px 0 18px 0 !important;
padding-top: 1px; /* adds a little border on top when controls are hidden */
}

/* clear styles */
.dp-highlighter ol,
.dp-highlighter ol li,
.dp-highlighter ol li span
{
margin: 0;
padding: 0;
border: none;
}

.dp-highlighter a,
.dp-highlighter a:hover
{
background: none;
border: none;
padding: 0;
margin: 0;
}

.dp-highlighter .bar
{
padding-left: 45px;
}

.dp-highlighter.collapsed .bar,
.dp-highlighter.nogutter .bar
{
padding-left: 0px;
}

.dp-highlighter ol
{
list-style: decimal; /* for ie */
background-color: #fff;
margin: 0px 0px 1px 45px !important; /* 1px bottom margin seems to fix occasional Firefox scrolling */
padding: 0px;
color: #5C5C5C;
}

.dp-highlighter.nogutter ol,
.dp-highlighter.nogutter ol li
{
list-style: none !important;
margin-left: 0px !important;
}

.dp-highlighter ol li,
.dp-highlighter .columns div
{
list-style: decimal-leading-zero; /* better look for others, override cascade from OL */
list-style-position: outside !important;
border-left: 3px solid #6CE26C;
background-color: #F8F8F8;
color: #5C5C5C;
padding: 0 3px 0 10px !important;
margin: 0 !important;
line-height: 14px;
}

.dp-highlighter.nogutter ol li,
.dp-highlighter.nogutter .columns div
{
border: 0;
}

.dp-highlighter .columns
{
background-color: #F8F8F8;
color: gray;
overflow: hidden;
width: 100%;
}

.dp-highlighter .columns div
{
padding-bottom: 5px;
}

.dp-highlighter ol li.alt
{
background-color: #FFF;
color: inherit;
}

.dp-highlighter ol li span
{
color: black;
background-color: inherit;
}

/* Adjust some properties when collapsed */

.dp-highlighter.collapsed ol
{
margin: 0px;
}

.dp-highlighter.collapsed ol li
{
display: none;
}

/* Additional modifications when in print-view */

.dp-highlighter.printing
{
border: none;
}

.dp-highlighter.printing .tools
{
display: none !important;
}

.dp-highlighter.printing li
{
display: list-item !important;
}

/* Styles for the tools */

.dp-highlighter .tools
{
padding: 3px 8px 3px 10px;
font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif;
color: silver;
background-color: #f8f8f8;
padding-bottom: 10px;
border-left: 3px solid #6CE26C;
}

.dp-highlighter.nogutter .tools
{
border-left: 0;
}

.dp-highlighter.collapsed .tools
{
border-bottom: 0;
}

.dp-highlighter .tools a
{
font-size: 9px;
color: #a0a0a0;
background-color: inherit;
text-decoration: none;
margin-right: 10px;
}

.dp-highlighter .tools a:hover
{
color: red;
background-color: inherit;
text-decoration: underline;
}

/* About dialog styles */

.dp-about { background-color: #fff; color: #333; margin: 0px; padding: 0px; }
.dp-about table { width: 100%; height: 100%; font-size: 11px; font-family: Tahoma, Verdana, Arial, sans-serif !important; }
.dp-about td { padding: 10px; vertical-align: top; }
.dp-about .copy { border-bottom: 1px solid #ACA899; height: 95%; }
.dp-about .title { color: red; background-color: inherit; font-weight: bold; }
.dp-about .para { margin: 0 0 4px 0; }
.dp-about .footer { background-color: #ECEADB; color: #333; border-top: 1px solid #fff; text-align: right; }
.dp-about .close { font-size: 11px; font-family: Tahoma, Verdana, Arial, sans-serif !important; background-color: #ECEADB; color: #333; width: 60px; height: 22px; }

/* Language specific styles */

.dp-highlighter .comment, .dp-highlighter .comments { color: #008200; background-color: inherit; }
.dp-highlighter .string { color: blue; background-color: inherit; }
.dp-highlighter .keyword { color: #069; font-weight: bold; background-color: inherit; }
.dp-highlighter .preprocessor { color: gray; background-color: inherit; }



Ahora necesitamos enlazar los scripts, usaremos los que hay en el repositorio:
Podemos encontrarlos en http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushSql.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCpp.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushDelphi.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJScript.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPhp.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPython.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushRuby.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushVb.js' type='text/javascript'/>
<script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js' type='text/javascript'/>


El codigo anterior los añadiremos justo ANTES de la linea:
</head>



Bien, lo ultimo que tenemos que hacer en la plantilla es añadir al final de cuerpo, justo antes del tag /body las llamadas a las funciones javascript para que resalten el código fuente:
<script language='javascript'>
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
</script>

</body>


Guardamos la plantilla y ya la tenemos preparada para introducir código fuente en nuestras entradas.
Deberemos insertar el código fuente entre los tags pre:
Codigoooooo


En el atributo name ponemos la misma cadena que hemos puesto en dp.SyntaxHighlighter.HighlightAll('code'); "code" podéis cambiarlo si queréis, pero siempre deben coincidir ya que la función javascript buscara solo los tags pre con name = a code y en el atributo class indicaremos el lenguaje que vamos a escribir.
http://code.google.com/p/syntaxhighlighter/wiki/Languages

Language Aliases
C++ cpp, c, c++
C# c#, c-sharp, csharp
CSS css
Delphi delphi, pascal
Java java
Java Script js, jscript, javascript
PHP php
Python py, python
Ruby rb, ruby, rails, ror
Sql sql
VB vb, vb.net
XML/HTML xml, html, xhtml, xslt



Y esto es todo. De esta forma podemos introducir código fuente de manera mas vistosa y legible para el lector. Mas adelante veremos como configurar los estilos.
Cualquier duda que tengáis dejar un comentario que intentaremos resolverlas.
Espero que os haya sido útil. Saludos desde SistemaSolutions

4 comentarios:

  1. Fue complicado encontrar un sitio que contenga instrucciones en español.

    Y bien hay instrucciones distintas en el sitio "oficial" de este 'plugin'.

    http://alexgorbatchev.com/SyntaxHighlighter/manual/demo/

    Gracias(:

    ResponderEliminar
  2. muuuuuuuuuuuchisimas gracias carnal!! fue de gran ayuda, y le da mucho mejor aspecto a mi blog http://www.buenasintencions.blogspot.com/

    ResponderEliminar