Para incrustar vídeos propios

Instalar el plugin Lecteur_multimedia (SPIP 1.9 y 2.0).

Con el plugin instalado, subir el vídeo como si fuera un documento (no imagen ni adjunto, sino documento, en el formulario de la izquierda) y luego, una vez subido, en el artículo poner algo tipo esto:

<docX|player>

Donde la X es el número del documento.

Incrustar vídeos de YouTube con thumbnail

Para inscrustar un vídeo de YouTube basta con copiar y pegar en un artículos el código que ofrece YouTube para tal fin.

Ese código tendrá un aspecto parecido a este:

<object width="425" height="344"><param name="movie"
value="http://www.youtube.com/v/LOt-UkTLZGc&hl=es&fs=1&">
</param><param name="allowFullScreen" value="true">
</param><param name="allowscriptaccess" value="always">
</param><embed src="http://www.youtube.com/v/LOt-UkTLZGc&hl=es&fs=1&"
type="application/x-shockwave-flash" allowscriptaccess="always"
allowfullscreen="true" width="425" height="344"></embed></object>

Si se quiere que el vídeo se empiece a reproducir automáticamente,

en el código anterior añadir al final de la  url &autoplay=1

Si, en lugar de mostrar la ventan con el vídeo, se quiere poner un thumbnail del vídeo, entonces hay que descargar ese thumbnail de YouTube.

La url para descargarlo se tiene que construir a partir de la del vídeo (su “value” o su “src”).

Para el caso del vídeo anterior, el thumbnail seria este:

http://img.youtube.com/vi/LOt-UkTLZGc/default.jpg

Se tiene que subir como imagen y, por ejemplo, desde esa imagen se puede enlzar con otro artículo que tenga el código que incrusta el vídeo.

 

Se pueden desactivar las peticiones AJAX de la interfaz de administración de SPIP  haciendo que no se cargue jquery.js.

Para ello, hay que modificar el fichero ecrire/inc/filtres.php, en concreto la función  function f_jQuery, por ejemplo comentado estas líneas:

//  $texte = "\n<script src=\"".generer_url_public('jquery.js')
//  . "\" type=\"text/javascript\"></script>\n"
//  . $texte;

Con ello, en la interfaz de administración no se insertará la línea:

<script src="http://www.dabne.net/spip.php?page=jquery.js" type="text/javascript">
</script>

en el <head> de la interfaz de administración.
 

La baliza #LOGO_ARTICLE visualiza el artículo. Pero, si necesitamos la url del logo, podemos obtenerla así:

[(#LOGO_ARTICLE||extraire_attribut{src}|url_absolue)]

o así:

"IMG/[(#LOGO_ARTICLE|fichier)]"
 

En un sitio SPIP, los logos estaban a un ancho de 80 con:

[(#LOGO_ARTICLE||inserer_attribut{'alt',#TITRE}
||image_reduire{80})]

Al quererlos poner a un ancho de 100 con:

[(#LOGO_ARTICLE||inserer_attribut{'alt',#TITRE}
||image_reduire{100})]

ocurría que no aparecían, o sea, SPIP no encontraba la nueva viñeta.
Al vaciar la caché de imágenes calculadas automáticamente, el tamaño de la caché no se ponía a cero.

La solución fue renombar el directorio local a otro nombre (por ejemplo, local_old) y crear un nuevo directorio local vacío.

 

Supongamos que un artículo tiene varias palabras clave y queremos la lista de todos los artículos que tienen alguna de esas palabras clave, ordenados por orden alfabético.

Necesitaremos tres bucles.

Primer bucle:

<BOUCLE_mots(MOTS){id_article}>
  <B_mots_articulos>
    <BOUCLE_mots_articulos(ARTICLES){id_mot}{exclus}{doublons uno}>
  </BOUCLE_mots_articulos>
</BOUCLE_mots>

Segundo bucle:

<BOUCLE_uno(ARTICLES){doublons uno}{doublons dos}>
</BOUCLE_uno>

Tercer bucle:

<B_dos>
<h3>Art&iacute;culos relacionados</h3>
<BOUCLE_dos(ARTICLES){doublons dos}{par titre}>
  <p><a href="#URL_ARTICLE">#TITRE</a></p>
</BOUCLE_dos>
 

A veces es necesario poner a cero las estadísticas de spip. Como no he encontrado ninguna opción para hacerlo desde la interfaz de administración, lo que hago es borrar los registros de estas cuatro tablas:

  • spip_referers
  • spip_referers_articles
  • spip_visites
  • spip_visites_articles

Tampoco he encontrado un plugin que lo haga, así que toca hacerlo a mano.

 

En un sitio web queríamos utilizar el plugin openPublishing para que los lectores propusieran artículos en dos secciones distintas: cartas al director y agenda de actividades.
Como este plugin solo se puede configurar “globalmente” teniamos dos problemas:

  • Daba al lector opción de elegir la sección en la que publicar, mientras que nosotras queríamos que la publicación fuese directamente a una u otra sección.
  • Aparecían todos los campos permitidos en la configuración en los dos casos, mientras que nosotras queríamos que en un caso apareciesen unos y en otro, otros.

En realidad, lo que necesitábamos era que un único plugin funcionara de dos modos distintos. La solución que adoptamos fue crear dos balizas distintas.

Explicación

1. Configuramos openPublishing con todas las secciones y campos que necesitábamos (unión de los dos casos).

2. Copiamos /plugins/openPublishing/formulaires/formulaire_article.html como formulaire_carta.html. ¡Alerta con elegir un nombre que no sobreescriba ninguno de los ficheros del plugin!

3. Copiamos /plugins/openPublishing/balise/formulaire_article.php como formulaire_carta.php.

4. Editamos formulaire_carta.php sustituyendo:

return array('formulaires/formulaire_article'

por:

return array('formulaires/formulaire_carta'

Y tambien #FORMULAIRE_ARTICLE por #FORMULAIRE_CARTA en estos trozos de código:

function balise_FORMULAIRE_CARTA ($p) {

        $p = calculer_balise_dynamique($p,'FORMULAIRE_CARTA',array());
        return $p;
}
...
function balise_FORMULAIRE_CARTA_stat($args, $filtres) {

        return ($args);
}
...
function balise_FORMULAIRE_CARTA_dyn() {

En total hemos hecho cinco sustituciones.

5. Editamos formulaire_carta.html para adaptarlo a nuestras necesidades. En nuestro caso:

  • Comentar los campos que no se usan (o eliminarlos). Ejemplo:
<!-- no se usa surtitre
[(#CONFIG{op/SurTitre,''}|=={yes}?{
 <fieldset><legend><:opconfig:publie_surtitre:>(<:opconfig:optionel:>)</legend>
   <input type="text" name="surtitre" value="[(#ENV**{surtitre})]"
     size="70" maxlength="80"></p>
   <:opconfig:explication_surtitre:>
</fieldset>
})]
-->
  • Cambiar algunos tipos de campo en el formulario. Por ejemplo, no damos opción a elegir la sección:
<input type="hidden" name="id_rubrique" value="43" > <!-- seccion cartas-->

6. Con esto ya tenemos disponible la baliza #FORMULAIRE_CARTAS para usarla dentro del esqueleto.

7. Repetir estos cambios para crear otra baliza distinta (en nuestro caso #FORMULAIRE_EVENTOS).

Y así conseguimos personalizar el plugin openPublishing (Publication Ouverte) para adaptarlo a dos usos distintos.

 

Ocurre cuando en recherche.html se llama al resultado de la búsqueda con un INCLURE:

<INCLURE{fond=inc-recherche}>

En ese caso, se debe añadir el parámetro {recherche}:

<INCLURE{fond=inc-recherche}{recherche}>

 

En este ejemplo vamos a usar palabras clave y el boucle RUBRIQUES, pero valdría igual con otro criterio y otro bucle.

Queremos excluir las secciones que tienen la palabra clave “no-mapa”.

Hacemos lo siguiente:
[(#REM) Este bucle guarda en exclus
una lista de las secciones que tiene la palabra clave "no-mapa" ]
<BOUCLE_no_plan(RUBRIQUES){titre_mot=no-mapa}{doublons exclus}>
</BOUCLE_no_plan>

[(#REM) Este bucle muestra la lista de las seccones
que no están guardadas en exclus ]
<BOUCLE_secteurs(RUBRIQUES) {racine} {par num titre}
{doublons exclus}>
<h2><a href="#URL_RUBRIQUE">#TITRE</a></h2>
</BOUCLE_secteurs>

Si, inversamente, en la palabra clave estuvieran las secciones que sí queremos listar, entonces haría falta tres bucles:

[(#REM) se guardan en el doublon guarda
las secciones que se quieren mostrar]
<BOUCLE_guarda(RUBRIQUES){titre_mot=si-mapa}{doublons guarda}>
</BOUCLE_guarda>

[(#REM) Se guardan en el doublon exclus todas las secciones
excepto las que están en el doublon guarda]
<BOUCLE_excluye(RUBRIQUES) {doublons guarda} {doublons exclus}>
</BOUCLE_excluye>

[(#REM) Se muestran todas las secciones
salvo las que están en el doublon exclus ]
<BOUCLE_muestra(RUBRIQUES) {doublons exclus}>
#TITRE
</BOUCLE_muestra>

 

Como es sabido, SPIP no permite mezclar en un único bucle artículos y secciones.

Sin embargo, en muchos sitios esto es una necesidad, especialmente cuando en la portada se ponen novedades que unas veces son artículos y otras secciones y se quieren ordenar, por ejemplo, por fecha.

El truco consiste en programar un bucle para artículos y crear artículos falsos que redireccionen a secciones.

Crear un artículo falso que redireccione a una sección

En la configuración del sitio, en contenido del sirtio, en los artículos, hay que habilitar la opción “enlace hipertexto”.

En el artículo falso, en el campo URL hay que poner el enlace a la sección real. Por ejemplo:

spip.php?rubrique7

En el artículo falso, en el campo Enlace hipertexto hay que poner el título del enlace.

Estos dos campos se manejan con las balizas #URL_SITE y #NOM_SITE

El bucle

El bucle podría ser algo así:

BOUCLE_menu(ARTICLES){id_rubrique=39}{par titre}>
  <a href="#URL_SITE">#NOM_SITE</a>
</BOUCLE_menu>

Esto funcionará si todos los artículos tienen esas dos balizas, es decir, si todos son “falsos”.

Pero si hay artículo falsos y artículos verdaderos, en unos casos se deberán utilizar esas balizas y en otros casos las balizas habituales: #URL_ARTICLE y #TITRE.

El bucle, mejorado

En este caso, hay que usar el filtro condicional, cuya sintaxis es:

|?{afirmativo,negativo}

Y el bucle quedaría más o menos así:

<BOUCLE_menu(ARTICLES){id_rubrique=39}{par titre}>
  <a href="[(#URL_SITE||?{#URL_SITE,#URL_ARTICLE})]">
  [(#NOM_SITE||?{#NOM_SITE,#TITRE})]</a>
</BOUCLE_menu>

Lo cual hace que si el artículo tiene #URL_SITE se tome este valor, y si no se tome el valor #URL_ARTICLE. Y lo mismo para #NOM_SITE y #TITRE.

Blog de Dabne || Web de Dabne Suffusion theme by Sayontan Sinha