El tener varios plugins de contenido en Joomla! puede generar algunos problemas en cuanto al orden de despliegue de la información de cada uno, esto es porque dentro de las opciones de programación de plugins con Joomla! framework podemos insertar el contenido de nuestro plugin en diferentes etapas a lo largo de la renderización completa de la página, estas opciones son:
- onAfterDisplayContent
- onAfterDisplayTitle
- onBeforeDisplayContent
- onPrepareContent
Las opciones y forma de programar cada una de estas son similares, en otro artículo las explicaré a detalle.
La empresa jfoobar
creó el plugin Author Biograph
que tiene la función de insertar una pequeña reseña del autor del artículo al finalizar este, pero como lo expliqué en el primer párrafo existen varias formas de que se despliegue "después de", puede ser a través de onAfterDisplayContent o de onPrepareContent. En este caso Author Biograph por default lo hace a través de onAfterDisplayContent, lo que provoca que cualquier plugin que esté insertado con onPrepareContent se desplegará primero. Para realizar el cambio a onPrepareContent tenemos que modificar el archivo instalaciónJoomla/plugins/content/jfoobar_author_bio.php, alrededor de la línea 42 encontraremos:
function onAfterDisplayContent( &$article, &$params, $limitstart )
Lo cambiamos por:
function onPrepareContent( &$article, &$params, $limitstart )
Con esto cambiamos el "momento" o etapa en que el plugin será procesado por Joomla!, ahora tenemos que hacer una modificacion en la forma en que el plugin regresa la información a Joomla!, en la línea 86 habrá algo como:
$link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid));
$output .= '<a href="'.$link.'" title="Full profile '.$row->title.'">More about '.$row->title.'</a>';
$output .= '</div>';
return $output;
Lo sustituimos por:
$link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid));
$output .= '<a href="'.$link.'" title="Full profile '.$row->title.'">More about '.$row->title.'</a>';
$output .= '</div>';
$article->text = $article->text.$output;
return true;
Una vez hecho este cambio y en caso de tener más plugins de content insertados a través de onPrepareContent el orden de despliegue estará definido en base al orden que se establezca en el gestor de plugins de Joomla! en el panel de control.
Tadek Chávez es el editor principal de este sitio. Ingeniero en sistemas computacionales especializado en ciencias de la computación con enfoque en sistemas abiertos. Director de tadzioTek
.
Secciones 



















Comentarios