domingo, 9 de mayo de 2010

Integración del Editor Ckeditor

Ckeditor es un editor web de tipo WYSIWYG, este término ya lo explicamos en un anterior artículo. Ckeditor es la versión más actual del editor FCkeditor y es el editor web más versátil y configurable a mi modo de ver.

A continuación explicaremos como integrarlo en nuestros proyectos de la manera más sencilla.

Vea una foto del editor a continuación:



Es importante aclarar que si usted usa algún CMS o framework , estos pasos puede que no sean válidos o necesarios , por ejemplo si usa Joomla , todos estos pasos se realizan con la simple instalación de una extensión con el CKeditor , y luego habilitas como editor WYSIWYG predeterminado el CKeditor. Hecha esta aclaración continuamos con la explicación:

Pasos habilitar el editor:

1- Descárgalo de internet o adquirirlo por alguna otra vía.
2- Descomprimirlo y colocarlo en algún lugar de su directorio web
3- Colocar un textarea en el formulario de nuestra web donde queramos insertarlo
4- Colocar una referencia desde nuestra pagina a el componente Ckeditor.
5- Colocar los códigos correspondientes para cargar el editor, con la configuración que deseemos



Paso 1: Descárgalo de internet o adquirirlo por alguna otra vía.

Este componente es totalmente gratuito, puede ser descargado desde su página web oficial: http://ckeditor.com .

Paso 2: Descomprimirlo y colocarlo en algún lugar de su directorio web.


Descomprima el archivo y cópielo en algún lugar que tenga destinado para ello en su directorio web.
En el caso nuestro, tenemos una carpeta llamado Componentes, en el cual copiamos todos los componentes o bibliotecas que externas que utilizamos.




Paso 3: Colocar un textarea en el formulario de nuestra web donde queramos insertarlo

Ponga en su formulario un campo de tipo textarea donde usted desee que aparezca el editor.
Vea un ejemplo de textarea:


<textarea name="txtContenido" cols="50" rows="30" id="textarea"></textarea>


Paso 4: Colocar una referencia desde nuestra pagina a el componente Ckeditor.

Dede poner una referencia de tipo Javascript , al archivo llamado ckeditor.js , que se encuentra en la raíz de la carpeta del editor.
A continuación el código de enlace:


<script type="text/javascript" src="../Componentes/ckeditor/ckeditor.js"></script>

Es muy recomendado que esta referencia sea una referencia absoluta y no relativa, la razón es que su luego cambias de directorio o usas URL amigables tendrás que cambiar la esta dirección relativa por otra, y esto no ocurre con un dirección absoluta. Este código puede ir en cualquier sitio pero es recomendado que vaya en el head, junto con todas las otras referencias Javascript , CSS, etc.


Paso 5: Colocar los códigos correspondientes para cargar el editor, con la configuración deseada.


Si usted es curioso de seguro ya entro en la carpeta ckeditor , y se fijo que hay una carpeta dentro llama _samples , la cual contiene ejemplos de integración.
Vea la figura de abajo con la carpeta _samples



Un forma muy sencilla de cargar el editor en el textarea y a la ves configurarlo es por reemplazo de código. A continuación un ejemplo y luego explico:

<script type="text/javascript">

CKEDITOR.replace( ' txtContenido ' );

</script>


Con este codigo hemos mandado a reemplazar el textarea con nombre: txtContenido ,por el editor y su configuración por defecto.
Este código debe ir después de colocar el código del textarea , o en el evento window.onload , en el head del documento.

Sin embargo si queremos un poco que personalizar nuestro editor , colocar algunas de las herramientas , quitar otras , disponer de la posición de las mismas , entre otras cosas, entonces podemos hacer algo como esto:


<span style="font-style:italic;"><script type="text/javascript">

CKEDITOR.replace( ' txtContenido ',

{

toolbar : [

['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],

['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],

['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],

'/',

['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],

['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],

['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],

['Link','Unlink','Anchor'],

['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],

'/',

['Style','FontFormat','FontName','FontSize'],

['TextColor','BGColor']

]

} );

</script>


En este ejemplo acomodamos la barra de herramientas a nuestro gusto, a través del arreglo: toolbar , este mismo ejemplo usted puede tomarlo probarlo , quitar y/o modificar los valores y posiciones que se pasan a toolbar.


¿Cómo configurar otros aspectos del Editor?


Reamente el editor es tan configurable que necesitaremos otros artículos para explicarlo todo.
Si embargo no quiero terminar el artículo sin referirme al archivo de configuración y citar algún ejemplo.
El archivo de configuración de llama config.js , y esta en la raíz de la carpeta del ckeditor.
En dicho fichero vera un código como este:

CKEDITOR.editorConfig = function( config )
{
// Cambiar aquí la configuración
};




Dentro del mismo pueden cambiar las configuraciones. Por ejemplo para cambiar el idioma a español (debe ser un idioma soportado) puede colocar la siquiente línea:

config.language = 'es';

Los idiomas puedes verlos en la carpeta llamada lang
Para forzar a que todo lo que se copie en el componente se convierta en texto plano:

config.forcePasteAsPlainText = true;


Espero que te sea útil este modesto artículo, estamos a la espera de cualquier comentario o sugerencia.

URL amigables o semánticas

¿Qué son las URL amigables?
Las URL Amigables son las URL usadas por sitios web dinámicos para ser recordables por los usuarios, ilustrativas, y fáciles de indexar por los buscadores. Lo explico mejor a continuación y con ejemplos.
Explícame con un ejemplo
Las URL son para la el internet como los números para la telefonía; es la forma de acceder a un recurso único en la red de redes (Internet). Las páginas dinámicas introdujeron la posibilidad interactiva con los usuarios, esta interacción genera nombre de URL con variables poco ilustrativas, difíciles de recodar y que dicen poco a los buscadores a cerca del recurso que se muestra.

Por ejemplo:
http://zazua.com/details.php?id=34
Para los usuario que desconocen lo que significa esta URL, simplemente se está haciendo uso de una variable llamada: (id), en este caso es el (identificador) de un artículo, que tiene valor 34 en dicho ejemplo. Esta es una web que muestra un artículo identificado por el número 34.
Pero esta URL es fácil de recordar, una URL puede tener decenas de variables. La URL que muestro a continuación es aun más complicada de recordar:
http://zazua.com/details.php?id=34&view=1&user=user1

La solución a este gran inconveniente es la utilización de URL amigables. A continuación de muestra el ejemplo inicial con su respectiva URL amigable:
http://zazua.com/details.php?id=34
http://zazua.com/article/el-amor-todo-lo-puede--34.html

Estas 2 URL muestran el mismo artículo, sin embargo la segunda es una URL amigable, vea que tiene una porción de texto que claramente deja ver de que se trata el artículo, es mas fácil de recordar, es mas ilustrativa pues da a conocer su contenido, y es mucho más posicional para los buscadores como Google, los cuales tienen en cuenta el título de la web en correspondencia con su contenido y otros muchos aspectos.

Como implementar URL amigables
Si usas un servidor Apache como es el caso de nuestro equipo Moisés Soft , en la mayoría de los trabajos web realizados , la forma es a través del archivo .htaccess (hypertext access) . Este es un archivo que permite definir directivas de configuración y comportamiento del directorio donde se encuentre sin ir al archivo de configuración del apache. Para usarlo debes tener habilitado del modulo rewrite: rewrite_module.

El objetivo de este articulo no es explicar a fondo el funcionamiento del archivo .htaccess en profundidad. Unos de los usos de este archivo es, precisamente la construcción de URL semánticas a partir de reglas , pero tiene muchos otros:
- Restringir el acceso a directorios
- Restringir el acceso a IPs o ISPs
- Manejar errores del servidor.
- Crear redirecciones estáticas
- Controlar Cache
- Evitar hotlink
- Forzar Dominio sin WWW
- Creación de URLs Amigables (semánticas)

Quieres ver un sencillo ejemplo:
Un ejemplo sencillo de .htaccess , en el cual programamos las reglas del ejemplo inicial:
http://zazua.com/details.php?id=34 (URL Real)
http://zazua.com/article/el-amor-todo-lo-puede--34.html (URL amigable)

Lo que deberíamos escribir en el archivo .htaccess , para hacer válido el ejemplo anterior es lo siquiente:
RewriteRule ^article/(.+)--(.+)\.html details.php?id=$2
Voy a explicar de forma rápida que significa esto que hemos escrito.
Usamos la directiva RewriteRule , a esta directiva se le pasa una regla [article/(.+)--(.+)\.html] la cual puede ser una expresión regular como de lo cual estaremos hablado en otro artículo. Cuando dicha expresión regular se cumple, entonces internamente se va al segundo parámetro que es la URL real.

¿Que esta diciendo esta expresión regular?
Lo que dice esta expresión es que todoas las URL que comiencen por la palabra “article” luego un “/” , luego lo que significa “(.+)” es que puede venir cualquier texto luego dos signos de menos “--” , y por último cualquier cosa “(.+)” seguida de la terminación (.html) , como el punto “.” es un carácter reservado en las expresiones regulares se le antepone un “\” , para indicar que lo que se espera es un punto “.”

Falta explicar que significa la segunda directiva: details.php?id=$2
Si recuerdan la URL real tenía esta misma forma:
http://zazua.com/details.php?id=34
Lo único que ven distinto es el signo de dólar con un dos ($2), que lo que significa es que se le está dando el valor lo que aparezca en el segundo “(.+)” en la expresión regular.

Esquemáticamente lo que estamos haciendo es lo siguiente:
http://zazua.com/article/el-amor-todo-lo-puede--34.html
http://zazua.com/details.php?id=34
Vea como esta en rojo el ID en la URL amigable, lo estamos pasando a la URL real a través de la expresión regular
Ahora en ves que poner el Link al artículo 34 así:
http://zazua.com/details.php?id=34
Podemos ponerlo:

http://zazua.com/article/el-amor-todo-lo-puede--34.html
Lo que sucederá internamente es que re-direcciona para http://zazua.com/details.php?id=34 sin que el usuario ni el buscado se percate lo que está sucediendo pues la URL en el navegador es la primea y no la segunda.
Una aclaración es que en la parte en rojo del link de abajo, que es lo que le da la semántica a la URL puede ser cualquier texto, pero este texto no debe tener espacios en blanco ni caracteres no permitidos. Hace poco tiempo que las URL y los estándares ya permiten el uso de caracteres de diferentes lenguajes, pero aun así use solo caracteres sin acentos, y para separar las palabras use el signo de menos.
http://zazua.com/article/el-amor-todo-lo-puede--34.html

¿Cómo generar URL amigables de forma Automática?
Es muy simple, solo debes ser cuidadoso de no permitir que se te introduzcan caracteres no deseados en la URL. Para ello debes filtrar el texto que deseas poner en la URL.

El texto del ejemplo es: “El amor lo puede todo” y hay que convertirlo a “el-amor-todo-lo-puede” , eliminamos los espacios , las mayúsculas , los acentos en vocales y letras , como por ejemplo la “ñ” la cambiamos por la “n” la “ó” por “o”.
A continuación el código que usa Moisés Soft en el nuestro Framework: DIOS PHP

static function GetUrlAmigable($url)
{
$url = $titulo;
$url = strtolower($url);
// caracteres especiales latinos
$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
$repl = array('a', 'e', 'i', 'o', 'u', 'n');
$url = str_replace ($find, $repl, $url);

// Los guiones
$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace ($find, '-', $url);
// Reemplazamos demás caracteres especiales por “-”
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace ($find, $repl, $url);
return $url;
}

GetUrlAmigable(“El amor lo puede todo”) == “el-amor-todo-lo-puede”

Espero que les sea útil este artículo y fijese que este blog y este articulo usan todo lo que hemos explicado si te fijas la URL es amigable: http://moises-soft.blogspot.com/2010/05/url-amigables-o-semanticas.html
Deje su comentario, ante cualquier duda o sugerencia.