Y no sale. Te pongas como te pongas. No ves manera. Mira tú por donde, preparando el "enlace permanente" de esta misma entrada me decido por "te-empenas". Y luego, volviendo sobre el mismo asunto, pareciera que se hace la luz, porque, con mucha menos dificultad de la que esperabas, consigues lo que quieres.
Acaba de pasarme esto en SMC y su "manejador" de enlaces. Si me permites lo contaré de forma breve, espero. Resulta que cada enlace en SMC puede pertenecer a una o más categorías de enlaces, valga la redundancia, porque hay también categorías de "entradas".
Bueno. Pues, resulta que la consulta SQL que estoy realizando para "traer" de la base de datos los enlaces para ser mostrados en el "manejador" de enlaces, "repite" dichos enlaces, es decir, si un enlace pertenece a más de una categoría, me trae dos veces los datos del enlace.
Esto es algo que tal vez pudiera solucionarse de algún modo, afinando la consulta SQL, pero, en fin, hasta solucionar esto en la consulta SQL, el caso es que el "manejador" de enlaces estaba mostrando el mismo enlace repetido tantas veces como categorías a las que pertenecía.
Y, lo que verdaderamente me crispaba, era que, si decidías borrar un determinado enlace (eligiéndolo de la tabla del "manejador" de enlaces), era lógico pensar que lo que estabas borrando en realidad era el enlace elegido, y ningún otro, es decir, que era como si el manejador te dijese: "Puedes borrar este enlace de esta categoría, pero, el enlace permanecerá en el resto de categorías, por eso te los muestro aquí".
Claro. El error era mostrarlos... porque, al tratarse de un mismo enlace, con un mismo identificador, si borrabas "un enlace de una categoría", el mismo desaparecía de la tabla del "manejador de enlaces", como no podía ser de otro modo. Esto acaso confundiría más todavía, por lo menos la primera vez... y las siguientes daría un poco de miedo y te pararía sin saber qué hacer, a ver si metes la pata.
Me plantee el asunto de varias maneras. Primero me dije, bueno, trae sólo los datos de los enlaces, no de sus categorías, "itera" sobre los enlaces y ves trayendo las categorías de cada uno de ellos. Pero, esto tenía un problema "grave", y es que incrementaba las consultas a la base de datos de manera atroz.
El "manejador" de enlaces, como el resto de "manejadores de objetos" I(entradas, páginas, enlaces, categorías, etiquetas, comentarios) en SMC, ahora mismo permiten especificar cuántos "objetos" quien mostrarse por página, hasta un máximo de 100. Es decir, que por cada enlace mostrado iba a haber una consulta a la base de datos para traer sus categorías... y eso me paró en seco. No podía ser.
Otra posible solución podía pasar entonces por jugar con los registros de los enlaces una vez traídos de la base de datos. Y a ello me puse. Y de ahí el título de esta entrada... porque, le di vueltas y más vueltas, pero, debía estar cansado o algo, porque, no daba pie con bola y, al cabo, el "manejador de enlaces" se quedó como estaba al principio.
Pero hete aquí que hoy me he vuelto a poner con el asunto. Y, tardando más o menos, el caso es que al cabo he conseguido lo que necesitaba. Y, al final hasta no parecía tan complicado... y no lo digo ahora, a toro pasado, sino que, pareciera que he sido capaz de seguir "la lógica" de lo que me proponía con mucha menos dificultad que en los otros intentos.
Una de las cosas que estoy procurando mirar mucho es en la cantidad de consultas que realiza SMC para "responder" a las peticiones que se hagan. De la cantidad, y de la calidad, entendiendo esta en la medida de mis posibilidades, que no son muchas, y que llegan, por ejemplo, a limitar el número de registros, a no traer datos innecesarios, y algún etcétera más.
El "manejador" de enlaces necesita ahora 5 consultas a la base de datos. Sean los enlaces que sean los que tenga que traer. Ahora, aunque me sigue preocupando que tal vez pudiera afinarse la consulta SQL para "hacerlo todo desde ahí", me preocupa bastante menos, porque, los datos de un enlace no son demasiado pesados, y, como he dicho, el número de registros a traer es de 100 como máximo.
Seguiría hablando sobre las consultas SQL en SMC y, sobre todo, con las consultas que se realizan en el apartado de administración. Diré sólo que resulta el apartado que más consultas a la base de datos necesita, no en todo caso, sino, por ejemplo, cuando se trata de borrar registros.
¿Por qué? Pues, porque borrar una entrada, por ejemplo, implica borrar sus comentarios (otra consulta), borrar las relaciones de la entrada con sus términos (etiquetas, categorías, etc.) (otra consulta), descontar algún que otro marcador en los términos utilizados (otra consulta), etc.
Sin embargo, y aunque procuro afinar lo que puedo, y hasta ahora SMC no se muestra en absoluto pesado, una cosa sale a mi favor también, y es que el apartado de administración es el menos utilizado del sitio. No está uno borrando entradas a cada momento... más bien son las consultas necesarias para "presentar" el sitio las que me preocupan todavía más, puesto que, estas sí, siempre serán más "solicitadas".
He dicho que seguiría hablando... y no sé porqué lo he dicho, porque, claramente, he hablado. Bueno, no sé si muy claramente, pero, he hablado, ¿o no?