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.