Página 1 de 1

Listado de foros suscritos

Publicado: 04 May 2010, 01:54
por barje
Buenas, para mi foro necesito crear una página similar al index pero en la que sólo se muestren los foros a los que los usuarios se han suscrito. Algo parecido a lo que se vería si en el panel de control de usuario se va a vista general / organizar suscripciones, pero que se muestre como los foros del index. ¿Hay algún mod que haga esto, porque no lo encuentro? Yo lo he intentado por mi cuenta pero estoy atascado.
Lo primero que he hecho es crear un enlace en el index hacia una página que se llama /subscribed.php. Esa página es una copia de /index.php pero cambiando esto:

Código: Seleccionar todo

$template->set_filenames(array(
	'body' => 'index_body.html')
);
por esto:

Código: Seleccionar todo

$template->set_filenames(array(
	'body' => 'subscribed.html')
);
lo que hace que busque esa página, que llama mediante include a forumlist_subscribed_body.html, que es una copia modificada de forumlist_body.html.
He intentado guiarme por lo que aparece en ucp_main_subscribed.html, pero no doy con la tecla. Allí se usa <!-- IF S_FORUM_NOTIFY --> como condición para mostrar los foros a los que se está suscrito, pero en mi caso no funciona. ¿Alguna idea?

Un saludo.

Re: Listado de foros suscritos

Publicado: 06 May 2010, 03:09
por barje
He añadido este código a funtions.php (lo he copiado de ucp_main.php)

Código: Seleccionar todo

	function subscribed()
	{	
		global $user, $db, $auth;
		
		$sql_array = array(
		'SELECT'	=> 'f.*',
	
		'FROM'		=> array(
			FORUMS_WATCH_TABLE	=> 'fw',
			FORUMS_TABLE		=> 'f'
		),
	
		'WHERE'		=> 'fw.user_id = ' . $user->data['user_id'] . '
			AND f.forum_id = fw.forum_id
			AND ' . $db->sql_in_set('f.forum_id', $forbidden_forums, true, true),
	
		'ORDER_BY'	=> 'left_id'
		);
		$sql = $db->sql_build_query('SELECT', $sql_array);
		$result = $db->sql_query($sql);
		
		while($row = $db->sql_fetchrow($result))
		{
			if ($auth->acl_get('f_read', $row['forum_id']))
			{
				return true;
			}
		}
		$db->sql_freeresult($result);
	}

	$s_subscribed = subscribed();
y

Código: Seleccionar todo

		'S_SUBSCRIBED'		=> $s_subscribed,
Ahora usando <!-- IF S_SUBSCRIBED --> en forumlist_subscribed_body.html veo comportamientos distintos dependiendo de si los usuarios tienen o no foros suscritos. El problema es que a los que tienen algún foro suscrito se les muestran todos. Eso quiere decir que la consulta a la base de datos está mal hecha, pero me he vuelto a atascar aquí. ¿Alguna idea de cómo arreglar esto?

Un saludo.

Re: Listado de foros suscritos

Publicado: 10 May 2010, 01:47
por barje
He comprobado que la consulta a la base de datos es correcta:

Código: Seleccionar todo

function subscribed()
	{	
		global $user, $db, $auth;
		$forbidden_forums = $auth->acl_getf('!f_read', true);
		$forbidden_forums = array_unique(array_keys($forbidden_forums));
		$sql_array = array(
		'SELECT'	=> 'f.*',
		'FROM'		=> array(
			FORUMS_WATCH_TABLE	=> 'fw',
			FORUMS_TABLE		=> 'f'
		),
		'WHERE'		=> 'fw.user_id = ' . $user->data['user_id'] . '
			AND f.forum_id = fw.forum_id
			AND ' . $db->sql_in_set('f.forum_id', $forbidden_forums, true, true),
		'ORDER BY'	=> 'left_id'
		);
		$sql = $db->sql_build_query('SELECT', $sql_array);
		$result = $db->sql_query($sql);
		while($row = $db->sql_fetchrow($result))
		{
			$res=$row['forum_id'];
		}
		$db->sql_freeresult($result);
	}
	$s_subscribed = subscribed();
$row ofrece el contenido de todos los campos de los foros suscritos y $res ofrece el forum_id de esos foros.

El problema es que no sé como hacer para que en el template se muestren los datos de únicamente esos foros. En el template tengo esto:

Código: Seleccionar todo

    	<table class="tablebg" cellspacing="0" width="100%">
        	<tr>
                <td class="cat" align="left" height="24"><h4>{L_SUBSCRIBED_FORUMS}</h4></td>
                <!-- IF S_SUBSCRIBED -->
            	<td class="cat" width="14" height="24"><a href="#" onclick="layerTest('expand{forumrow.FORUM_ID}')"><img src="{T_THEME_PATH}/images/expand.gif" width="17" height="16" alt="" /></a></td>
                <!-- ENDIF -->
            </tr>
            <tr>
            <!-- IF S_SUBSCRIBED -->
                <td colspan="2">
                    <div id="expand{forumrow.FORUM_ID}">
                    <table class="tablebg" cellspacing="0" width="100%">
                        <tr>
                            <td class="row3h" colspan="2">&nbsp;{L_FORUM}&nbsp;</td>
                            <td class="row3h" align="center" width="50">&nbsp;{L_TOPICS}&nbsp;</td>
                            <td class="row3h" align="center" width="50">&nbsp;{L_POSTS}&nbsp;</td>
                            <td class="row3h" align="center" width="175">&nbsp;{L_LAST_POST}&nbsp;</td>
                        </tr>
                        <!-- BEGIN forumrow -->
                        <!-- IF not forumrow.S_IS_CAT -->
                        <!-- IF forumrow.S_IS_LINK -->
                            <tr>
                                <td class="forumrow" width="31" align="center">{forumrow.FORUM_FOLDER_IMG}</td>
                                <td class="row1h clickable" onclick="window.location.href='{forumrow.U_VIEWFORUM}'">
                                    <!-- IF forumrow.FORUM_IMAGE -->
                                        <table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td align="middle" style="padding-{S_CONTENT_FLOW_END}: 5px;">{forumrow.FORUM_IMAGE}</td><td width="100%" valign="middle">
                                    <!-- ENDIF -->
                                    <a class="forumlink" href="{forumrow.U_VIEWFORUM}">{forumrow.FORUM_NAME}</a>
                                    <p class="forumdesc">{forumrow.FORUM_DESC}</p>
                                    <!-- IF forumrow.FORUM_IMAGE --></td></tr></table><!-- ENDIF -->
                                </td>
                                <!-- IF forumrow.CLICKS -->
                                    <td class="forumrow" colspan="3" align="center"><span class="genmed">{L_REDIRECTS}: {forumrow.CLICKS}</span></td>
                                <!-- ELSE -->
                                    <td class="forumrow" colspan="3" align="center">&nbsp;</td>
                                <!-- ENDIF -->
                            </tr>
                        <!-- ELSE -->
                            <tr>
                                <td class="forumrow" width="31" align="center">{forumrow.FORUM_FOLDER_IMG}</td>
                                <td class="row1h clickable" width="70%" onclick="window.location.href='{forumrow.U_VIEWFORUM}'">
                                    <!-- IF forumrow.FORUM_IMAGE -->
                                        <table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td align="middle" style="padding-{S_CONTENT_FLOW_END}: 5px;">{forumrow.FORUM_IMAGE}</td><td width="100%" valign="middle">
                                    <!-- ENDIF -->
                                    <a class="forumlink<!-- IF forumrow.S_UNREAD_FORUM --> link-new<!-- ENDIF -->" href="{forumrow.U_VIEWFORUM}">{forumrow.FORUM_NAME}</a>
                                    <p class="forumdesc">{forumrow.FORUM_DESC}</p>
                                    <!-- IF forumrow.MODERATORS -->
                                        <p class="gensmall"><strong>{forumrow.L_MODERATOR_STR}:</strong> {forumrow.MODERATORS}</p>
                                    <!-- ENDIF -->
                                    <!-- IF forumrow.SUBFORUMS and forumrow.S_LIST_SUBFORUMS -->
                                        <p class="gensmall"><strong>{forumrow.L_SUBFORUM_STR}</strong> {forumrow.SUBFORUMS}</p>
                                    <!-- ENDIF -->
                                    <!-- IF forumrow.FORUM_IMAGE --></td></tr></table><!-- ENDIF -->
                                </td>
                                <td class="forumrow" width="5%" align="center"><p class="topicdetails">{forumrow.TOPICS}</p></td>
                                <td class="forumrow" width="5%" align="center"><p class="topicdetails">{forumrow.POSTS}</p></td>
                                <td class="forumrow" width="20%" align="center" nowrap="nowrap">
                                    <!-- IF forumrow.LAST_POST_TIME -->
                                        <p class="topicdetails"><!-- IF forumrow.U_UNAPPROVED_TOPICS --><a href="{forumrow.U_UNAPPROVED_TOPICS}">{UNAPPROVED_IMG}</a>&nbsp;<!-- ENDIF -->{forumrow.LAST_POST_TIME}</p>
                                        <p class="topicdetails">{forumrow.LAST_POSTER_FULL}
                                            <!-- IF not S_IS_BOT --><a href="{forumrow.U_LAST_POST}">{LAST_POST_IMG}</a><!-- ENDIF -->
                                        </p>
                                    <!-- ELSE -->
                                        <p class="topicdetails">{L_NO_POSTS}</p>
                                    <!-- ENDIF -->
                                </td>
                            </tr>
                        <!-- ENDIF -->
                        <!-- ENDIF -->
                        <!-- END forumrow -->
                    </table>
                    </div>
                </td>
            <!-- ELSE -->
                <td class="row1" colspan="5" align="center" style="padding: 25px 5px;"><p class="gensmall">{L_NO_SUBSCRIBED_FORUMS}</p></td>
            <!-- ENDIF -->
            </tr>
		</table>
El problema es que no sé como hacer para que <!-- IF S_SUBSCRIBED --> indique qué foros son los que se deben mostrar. Tal y como está escrita la función no hay ningún return true por lo que en realidad es lógico que no se ejecute <!-- IF S_SUBSCRIBED -->. Mis conocimientos son muy escasos y no sé como hacer para que la función le diga al template qué foros mostrar de acuerdo a los forum_id seleccionados.
¿Alguna ayuda, por favor?

Re: Listado de foros suscritos

Publicado: 10 May 2010, 02:33
por Makoto
¿? en el ucp hay una lista opcion para ver las suscripciones

Re: Listado de foros suscritos

Publicado: 10 May 2010, 13:02
por barje
Makoto escribió:¿? en el ucp hay una lista opcion para ver las suscripciones
Ya, pero yo lo que quiero es hacer una página como el index en la que sólo se muestren los foros suscritos. Imagina que tienes 40 foros dedicados a modalidades deportivas y los usuarios sólo quieren ver las de su deporte favorito. Con este sistema consigues despejar la página principal de modo que no esté demasiado recargada.

Un saludo.

Re: Listado de foros suscritos

Publicado: 28 Ene 2016, 23:03
por scammarano
HOLA LOGRASTE HACER LO QUE BUSCABAS?

Re: Listado de foros suscritos

Publicado: 31 Ene 2016, 17:27
por angelismo
Abre un tema nuevo con tu duda, este tema tiene casi 6 años