Blog de Dabne Tecnologías de la Información

Hablamos de las cosas que nos interesan: tecnologías web, formación, software libre, Ruby on Rails, Spip, ….
  • Si los feeds de SPIP os dan un error como este:

    Error de lectura XML: declaración de texto o XML en un lugar distinto del principio de la entidad
    Ubicación: https://www.tudominio.net/spip.php?page=backend
    Número de línea 3, columna 1:<?xml version="1.0" encoding="iso-8859-1"?>
    ^
    

    Lo que ocurre es que las dos primeras líneas se quedan en blanco.  Para solucionarlo, en el fichero backend.html hay que borrar la línea:

    <?xml version="1.0"[ encoding="(#CHARSET)"]?>

    Es decir, que en lugar de:

    #CACHE{3600}
    [(#HTTP_HEADER{Content-type: text/xml[; charset=(#CHARSET)]})]
    <?xml version="1.0"[ encoding="(#CHARSET)"]?>
    <rss version="2.0"

    Ponga:

    #CACHE{3600}
    [(#HTTP_HEADER{Content-type: text/xml[; charset=(#CHARSET)]})]
    <rss version="2.0"
    1 Comment
  • Cuando los artículos funcionan como eventos, se suelen listar los que tienen una fecha de redacción anterior futura, es decir, los ventos que aún no se han realizado.

    Eso lo da el criterio {age_redac<1} si se quieren listar los eventos de hoy y los del futuro, y {age_redac<0} si solo se quieren listar los eventos futuros pero no los de hoy.

    Lo mismo valdría para la fecha {age<1}

    No obstante, aquí pongo cómo se obtendría la fecha del sistema, en PHP:

    <?php
    $fecha = time();
    $dia = date(d);
    echo 'dia'.$dia;
    $mes = date(m);
    echo 'mes'.$mes;
    $year = date(Y);
    echo 'año'.$year;
    ?>
    No Comments
  • Por defecto, SPIP en los listados no muestra las secciones vacías para evitar que el usuario llegue a callejones sin salida, vistas en las que no hay nada.

    Sin embargo, es posible modificar ese comportamiento.

    Para ello está el criterio {tout}.

    Si se quiere que un menú muestre las secciones vacías:

    <BOUCLE_secciones(RUBRIQUES){id_parent}{par num titre, titre}{tout}>

    Si dentro de ese bucle se quiere hacer un tratamiento distinto para secciones vacías y no vacías se puede usar la sintaxis “if” en SPIP, o bien un if en PHP, o en javaScript, etc. Algo de este tipo:

    if (“#STATUT”==”publie”) {bla bla bla;}
    else {bla bla ba;}

    Con esto se consigue navegar hacia la sección vacía, pero al invocar un esquerelo rubrique para una sección vacía SPIP dará un error 404.

    Para evitar ese error, en el bucle pincipal de la rubrique, el del esqueleto rubrique,  también tiene que tener el criterio {tout}:

    [(#REM)
     Un cache plus court, pour la boucle syndic_articles
    ]#CACHE{3600}
    <BOUCLE_principale(RUBRIQUES) {tout} {id_rubrique}>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0...bla bla bla
    
    									
    No Comments
  • En edulibre.info han realizado una integración PBM+SPIP con la que se puede crear un portal bibliotecario y mediateca para una escuela en Internet.

    1 Comment
  • Cuando se pincha en una fecha del minicalendario de la agenda Sarka_SPIP, se muestra el primer evento del día.

    Queríamos que, en lugar de mostrar el primer evento del día, los mostrase todos.

    Para ello, prescindimos de la página evenements.html y creamos una propia: eventos_dia.html.

    En eventos_dia.html pusimos un bucle con los artículos cuya #DATE_REDAC fuera la de una fecha determinada. El problema era que #DATE_REDAC almacenta la fecha y la hora del evento, pero solo queríamos la fecha, por lo que teníamos que “limpiar” la hora.

    Eso lo hicimos con la función substr de PHP:

    <BOUCLE_evenements(ARTICLES){id_rubrique=**la de la agenda**}>
    <?php
    $fecha_redaccion=substr("#DATE_REDAC", 0, 10);
    if ($fecha==$fecha_redaccion) {
    ?>

    Aquí el código del bucle

    <?php
    }
    ?>
    </BOUCLE_evenements>

    Además, teníamos que hacer que el minicalendario pasase la fecha en la url, pero también habiendo eliminado la hora.

    En el fichero agenda.php, en la function agenda_mini_afficher, a la variable $lien se le asigna la url del enlace del minicalendario.

    Modificamos la asignación a $lien por esto:

    // extraigo la fecha omitiendo la hora
    $fecha=substr(($evenements[$index_evt1]['date_redac']), 0, 10);
    $lien = 'spip.php?page=eventos_dia'.'&fecha='.$fecha;

    En resumen: en agenda.php modificamos la url del mini_calendrier para que apunte a una página propia y le pase la fecha del calendario.

    Y en la página propia filtramos los artículos de la agenda cuya fecha de redacción es esa fecha. Teniendo en cuenta que para comparar ambas fechas hemos tenido que “quitarles” la hora.

    El resultado puede verse en el periódico Diagonal Aragón.

    No Comments
  • En la ayuda de la interface de administración (botón Ayuda en línea), algunos enlaces no funcionan.

    Por ejemplo, el enlace a “más información acerca de las listas” del apartado  Los artículos -> Los atajos tipográficos.

    Si se mira esa url se verá que es de la forma:

    http://www.dabne.net/aide/es-aide.html#listes

    El problema es que esta url no existe porque, como puede verse en cualquier url de la columna izquierda, estas son de la forma:

    http://www.dabne.net/ecrire/?exec=aide_index&aide=&var_lang=es&frame=menu

    La solución consiste en editar el fichero de ayuda y modificar las url.

    El fichero es:

    tmp/cache/aide-es-aide.html

    Hay que buscar las url del tipo:

    <a href='/aide/es-aide.html#listes'>

    Y cambiarlas por:

    <a href='#listes'>

    Eso es todo.

    No Comments
  • En nuestro caso, en un sitio hecho con Spip, no podíamos activar los plugins recién instalados, apareciendo el código de error 403. Incluso dando permisos a las carpetas que los contenían, por ftp.

    Algunos foros recomiendan borrar las carpetas /tmp/cache y /tmp/sessions y volverlas a crear dándoles permisos de lectura y escritura para todxs. Así lo hicimos, pero no funcionó. También llegó un momento en que no podíamos ver ni el espacio público, sólo el privado….

    Este error 403 se produce cuando no se tiene permiso para acceder a una página. Estos permisos están configurados en directivas dentro del archivo de configuración principal de Apache (httpd.conf, típicamente en una sección del tipo <Directory>), o en archivos de configuración por directorios (archivos .htaccess).

    En nuestro caso, el archivo .htaccess había sido desconfigurado.

    Solucionamos el asunto escribiendo esta línea en el archivo .htaccess de la raíz del sitio:

    SecFilterEngine Off
    No Comments
  • Para hacer un calendario de eventos en la parte pública de  Spip 1.9.x.

    (tomada de la plantilla  Sarka-spip)

    Hacen falta los ficheros (adjuntos):
    * agenda.php
    * mes_fonctions.php
    * mini-agenda.html (el calendario en pequeño)
    * agenda.html (todos los eventos de la agenda)
    * evenement.html (que en nuestro caso es idéntico a article.html pero la fecha que hemos puesto que aparezca es la fecha de redacción anterior, que es la que aparece en el calendario)

    Para hacer funcionar la agenda:
    * Hay que crear una sección que contendrá los eventos.
    * Se crea un grupo de palabras clave llamado “squelette_habillage”
    * Y en este grupo, se crea la palabra clave “agenda”.
    * Esta palabra se asocia a la sección en cuestión (no hace falta ya asociarla a los artículos dentro).
    * Al publicar un artículo dentro de esa sección, hay que especificar la “fecha de redacción anterior” que es la que aparece en el calendario.

    Ahora todos los artículos que haya dentro de esta sección serán considerados como eventos, aunque siguen siendo artículos y como tal se editan.
    El día que tenga un evento o más aparecerá en otro color en el calendario.

    Para incluir un mini-calendario en la web hay que incluir el código con parámetros en el lugar donde queremos que aparezca:
    [(#NOOP) <!-- affichage du mini-agenda --> ] <BOUCLE_acces_agenda(RUBRIQUES) {id_rubrique=#RUBRIQUE_AGENDA}> [(#RUBRIQUE_AGENDA|=={0}|?{'', ' '})<INCLURE{fond=mini-agenda}{id_article}{id_rubrique}{calendrier_mois}{calendrier_annee}>] </BOUCLE_acces_agenda>

    Si hay inclures dentro de otras inclures en esqueletos, hay que tener cuidado con las relaciones. En nuestro caso teníamos los esqueletos de sommaire, secciones y artículos con una columna izquierda donde a su vez estaba incluida la agenda. Por lo tanto el código anterior está puesto en la col-izq, que es desde donde se llama a la agenda.

    Además, en el sommaire y en las secciones, se ha escrito:

    <INCLURE(page.php3){fond=col_izq}{id_rubrique=#ID_RUBRIQUE}{calendrier_mois}{calendrier_annee}>

    En los artículos:

    <INCLURE(page.php3){fond=col_izq}{id_article=#ID_ARTICLE}{calendrier_mois}{calendrier_annee}>

    No Comments
  • Según leo en la lista de SPIP, para que SPIP no nos obligue a tener los
    directorios IMG, tmp, local y config en 777 (es decir, completamente
    abiertos), hay que tener el PHP en modo CGI y no en Apache.

    No Comments
  • 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.

    1 Comment