Movable Type presenta una implementación completa del
API XML-RPC de Blogger (donde es aplicable). Los únicos dos
métodos que no están soportados por Movable Type son getTemplate y
setTemplate, debido a diferencias entre el sistema de plantillas
de Blogger y el de Movable Type.
Movable Type también soporta el API XML-RPC de metaWeblog (también donde es aplicable).
Finalmente, Movable Type también aporta unos cuantos métodos más para manipular las categorías asignadas a sus entradas.
El uso de estas APIs XML-RPC requiere que su servidor tenga
instalado tanto LWP::UserAgent como SOAP::Lite
; Si no es así, las instrucciones de instalación pueden
indicarle como instalarlas.
A continuación se muestran los métodos XML-RPC soportados por Movable Type:
Parámetros: String appkey, String blogid,
String usuario, String contraseña, String contenido,
boolean publicar
Valor de retorno: si todo ha ido bien, la String postid
de la nueva entrada; si no, fault
Parámetros: String appkey, String postid, String usuario, String contraseña, String contenido, boolean publicar
Valor de retorno: si todo ha ido bien, el valor boolean true; si no, fault
Parámetros: String appkey, String postid,
String usuario, String contraseña, boolean publlicar
Valor de retorno: si todo ha ido bien, el valor boolean true;
si no, fault
Parámetros: String appkey, String blogid, String usuario, String contraseña, int numeroDeEntradas
Valor de retorno: si todo ha ido bien, un array de estructuras que contiene ISO.8601 fechaCreación, String usuario, String postid, String contenido; si no, fault
Notas: fechaCreado pertenece a la misma zona horaria que el sistema de weblog blogid
Parámetros: String appkey, String usuario, String contraseña
Valor de retorno: si todo ha ido bien, una rray de estructuras que contiene String url, String blogid, String nombregBlog; si no, fault
Parámetros: String appkey, String usuario, String contraseña
Valor de retorno: si todo ha ido bien, una estructura que contiene String userid, String nombre, String apellido, String nick, String email, String url; si no, fault
Notes: nombre es el nombre de usuario de Movable Type hasta el primer carácter espaciador, y apellido es la parte del nombre de usuario después del carácter espaciador.
Parameters: String blogid, String
usuario, String contraseña, struct contenido,
boolean publicar
Valor de retorno: si todo ha ido bien, el String postid
de la nueva entrada; si no, fault
Notas: la estructura contenido puede
contener los siguientes campos de manera común: title,
para el título de la entrada; description, para el cuerpo
de la entrada; y dateCreated, para establecer la fecha de
creación de la entrada. Adicionalmente, la implementación
de Movable Type le permite pasarle valores para otros cinco campos: int mt_allow_comments,
el valor del campo allow_comments; int mt_allow_pings,
el valor para el campo allow_pings; String mt_convert_breaks,
el valor para el campo convert_breaks; String mt_text_more,
el valor para el texto adicional de la entrada; String mt_excerpt,
el valor del campo extracto; String mt_keywords, el valor del
campo keywords; y un array mt_tb_ping_urls, la lista de la URL
de pingsTrackBack para ésta entrada. Si está definida, dateCreated
debe de estar en el formato ISO.8601
Parámetros: String postid, String usuario,
String contraseña, struct contenido, boolean publicar
Valor de retorno: si todo ha ido bien, el valor
boolean true; si no, fault
Notas: la estructura contenido puede contener los siguientes campos de manera común: title, para el título de la entrada; description, para el cuerpo de la entrada; y dateCreated, para establecer la fecha de creación de la entrada. Adicionalmente, la implementación de Movable Type le permite pasarle valores para otros cinco campos: int mt_allow_comments, el valor del campo allow_comments; int mt_allow_pings, el valor para el campo allow_pings; String mt_convert_breaks, el valor para el campo convert_breaks; String mt_text_more, el valor para el texto adicional de la entrada; String mt_excerpt, el valor del campo extracto; String mt_keywords, el valor del campo keywords; y un array mt_tb_ping_urls, la lista de la URL de pingsTrackBack para ésta entrada. Si está definida, dateCreated debe de estar en el formato ISO.8601
Parámetros: String postid, String usuario, String contraseña
Valor de retorno: si todo ha ido bien, una estructura que contiene String userid, ISO.8601 dateCreated, String postid, String description, String title, String link, String permaLink, String mt_excerpt, String mt_text_more, int mt_allow_comments, int mt_allow_pings, String mt_convert_breaks, String mt_keywords; si no, fault
Notas: tanto link como permaLink
apuntan a la entrada archivada. Los campos con el prefijo mt_ son
extensiones de Movable Type al API de metaWeblog.getPost
Parámetros: String blogid, String usuario, String contraseña, int numeroDeEntradas
Valor de retorno: si todo ha ido bien, una array de estrcuturasque contiene ISO.8601 dateCreated, String userid, String postid, String description, String title, String link, String permaLink, String mt_excerpt, String mt_text_more, int mt_allow_comments, int mt_allow_pings, String mt_convert_breaks, String mt_keywords; si no, fault
Notes: fechaCreado pertenece a la misma zona horaria que el sistema de weblog blogid;link y permaLink son las URLs que apuntan a la entrada archivada.
Parámetros: String blogid, String usuario, String contraseña, struct archivo
Valor de retorno: URL hasta el archivo subido.
Notas: la estructura file debe contener dos campos: base64 bits (el contenido en base64 del archivo) y String name (el nombre del archivo). El campo type (tipo de medio del archivo) es corrientemente ignorado.
Parámetros: String blogid, String usuario, String contraseña, int numeroDeEntradas
Valor de retorno: si todo ha ido bien, una array de estructuras que contiene ISO.8601 dateCreated, String userid, String postid, String title; si no, fault
Notas: fechaCreado pertenece a la misma zona horaria que el sistema de weblog blogid
Parameters: String blogid, String usuario, String contraseña
Valor de retorno: si todo ha ido bien, una array de estructuras que contiene String categoryId y String categoryName; si no, fault
Parámetros: String postid, String usuario, String contraseña
Valor de retorno: si todo ha ido bien, una array de estructuras que contienen String categoryName, String categoryId, y boolean isPrimary; si no, fault.
Notas: isPrimary denota cual es la categoría primaria de la entrada.
Parámetros: String postid, String usuario, String contraseña, array categorias
Valor de retorno: si todo ha ido bien, el valor boolean true; si no, fault
Notas: el array categorias es un array de estructuras que contienen los campos String categoryId y boolean isPrimary. El uso de isPrimary para establecer la categoría primeria es opcional--en ausencia de está flag, a la primera estructura del array será asignada la categoría primaria de la entrada.
Parámetros: ninguno
Valor de retorno: una array de nombres de métodos soportados por el servidor.
Parámetros: ninguno
Valor de retorno: un array de estructuras que contienen los campos String key y String label. key es la cadena de carácteres única que identifica al plugin de formateo de texto, y label será la descripción que se mostrará al usuario. key es el valor que debe ser pasado en el parámetro mt_convert_breaks a newPost y editPost.
Parámetros: String postid
Valor de retorno: un array de estructuras que contienen los campos String pingTitle (el título de la entrada mándada en el ping), String pingURL (la URL de la entrada), y String pingIP (la dirección de internet IP del servidor que mandó el ping).
Parámetros: String postid, String usuario, String contraseña
Valor de retorno: si todo ha ido bien, el valor boolean true; si no, fault
NOTA: el valor de appkey es ignorado
por Movable Type en todos los métodos XML-RPC de Blogger.
Puede usar la implementación XML-RPC de Movable Type con otras herramientas existentes como w.bloggar, BlogApp, BlogLet, BlogBuddy, Jericho, etc. Por ejemplo, para hacer que BlogBuddy publique en su weblog Movable Type, siga esta instrucciones:
El código de Movable Type está escrito orientado a objetos y contiene APIs de Perl bien documentadas que puede usar en sus propios programas de Perl. La documentación está en formato PODy está contenida dentro de los archivo .pm. Puede leer esa documentación desde el interprete de comandos usando el comando perldoc. For example:
% cd <diretorio de movable type/lib
% perldoc MT
La estructuración de plugins de Movable Type hace sencillo añadir nuevas tags al sistema. En el futuro, serán añadidas más funcionalidades de callback.
Los archivos Plugin son scripts de Perl situados en un directorio especial; cuando se inicializa Movable Type, carga todos los plugins, que pueden modificar el código de Movable Typede y del sistema en tiempo de ejecución. Sólo los archivos extensión .pl son considerados plugins y cargados automáticamente.
Su directorio de plugins debe estar situado en el mismo directorio que mt.cgi.
Para crear ese directorio, conéctese a su servidor FTP, y abra el directorio donde instaló Movable Type. Cree un nuevo directorio llamado plugins.
use MT::Template::Context;
MT::Template::Context->add_tag(ServerUptime => sub { `uptime` });
1;
Hora de arranque del sistema: <$MTServerUptime$>
Es sólo un ejemplo muy simple de una nueva tag que puede añadir. La estructuración de plugins no está limitada a añadir sólo llamadas a comandos del sistemas.
MT::Template::Context->add_container_tag(Loop => sub {
my $ctx = shift;
my $res = '';
my $builder = $ctx->stash('builder');
my $tokens = $ctx->stash('tokens');
for my $i (1..5) {
$ctx->stash('i_value', $i);
defined(my $out = $builder->build($ctx, $tokens))
or return $ctx->error($ctx->errstr);
$res .= $out;
}
$res;
});
MT::Template::Context->add_tag(LoopIValue => sub {
my $ctx = shift;
$ctx->stash('i_value');
});
Puede ser usado en una plantilla de esta manera:
<MTLoop>
El valor de I es: <$MTLoopIValue$>
</MTLoop>
Que mostraría:
El valor de I es: 1
El valor de I es: 2
El valor de I es: 3
El valor de I es: 4
El valor de I es: 5
Por ejemplo, los siguiente añade 3 tags: <MTIfYes>,
que siempre muestra su contenido; <MTIfNo>, que
nunca muestra su contenido; y <MTEntryIfTitle>, que
debe ser usado en el contexto de la entrada y que sólo muestra
su contenido su la entrada tiene un título.
use MT::Template::Context;
MT::Template::Context->add_conditional_tag(IfYes => sub { 1 });
MT::Template::Context->add_conditional_tag(IfNo => sub { 0 });
MT::Template::Context->add_conditional_tag(EntryIfTitle => sub {
my $e = $_[0]->stash('entry') or return;
defined($e->title) && $e->title ne '';
});
Estas tags podrían ser usadas así:
<MTIfYes>Sí, esto aparece.</MTIfYes>
<MTIfNo>No, esto no aparece.</MTIfNo>
<MTEntries>
<MTEntryIfTitle>
Esta entrada tiene como título: <$MTEntryTitle$>
</MTEntryIfTitle>
</MTEntries>
MT::Template::Context->add_global_filter(rot13 => sub {
(my $s = shift) =~ tr/a-zA-Z/n-za-mN-ZA-M/;
$s;
});
Que puede ser usado de esta manera:
<$MTEntryTitle rot13="1"$>
A esta subrutina anónima se le pasan tres argumentosos: el
valor escalar de la tag a filtrar, el valor del argumento suministrado
al atributo, y el objeto MT::Template::Context . Como un ejemplo
del segundo argumento, si inventásemos un filtro llamado cualquiera,
y los llamásemos así:
<$MTCommentAuthor cualquiera="5"$>
el segundo argumento de la rutina de callback sería igual
a 5.
Se pueden escribir tags de plugin para mostrar feeds de RSS, mostrar información del estatus del servidor, implementar un contador de visitas, etc. Puede descargar plugins desde http://www.movabletype.org/resources.shtml.