[recomendacion] dentro de integrate_query_message para SMF 2.1

Started by Dhayzon, August 27, 2020, 11:51:22 PM

Previous topic - Next topic

Dhayzon

me encontré con un caso de uso dentro de este código


$msg_parameters = array(
'message_list' => $messages,
'new_from' => $context['topicinfo']['new_from'],
);
$msg_selects = array();
$msg_tables = array();
call_integration_hook('integrate_query_message', array(&$msg_selects, &$msg_tables, &$msg_parameters));

// What?  It's not like it *couldn't* be only guests in this topic...
loadMemberData($posters);
$messages_request = $smcFunc['db_query']('', '
SELECT
id_msg, icon, subject, poster_time, poster_ip, id_member, modified_time, modified_name, modified_reason, body,
smileys_enabled, poster_name, poster_email, approved, likes,
id_msg_modified < {int:new_from} AS is_read
' . (!empty($msg_selects) ? (', ' . implode(', ', $msg_selects)) : '') . '
FROM {db_prefix}messages
' . (!empty($msg_tables) ? implode("\n\t", $msg_tables) : '') . '
WHERE id_msg IN ({array_int:message_list})
ORDER BY id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'),
$msg_parameters
);


el problema es que no me deja utilizar un ORDER personalizado

como esta : ORDER BY id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'),


como deberían agregar un parámetro extra para un orden personalizado  muy importante

ejemplo queria hacer esto

ORDER BY FIELD(id_msg, {array_int:message_list})',

y no  puedo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

xd


Dhayzon

como comentario adicional puedo agregar que durante el desarro de mods se puede manipular el orden de los mensajes de a cuerdo  al numero de likes por ejemplo!!! o bien por likes asc o likes desc o ordenarlo segun claves de array oshhh era la unico que me faltaba para completa mi mod xd


pero a ver si algún día  encuentro una solución

vicram10

que metemerias en esto "{array_int:message_list}"

modifica tu select para ver como quedaría como "datos" de ejemplo

Dhayzon

estoy invirtiendo la forma en la que smf muestra los mensajes con solamente hooks

normalemente si activo la funcion mostrar nuevos primero, me manda el post principal a la ultima pagina...

como en WHERE id_msg IN ({array_int:message_list})  esta la lista de mensajes

al usar  un ORDER BY id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'), me limita a que esos mensajes se muestren en orden del id_msg

sin embargo si  uso

ORDER BY FIELD(id_msg, {array_int:message_list})',


{array_int:message_list} es el mismo array que esta en el WHERE 

me mostrara en el orden de los indices del array .. lo que significa que puedo hacer que los mensajes se muestren en el orden que yo desee

solo manipulando los indices del  {array_int:message_list}


tuve que modificar el display.php  de todos modos ... funciona .... ya  puedo  entrar a un post y ver los comentarios como si fuera youtube los primeros arriba  y con scroll infinito como todas las plataformas ,, para que se carguen todos los comentarios  sin andar dando clinck en siguiente

vicram10

ya, si sería de esa forma como mencionas para poder lograr el cometido.

Danielㅤ

Hola, lo que dice dayzon tiene razón... porque lógicamente si un usuario/visitante pasa de un tema a otro, por lógica se debería ver la primer página y el contenido desde el principio para que el usuario pueda leerlo desde arriba (el comienzo) hasta abajo, qué raro que en tantos años nunca se haya comentado sobre esto o al menos yo no recuerdo que algún usuario haya pedido ayuda sobre éste mismo problema... es más incluso hasta sigue pasando en SMF 2.1

Puede ser que en tantos años de SMF nadie se haya dado cuenta de ésto? o tal vez nadie lo comentó o pidió ayuda porque no lo vió importante o lo vió con poco o sin sentido, pero realmente tiene sentido lo que pide dayzon.

Sin ir más lejos Dayzon deberías crear un tutorial al menos para SMF 2.1 (que es la versión que usas) explicando cómo solucionar este problema/inconveniente, creo que además de ser de ayuda, muchos te lo agradecerían.
Gracias de antemano..

Marco tu tema como solucionado! :)


Saludos

Advertisement: