Joomla: Títulos de artículos en H1
02 de Enero de 2008 en Programación, PHP, Joomla
Lecturas: 2,574

JoomlaAhora que es tan importante para el SEO determinar perfectamente los tags HTML, me encuentro que Joomla, que pinta ciertas cosas en la página pasando de la plantilla, dibuja los títulos de los artículos en una columna de una tabla con un estilo determinado en vez de usar el H1. Que dibuje el contenido propiamente a base de tablas es feo, pero lo acepto. Lo que no acepto es que los títulos no sean definidos como tal. En este pequeño HowTo explico qué tocar para que los títulos sean definidos como H1.

La parte interna que se dedica a la maquetación del contenido es el componente Content. El archivo a editar es components/com_content/content.html.php y sobre la línea 617 está la funcion Title que construye el título:

PHP:
function Title( &$row, &$params, &$access ) {
    if ( $params->get( 'item_title' ) ) {
        if ( $params->get( 'link_titles' ) && $row->link_on != '' ) {
            ?>
            <td class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>" width="100%">
                <a href="<?php echo $row->link_on;?>" class="contentpagetitle<?php echo $params->get( 'pageclass_sfx' ); ?>">
                    <?php echo $row->title;?></a>
                <?php HTML_content::EditIcon( $row, $params, $access ); ?>
            </td>
            <?php
        } else {
            ?>
            <td class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>" width="100%">
                <?php echo $row->title;?>
                <?php HTML_content::EditIcon( $row, $params, $access ); ?>
            </td>
            <?php
        }
    } else {
        ?>
        <td class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>" width="100%">
            <?php HTML_content::EditIcon( $row, $params, $access ); ?>
        </td>
        <?php
    }
}

Realmente no nos vamos a meter a modificar la forma en que se maqueta el contenido (de momento ;) ) así que sencillamente mantendremos la columna pero añadiremos un H1 rodeando el echo del título y moveremos la declaración de la clase que le da el estilo al H1. Dejaremos la función de la siguiente manera:

PHP:
function Title( &$row, &$params, &$access ) {
    if ( $params->get( 'item_title' ) ) {
        if ( $params->get( 'link_titles' ) && $row->link_on != '' ) {
            ?>
            <td width="100%">
                <a href="<?php echo $row->link_on;?>" class="contentpagetitle<?php echo $params->get( 'pageclass_sfx' ); ?>">
                    <h1 class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>"><?php echo $row->title;?></h1></a>
                <?php HTML_content::EditIcon( $row, $params, $access ); ?>
            </td>
            <?php
        } else {
            ?>
            <td width="100%">
                <h1 class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>"><?php echo $row->title;?></h1>
                <?php HTML_content::EditIcon( $row, $params, $access ); ?>
            </td>
            <?php
        }
    } else {
        ?>
        <td class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>" width="100%">
            <?php HTML_content::EditIcon( $row, $params, $access ); ?>
        </td>
        <?php
    }
}

En mi caso no ha sido necesario, pero puede que debamos ajustar un poco la hoja de estilos. Éso es todo :)

Tags: , , ,
 Enviar a Fresqui

Leer los Comentarios

[ # 17415 ] Comment desde luis [12 de Febrero de 2008, 03:36]

He introducido este codigo y ahora tengo un pequeño problema.

Me ocupa el vinculo toda la linea. Me explico no solo el texto, si no, toda la linea que ocupa el texto en la tabla.

¿como puedo solucionarlo?

Un saludo y gracias,

[ # 17416 ] Comment desde Xavi [12 de Febrero de 2008, 03:39]

Estoy casi seguro que es cosa del CSS del template. En mi caso, como el template era mío, no tuve ningún problema… verifica si la clase CSS te está expandiendo el espacio del título al 100%… es lo más seguro.

Escribe un Comentario





Estadísticas