Mi duda es esta, yo en mi portal tengo una bloque que muestra los ultimos temas de un foro en especifico, para mostrarlo uso el siguiente codigo:
Código: Seleccionar todo
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './phpBB3/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');
/* create_where_clauses( int[] gen_id, String type )
* This function outputs an SQL WHERE statement for use when grabbing
* posts and topics */
function create_where_clauses($gen_id, $type)
{
global $db, $auth;
$size_gen_id = sizeof($gen_id);
switch($type)
{
case 'forum':
$type = 'forum_id';
break;
case 'topic':
$type = 'topic_id';
break;
default:
trigger_error('No type defined');
}
// Set $out_where to nothing, this will be used of the gen_id
// size is empty, in other words "grab from anywhere" with
// no restrictions
$out_where = '';
if ($size_gen_id > 0)
{
// Get a list of all forums the user has permissions to read
$auth_f_read = array_keys($auth->acl_getf('f_read', true));
if ($type == 'topic_id')
{
$sql = 'SELECT topic_id FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('topic_id', $gen_id) . '
AND ' . $db->sql_in_set('forum_id', $auth_f_read);
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
// Create an array with all acceptable topic ids
$topic_id_list[] = $row['topic_id'];
}
unset($gen_id);
$gen_id = $topic_id_list;
$size_gen_id = sizeof($gen_id);
}
$j = 0;
for ($i = 0; $i < $size_gen_id; $i++)
{
$id_check = (int) $gen_id[$i]; // If the type is topic, all checks have been made and the query can start to be built if( $type == 'topic_id' ) { $out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' '; } // If the type is forum, do the check to make sure the user has read permissions else if( $type == 'forum_id' && $auth->acl_get('f_read', $id_check) )
{
$out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
}
$j++;
}
}
if ($out_where == '' && $size_gen_id > 0)
{
trigger_error('A list of topics/forums has not been created');
}
return $out_where;
}
// Número de últimos posts a mostrar:
$search_limit = 5;
// ID del foro específico. Si deseas más de un foro, separar por "comas".
$forum_id = array(3);
$forum_id_where = create_where_clauses($forum_id, 'forum');
$topics = 'SELECT * FROM ' . TOPICS_TABLE . '
' . $forum_id_where . '
AND topic_status <> ' . ITEM_MOVED . '
AND topic_approved = 1
ORDER BY topic_id DESC';
$topics_result = $db->sql_query_limit($topics, $search_limit);
while ($topics_row = $db->sql_fetchrow($topics_result))
{
$topic_title = $topics_row['topic_title'];
$topic_title = censor_text($topic_title);
$topic_author = get_username_string('full', $topics_row['topic_poster'], $topics_row['topic_first_poster_name'], $topics_row['topic_first_poster_colour']);
$topic_date = $user->format_date($topics_row['topic_time']);
$topic_last_post = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p=" . $topics_row['topic_last_post_id'] . "#" . $topics_row['topic_last_post_id']);
$topic_last_author = get_username_string('full', $topics_row['topic_last_poster_id'], $topics_row['topic_last_poster_name'], $topics_row['topic_last_poster_colour']);
$topic_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=" . $topics_row['topic_id']);
echo "<b>!!</b> <a href=\"$topic_link\">$topic_title</a> por $topic_author - $topic_date<br>";
}
?>
lo que necesito ahora es que al momento de mostrarse el titulo de los ultimos temas, los cuales estaran linkeados con la url del tema, estos se muestren de manera reducida y que al final tengan "..." (puntos suspensivos).
por si no me explique bien, dejo un ejemplo:
Se confirma nueva película del director de Looper (Asi se muestra actualmente)
Se confirma nueva película... (Asi quiero que se muestre)
deseo que el link se muestre recortado por asi decirlo pero que aun asi redirija hacia el mismo lugar..
buscando y buscando encontre esto:
Código: Seleccionar todo
function recortar_texto($texto, $limite=100){
$texto = trim($texto);
$texto = strip_tags($texto);
$tamano = strlen($texto);
$resultado = '';
if($tamano <= $limite){
return $texto;
}else{
$texto = substr($texto, 0, $limite);
$palabras = explode(' ', $texto);
$resultado = implode(' ', $palabras);
$resultado .= '...';
}
return $resultado;
}
$cadena = 'La Región de León, Región Leonesa o Reino de León, es una región histórica española definida tras la división territorial de España en 1833';
//Modo de uso:
echo recortar_texto($cadena, 50); // Imprimirá: La Región de León, Región Leonesa o Reino de León,...
Espero alguien sepa como ayudarme o por lo menos decirme si estos se puede o no se puede hacer.. gracias por haberlo leido, espero sus respuestas...