Retroceder   Foros del Web > Diseño de Sitios web > Aplicaciones pre-fabricadas

Respuesta
 
Herramientas Desplegado
Antiguo 23-jun-2006, 18:33   #1 (permalink)
Colaborador
Defero.tk llegará a ser famoso muy prontoDefero.tk llegará a ser famoso muy prontoDefero.tk llegará a ser famoso muy pronto
 
Avatar de Defero.tk
 
Fecha de Ingreso: julio-2004
Ubicación: Utopía
Mensajes: 3.750
Pregunta Glosario para la web usando phpBB: no acierto con el bbcode

En mi web tengo un foro phpBB, y se me ha ocurrido que podría utilizar el propio foro para montar una especie de glosario terminológico, ya que hay términos y conceptos que se repiten a menudo en diversos documentos de la web, y en vez de explicarlos cada vez, tengo intención de explicarlo una vez en el glosario y luego enlazar a esa explicación.

La mecánica es la siguiente: habilitaré un subforo específico para el glosario (concretamente el subforo número 16), y en éste abriré un tema por cada término o expresión. Para mantener un orden y evitar palabras repetidas en ese subforo sólo yo podré abrir nuevos temas (y probablemente algún usuario de confianza), y luego cualquiera podrá responder en ese tema para aportar lo que crea oportuno a la definición.

En este subforo las definiciones irán surgiendo de manera caótica según vaya surgiendo la necesidad de definir un término u otro, sin ningún orden concreto, así que habilitaré una sección en la web que, extrayendo la información del foro, mantendrá ordenado el glosario. Para ello extraerá los títulos de los temas de ese subforo específico, los ordenará alfabéticamente, y mostrará la definición (o al menos una parte de la misma).

Me he puesto manos a la obra con mis limitados conocimientos, y de momento éste es el resultado basándome en esto:

Código PHP:
<ul>
<? 
$directorio 
"./forum"//Carpeta donde esta situado el foro. 
include("$directorio/config.php"); 

$conexion mysql_connect($dbhost,$dbuser,$dbpasswd); 
mysql_select_db($dbname,$conexion); 
$consulta "select * from ".$table_prefix"topics WHERE forum_id='16' order by topic_title" 
$resultado mysql_query($consulta); 
$i 0
while (
$rows mysql_fetch_array($resultado)) { 
if (
$i <= $mostrar) { 

$consulta4 "select * from ".$table_prefix."posts where post_id='$rows[topic_first_post_id]'"
$resultado4 mysql_query($consulta4); 
$datosx mysql_fetch_array($resultado4); 

$consulta5 "select * from ".$table_prefix."posts_text where post_id='$rows[topic_first_post_id]'"
$resultado5 mysql_query($consulta5); 
$datosy mysql_fetch_array($resultado5); 

// Para quitar el bbcode
{
$datosy[post_text] = preg_replace("(\[.+?\])is",'',$datosy[post_text]); 
}

// Para acortar el texto de la definición
// { 
// $datosy[post_text] = substr($datosy[post_text],0,250)."..."; 
// } 

echo "<li class=\"mini\"><a href=\"$directorio/viewtopic.php?t=$rows[topic_id]\" name=\"$rows[topic_title]\" title=\"Pincha aquí para comentar la definición del término $rows[topic_title] o leer los comentarios de otros usuarios\">$rows[topic_title]</a>. $datosy[post_text]</li>";
$i++;



 
mysql_free_result($resultado); 
mysql_close($conexion); 
?>
</ul>
Esto funciona relativamente bien, me muestra las palabras ordenadas alfabéticamente, y sus definiciones. El problema es que como no me transforma el BBCODE en HTML, he tenido que filtrar el BBCODE, y me gustaría poder conservarlo, ya que el uso de negritas y demás elementos son muy útiles.

He estado buscando información al respecto, y lo único que he encontrado han sido tutoriales para crear mi propio BBCODE, cosa que no me interesa, ya que me gustaría usar el sistema de BBCODE del propio foro PHPBB para evitar inconsistencias. Al buscar en este foro he encontrado una duda similar de otro usuario, pero nadie le ha contestado aún, y no tengo ni idea de dónde sale todo ese código que ha puesto en su mensaje.

Si alguien pudiera darme una pista me sería de mucha ayuda.
__________________
a Defero le encanta andar GIMPeando y enredando con softweb libre
Defero.tk está desconectado   Responder Citando
Antiguo 26-jun-2006, 08:38   #2 (permalink)
Colaborador
Defero.tk llegará a ser famoso muy prontoDefero.tk llegará a ser famoso muy prontoDefero.tk llegará a ser famoso muy pronto
 
Avatar de Defero.tk
 
Fecha de Ingreso: julio-2004
Ubicación: Utopía
Mensajes: 3.750
Voy avanzando, basándome en la duda planteada en este tema he encontrado el modo de mantener el BBCODE, aunque aún no es una solución completa, y seguro que fallará en más de una ocasión:

Código PHP:
<ul>
<? 
$directorio 
"./forum"//Carpeta donde esta situado el foro. 
include("$directorio/config.php"); 
$conexion mysql_connect($dbhost,$dbuser,$dbpasswd); 
mysql_select_db($dbname,$conexion); 
$consulta "select * from ".$table_prefix"topics WHERE forum_id='16' && topic_id!='648' order by topic_title" 
$resultado mysql_query($consulta); 
$i 0
while (
$rows mysql_fetch_array($resultado)) { 

$consulta4 "select * from ".$table_prefix."posts where post_id='$rows[topic_first_post_id]'"
$resultado4 mysql_query($consulta4); 
$datosx mysql_fetch_array($resultado4); 

$consulta5 "select * from ".$table_prefix."posts_text where post_id='$rows[topic_first_post_id]'"
$resultado5 mysql_query($consulta5); 
$datosy mysql_fetch_array($resultado5); 

//// Para reducir la longitud del título
// if (strlen($datost[topic_title]) > $caracteres) { 
// $datost[topic_title] = substr($datost[topic_title],0,20)."..."; 
// } 

$datosy[post_text] = str_replace("[b:".$datosy[bbcode_uid]."]","<b>"$datosy[post_text]);
$datosy[post_text] = str_replace("[/b:".$datosy[bbcode_uid]."]","</b>"$datosy[post_text]);
$datosy[post_text] = str_replace("[i:".$datosy[bbcode_uid]."]","<i>"$datosy[post_text]);
$datosy[post_text] = str_replace("[/i:".$datosy[bbcode_uid]."]","</i>"$datosy[post_text]);
$datosy[post_text] = str_replace("[u:".$datosy[bbcode_uid]."]","<u>"$datosy[post_text]);
$datosy[post_text] = str_replace("[/u:".$datosy[bbcode_uid]."]","</u>"$datosy[post_text]);
$datosy[post_text] = str_replace("[img:".$datosy[bbcode_uid]."]","<img src="$datosy[post_text]);
$datosy[post_text] = str_replace("[/img:".$datosy[bbcode_uid]."]",">"$datosy[post_text]);
$datosy[post_text] = preg_replace("[\[url=([a-zA-Z0-9\-\_\.\/\:]*)\]]is",'<a href="$1">'$datosy[post_text]);
$datosy[post_text] = str_replace("[/url]","</a>"$datosy[post_text]);

//// Para quitar el bbcode
 
{
 
$datosy[post_text] = preg_replace("(\[.+?\])is",'',$datosy[post_text]); 
 }

//// Para reducir la longitud del texto del mensaje.
// { 
// $datosy[post_text] = substr($datosy[post_text],0,150)."..."; 
// } 

echo "<li class=\"mini\"><a href=\"$directorio/viewtopic.php?t=$rows[topic_id]\" name=\"$rows[topic_title]\" title=\"Pincha aquí para comentar la definición del término &uml;$rows[topic_title]&uml; o leer los comentarios de otros usuarios\">$rows[topic_title]</a>. $datosy[post_text]</li>";
$i++;


 
mysql_free_result($resultado); 
mysql_close($conexion); 
?>
</ul>
Tengo dudas con la eficacia de esta expresión regular para abarcar todas las URLs posibles:

"[\[url=([a-zA-Z0-9\-\_\.\/\:]*)\]]is"

Por lo demás, de momento funciona bien.
__________________
a Defero le encanta andar GIMPeando y enredando con softweb libre
Defero.tk está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 03:32.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93