SEO phpBB 3.1.x 3.2.x – Meta Descripcion


seo phpbb 3.1 meta descipcion¿No sabes como conseguir un foro phpBB 3.1.x/3.2.x decente desde el punto de vista SEO? Tranquilo, en este post te mostraré como incluyendo un pequeño script a tu foro podrás conseguir las descripciones dinámicas.

 

 

¿Qué hace exactamente el script?

Básicamente genera la etiqueta <meta…/> en el index, los foros y los hilos. En el index incluye la que indiquemos, en los foros la descripción de los mismo y en los hilos usará parte del texto escrito.


Todo esto es muy importante para mejorar el SEO de tu foro phpBB. Como sabemos no existe una extensión que haga esto en las versiones 3.1 o 3.2, lo cual es bastante triste dado que no es para nada complicado.

Pasos a seguir para conseguir las etiquetas meta dinámicas

Para empezar tienes que descargar los siguientes archivos para editarlos a continuación:

  • styles/tu-estilo/template/overall-header.html
  • index.php
  • viewtopic.php
  • viewforum.php

¡Recuerda! Haz copias de seguridad por si algo saliese mal y usa ctr+f para buscar 😉


1. Incluyendo la meta etiqueta dinámica

En este paso editarás el archivo overall-header.html . Para ello simplemente tienes que buscar:

{META}

y justo debajo pegar:

<meta name="description" content="{S_META_DESCRIPTION}" />
<meta name="keywords" content="{S_META_KEYWORDS}" />

La variable {S_META_DESCRIPTION} será quien pase la descripción en cada apartado del foro y la {S_META_KEYWORDS} se ocupa de las palabras clave. Realmente las keywords no son necesarias, pero si a alguien le hace ilusión ahí está.

2. Script para el index

Ahora vas a trabajar con el archivo index.php. Buscas:


$template->assign_vars(array(

y justo debajo pegas:

/*** Meta Description por angelosada.com ***/
'S_META_DESCRIPTION'=> 'La descripción que quieras para tu foro',
/*** ./Meta Description por angelosada.com ***/

Recuerda cambiar lo que está en rojo por la descripción de tu foro. Eso será lo que aparezca en el index.

3. Script para los foros

Es hora de viewforum.php. De nuevo tienes que buscar:

'ORDER_BY' => 't.topic_type ' . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order,
);

Si no lo encuentras usando el ctr+f intenta buscando solo:

'ORDER_BY' => 't.topic_type ' . ((!$store_reverse) ?

Debajo del primer código, no de este último, pegas lo siguiente:


/*** META DESCIPCIÓN por angelosada.com ***/
$sMetaDescription= preg_replace
( array
( '#\\[([^/\\]=]+)[^\\]]*\\]#' // Strip possible BBCode opening tags
, '#\\[/[^\\]]*\\]#' // Closing tags
, '#<[^>]+>#' // Strip possible HTML
, '#[\\n\\r\\t]#s' // Strip linebreaks and tabs
, '# +#' // Strip multiple spaces
, '#[a-z]+(:|\\&\\#58;)\\S+#i' // Strip URIs
)
, array
( ''
, ''
, ''
, ' '
, ' '
, ' '
)
, html_entity_decode( $forum_data['forum_desc'] )
);

// Solo se aceptan palabras con el abecedario latino. //
// Si quieres usar otro tipo de letras y tienes PHP 5.1.0 o otra versión más nueva, puedes usar la segunda línea //
//$sKeyWord= ucwords( strtolower( preg_replace( '#[^a-zA-Z0-9_ ]+#', ' ', $sMetaDescription ) ) );
$sKeyWord= ucwords( utf8_strtolower( preg_replace( '#[^\\p{L}\\p{N}a-zA-Z0-9_ ]+#u', ' ', $sMetaDescription ) ) );

$aDistinctKeyword= array();
$aKeyWord= explode( ' ', $sKeyWord );
foreach( $aKeyWord as $v1 )
if( !isset( $aDistinctKeyword[$v1] )
&& utf8_strlen( $v1 )> 3 // Mínimo de 3 caracteres por palabra clave
&& utf8_strlen( $v1 )<= 1000 // Máximo de 1000 caracteres por palabra clave
) $aDistinctKeyword[$v1]= 0;

$aDistinctKeyword= array_slice( $aDistinctKeyword, 0, 20, TRUE ); // Solo las 20 primeras palabras clave
$sKeyWord= implode( ', ', array_keys( $aDistinctKeyword ) );

//Acorta la descripción si tiene más de 150 caracteres
if( ( utf8_strlen( $sMetaDescription )> 150 )
&& ( $iSpace= utf8_strpos( $sMetaDescription, ' ', 150 ) )!== FALSE
) $sMetaDescription= utf8_substr( $sMetaDescription, 0, $iSpace );

$template-> assign_vars
( array
( 'S_META_DESCRIPTION'=> $sMetaDescription
, 'S_META_KEYWORDS'=> $sKeyWord
)
);
/*** ./META DESCRIPCIÓN por angelosada.com ***/

Guardas y listo. Al siguiente paso.

3. Script para los hilos

En el último paso modificarás viewtopic.php para incluir las descripciones de los hilos. De nuevo buscas:

$message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);

y  debajo pegas:

/*** META DESCRIPCION por angelosada ***/
if( !$sMetaDescription ) {
$sMetaDescription= preg_replace
( array
( '#\\[([^/\\]=]+)[^\\]]*\\]#' // Strip possible BBCode opening tags
, '#\\[/[^\\]]*\\]#' // Closing tags
, '#<[^>]+>#' // Strip possible HTML
, '#[\\n\\r\\t]#s' // Strip linebreaks and tabs
, '# +#' // Strip multiple spaces
)
, array
( ''
, ''
, ''
, ' '
, ' '
)
, $message
);

// Keywords must be latin letters, ciphers and underscores only. Need to be more than 3 characters.
// for latin characters linija koda u produzetku// $sKeyWord= ucwords( strtolower( preg_replace( '#[^a-zA-Z0-9_ ]+#', ' ', $sMetaDescription ) ) );
// Keywords must be letters, ciphers and underscores only (needs PHP 5.1.0 at least). Need to be more than 3 characters.
//for nonlatin characters 1 linija koda ispod
$sKeyWord= ucwords( utf8_strtolower( preg_replace( '#[^\\p{L}\\p{N}a-zA-Z0-9_ ]+#u', ' ', $sMetaDescription ) ) );
$aKeyWord= explode( ' ', $sKeyWord );
$aDistinct= array();
$aDistinct= array();
foreach( $aKeyWord as $v1 ) if( !isset( $aDistinct[$v1] )&& utf8_strlen( $v1 )> 3&& utf8_strlen( $v1 )<= 1000 ) $aDistinct[$v1]= 0; // Minimum 4 chars, maximum 1000
array_splice( $aDistinct, 20 ); // First 20 entries only
$sKeyWord= implode( ', ', array_keys( $aDistinct ) );

// Shorten description if it's longer than 150 characters
if( ( utf8_strlen( $sMetaDescription )> 150 )&& ( $iSpace= utf8_strpos( $sMetaDescription, ' ', 150 ) )!== FALSE ) $sMetaDescription= substr( $sMetaDescription, 0, $iSpace );
}
/*** ./META DESCRIPCION por angelosada.com ***/

En este caso tienes que buscar también:

extract($phpbb_dispatcher->trigger_event('core.viewtopic_modify_page_title', compact($vars)));

y justo debajo pegar:


/*** META DESCRIPCION por angelosada.com ***/
$template-> assign_vars
( array
( 'S_META_DESCRIPTION'=> $sMetaDescription
, 'S_META_KEYWORDS'=> $sKeyWord
)
);
/*** ./META DESCRIPCION por angelosada.com ***/

Finalmente subes estos archivos a tu servidor sustituyendo los antiguos y ya tendrías las descripciones para phpBB insertadas en tu foro.

¿Tienes algún problema?

Si has tenido algún problema durante el proceso puedes dejarme un comentario e intentaré ayudarte en lo que pueda.

Fuente: http://ic.ims.hr/