¿Cómo puedo enfocar el navegador al primer mensaje de un Tema?

Started by ArgentinaIRC, October 18, 2014, 06:39:06 AM

Previous topic - Next topic

ArgentinaIRC

Hola a todos!!

Bueno tengo una duda, me gustaría hacerle esta modificación a mi Foro.

Voy a explicarlo, cuando una persona crea un Tema, sea el tema de lo que sea y sea escrito por quién sea, ya sea un usuario normal, Moderador o Admin, el que sea, cuando esa persona entre en cualquier Foro y haga clic en el título del tema para ingresar en él, a mi me gustaría que el navegador se enfoque en el primer mensaje, es decir que seria extactamente igual a hacer clic en un Tema Nuevo que el usuario todavía no ha leído y que es el primer mensaje del tema y que ha pulsado sobre el botón Nuevo

Para las personas que saben del tema, voy a dejar un ejemplo:

Un usuario hace clic en el título de este Tema y es dirigido aquí (sea o no sea el primer mensaje de este tema de ejemplo):

http://www.argentinairc.net/Foro/index.php?topic=198.0

Pero a mi me gustaría que en vez de dirigirse siempre a ese enlace, que lo haga directamente aquí:

http://www.argentinairc.net/Foro/index.php?topic=198.msg745#msg745

ya que ahí siempre se verá el primer mensaje.

Igual me gustaría saber si esta modificación no me dará algún problema en el futuro, sean sinceros por favor.

Muchas gracias como siempre!

Suki

Depende, SMF crea distintos tipos de enalces para distintas ocasiones.

Si el tema que quiere ver el usuario tiene nuevos mensajes desde la ultima vez que vio ese tema, SMF va a crear un enlace especial para que el usuario sea dirigido hacia el primer mensaje nuevo que el usuario no ha visto aun.

Ese enlace es el que aparece en la pequeña imagen "nuevo" que aparece justo a un lado del tema.

si se das clic a el tema, no te va a mandar a ningun sitio solo a la primera página, si queires que la pantalla se posicione en el primer mensaje entonces agrega un ancla justo arriba del primer mensaje  y despues modifica los enlaces normales y agregales tu ancla:

enlace#mi_ancla

de esta manera el navegador se posicionará en el ancla que creaste, arriba del primer mensaje.

Si no pueeds determinar cual es el primer mensaje, solo agrega tu ancla justo antes de que se muestren los mensajes.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

ArgentinaIRC

Hola, muchas gracias por tu ayuda, pero por favor podrias decirme cuales son los archivos a modificar y en que linea?

Gracias como siempre!! :)

vicram10

Metiendo un poco mi cuchara jeje... seria en el Messageindex y display.template
En el message se visualiza la lista de temas y el display es cuando entras en ellas

ArgentinaIRC

Quote from: vicram10 on October 18, 2014, 01:17:27 PM
Metiendo un poco mi cuchara jeje... seria en el Messageindex y display.template
En el message se visualiza la lista de temas y el display es cuando entras en ellas

Hola, gracias por tu ayuda!

Pero no se hacerlo en el Display.template.php, en el otro archivo creo que si puedo, aunque habría que probar igual, pero por favor decime que es lo que debo agregar, trato de verlo, pero no lo entiendo, supongo que es aquí:

echo '
if (\'XMLHttpRequest\' in window)
{
var oQuickModify = new QuickModify({
sScriptUrl: smf_scripturl,
bShowModify: ', $settings['show_modify'] ? 'true' : 'false', ',
iTopicId: ', $context['current_topic'], ',
sTemplateBodyEdit: ', JavaScriptEscape('
<div id="quick_edit_body_container" style="width: 90%">
<div id="error_box" style="padding: 4px;" class="error"></div>
<textarea class="editor" name="message" rows="12" style="' . ($context['browser']['is_ie8'] ? 'width: 635px; max-width: 100%; min-width: 100%' : 'width: 100%') . '; margin-bottom: 10px;" tabindex="' . $context['tabindex']++ . '">%body%</textarea><br />
<input type="hidden" name="' . $context['session_var'] . '" value="' . $context['session_id'] . '" />
<input type="hidden" name="topic" value="' . $context['current_topic'] . '" />
<input type="hidden" name="msg" value="%msg_id%" />
<div class="righttext">
<input type="submit" name="post" value="' . $txt['save'] . '" tabindex="' . $context['tabindex']++ . '" onclick="return oQuickModify.modifySave(\'' . $context['session_id'] . '\', \'' . $context['session_var'] . '\');" accesskey="s" class="button_submit" />&nbsp;&nbsp;' . ($context['show_spellchecking'] ? '<input type="button" value="' . $txt['spell_check'] . '" tabindex="' . $context['tabindex']++ . '" onclick="spellCheck(\'quickModForm\', \'message\');" class="button_submit" />&nbsp;&nbsp;' : '') . '<input type="submit" name="cancel" value="' . $txt['modify_cancel'] . '" tabindex="' . $context['tabindex']++ . '" onclick="return oQuickModify.modifyCancel();" class="button_submit" />
</div>
</div>'), ',
sTemplateSubjectEdit: ', JavaScriptEscape('<input type="text" style="width: 90%;" name="subject" value="%subject%" size="80" maxlength="80" tabindex="' . $context['tabindex']++ . '" class="input_text" />'), ',
sTemplateBodyNormal: ', JavaScriptEscape('%body%'), ',
sTemplateSubjectNormal: ', JavaScriptEscape('<a href="' . $scripturl . '?topic=' . $context['current_topic'] . '.msg%msg_id%#msg%msg_id%" rel="nofollow">%subject%</a>'), ',
sTemplateTopSubject: ', JavaScriptEscape($txt['topic'] . ': %subject% &nbsp;(' . $txt['read'] . ' ' . $context['num_views'] . ' ' . $txt['times'] . ')'), ',
sErrorBorderStyle: ', JavaScriptEscape('1px solid red'), '
});


En el Display.template.php reemplacé esta línea:

sTemplateSubjectNormal: ', JavaScriptEscape('<a href="' . $scripturl . '?topic=' . $context['current_topic'] . '.msg%msg_id%#msg%msg_id%" rel="nofollow">%subject%</a>'), ',

por esta:

sTemplateSubjectNormal: ', JavaScriptEscape('<a href="' . $scripturl . '?topic=' . $context['current_topic'] . '.msg%msg_id%#msg%msg_id%#pmsj" rel="nofollow">%subject%</a>'), ',

y no funciona.

Muchas gracias!!


Advertisement: