Creación dun bloque de "novas" asociado a un termo dunha categoría


Nalgunhas webs dos centros do proxecto Webs Dinámicas, pódese ver un bloque cun "Taboleiro de novas" no que se listan os contidos dunha determinada sección da páxina (en concreto os contidos dun termo asociado a unha categoría).
A vantaxe fundamental deste método é que é válido tanto para poñer nun bloque como nun contido. Isto pode ser empregado para crear un contido "pegañoso" nunha categoría o que permitiría crear no comezo dun blog ou dunha sección un listado con tódolos títulos publicados (ver exemplos na web http://centros.edu.xunta.es/ceippedroantoniocervino)
IMPORTANTE! : O código e o procedemento que incluímos a continuación únicamente é válido para as webs dos centros que están en "multisite". É dicir, aquelas webs que teñen un enderezo URL similar ao seguinte:
"http://www.edu.xunta.gal/centros/nomedocentro"

Procedemento:

1.- Imos ao menú "Administrar - Construcción da páxina - Bloques"
2.- Na parte superior desta pantalla, pulsamos a pestana "Engadir bloque"
3.- No campo "Descrición do bloque" escribimos unha frase significativa, por exemplo "Bloque de novas asociado a un termo".
4.- Pulsamos sobre o enlace "Formato de entrada", na parte inferior da pantalla, e seleccionamos a opción "PHP Code".
5.- Na parte inferior do campo "Corpo do bloque" pulsamos o enlace "Disable rich-text"
6.- Dentro do campo "Corpo do bloque" introducimos o seguinte código:

<?php
$result = mysql_query("select * from dr520_term_node where tid=51 order by nid desc limit 0,20 ");
while($datos = mysql_fetch_array($result))
{
$nid=$datos['nid'];

$result2= mysql_query("select * from dr520_node where nid=$nid");
while($datos2 = mysql_fetch_array($result2))
{
$title=$datos2['title'];
$changed=$datos2['changed'];
$dia=date("d", $changed);
$mes=date("m", $changed);
$ano=date("y", $changed);
echo "<font face=arial style=\"font-size:10pt\">
<b>$dia/$mes/$ano:</b></font><a href=?q=node/$nid
></b><font style=\"font-size:10pt\"> $title
</font></a><br>";
;}
;}
?>

7.- Pulsamos o botón "Garda-lo bloque"
8.- Este bloque aparecerá inicialmente na sección de bloques desactivados, polo que a continuación procederemos a seleccionar unha "rexión" para mostrar o bloque (por exemplo "barra lateral dereita") e un "peso" como criterio de ordenación vertical.
9.- Pulsamos o botón "Garda-los bloques"

Finalmente, se queremos que o bloque mostre un título (igual que os demáis bloques) deberemos volver a "Administrar - Construcción da páxina - Bloques", pulsaremos sobre a opción "configurar" do propio bloque e introducimos un título no campo "Título do bloque"
Para rematar, volveremos a pulsar o botón "Garda-lo bloque"



Explicación O número que aparece en cor vermella (no exemplo: 51) correspóndese co identificador do termo da categoría.
Podemos averiguar o identificador dun termo situando o rato sobre él e observando o enderezo URL que se mostra na barra de estado do navegador, ou ben facendo clic sobre él e observando o enderezo URL que aparece na barra de enderezos do navegador.
En calquera dos dous casos, sempre deberemos escoller o último número que aparece.
Exemplo; no seguinte caso escolleriamos o número 27:
http://www.edu.xunta.gal/centros/curso77/?q=category/5/26/27

Exemplo A expresión que aparece en cor vermella (no exemplo: limit 0,20) indica o número de títulos que queremos amosar.
Se en lugar de 20 poñemos 1, amosaráse únicamente o título da última entrada dese termo.
Se eliminamos a expresión completa (no exemplo: limit 0,20), amosaránse tódolos títulos de tódalas entradas dese termo.
Exemplo Se queremos amosar os contidos de varios termos, por exemplo os termos 51, 45, 68, e 69 podemos poñelo engadindo "or tid=número" as veces que queiramos.
Quedaría así:
... where tid=51 or tid=45 or tid=68 or tid=69
Ademáis de "or" podemos xogar cos operadores "and" ou similares.

NOTA
Se poñemos "where tid=x and tid=y and tid=z" podería non saír nada ¿porqué?
Pensemos o que significa ese código: estariamos dicindo que nos amose os contidos que estean publicados no termo "x" e que ademais estean publicados tamén no termo "y" e que ademais estean tamén publicados no termo "z"... e se non hai ningúnh contido que estea publicada á vez nos tres pois non hai nada que amosar!!
Se o que nos interesa é que amose os contidos que estean publicadas no termo "x" ou no termo "y" o no termo "z" teriamos que escribir:
"where tid=x or tid=y or tid=z"

  • o operador lóxico "and" equivale a unha intersección de conxuntos ou condicións (cando a intersección é o conxunto baleiro non hai nada que amosar)
  • o operador lóxico "or" equivale a unión de conxuntos ou condicións (amosara todos os elementos que cumpran polo menos algunha das condicións)

Do mesmo xeito, non só podemos usar "=" senón que podemos xogar con condicións do estilo "tid>54 and tid<63". Neste caso amosaría tódalas entradas das categorías con identificador maior que 54 e menor que 63.



O aspecto final do bloque será similar a este:



Recoñecemento:
O código amosado neste exemplo foi creado polos administradores da web do "CEIP Pedro Antonio Cerviño" (Campo Lameiro, Pontevedra), e foi compartido por eles mesmos a través dos foros do proxecto Webs Dinámicas.

Última modificación: miércoles, 23 de diciembre de 2015, 11:06