INFOKedadas - FOROS PHP Programacion: PERSONALIZACION DE BLOQUE CONTENT - Para ErentxumWeb: Forums

:.:INFOKEDADAS:.: :: Ver tema - PERSONALIZACION DE BLOQUE CONTENT - Para ErentxumWeb
 FAQFAQ   BuscarBuscar   Grupos de UsuariosGrupos de Usuarios   PerfilPerfil   Entre para ver sus mensajes privadosEntre para ver sus mensajes privados   LoginLogin 
     

PERSONALIZACION DE BLOQUE CONTENT - Para ErentxumWeb

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> PHP Programacion
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Seal_Bcn
Administrador
Administrador


Registrado: Nov 25, 2003
Mensajes: 3197
Ubicación: Barcelona

MensajePublicado: Vie Feb 25, 2005 3:26 pm    Asunto: PERSONALIZACION DE BLOQUE CONTENT - Para ErentxumWeb Responder citando

Hola a tod@s!!!

De la necesidad de mostrar un cierto contenido de nuestro modulo CONTENT surge esta iniciativa planteada por ocram5, el cual nos plantea el siguiente problema:

- Crear un nuevo Bloque
- Mostrar el contenido de una de las categorias del Modulo
- Ordenar el mismo
- Enlazar el la categoria en el mismo bloque para un acceso m?s r?pido y directo.


Para realizar todo esto, ANALIZAREMOS PRIMERO que es lo que nos da de por si PHP-Nuke con sus modulos y bloques b?sicos, pues encontraremos en la carpeta de BLOCKS el bloque correspondiente al modulo CONTENT, el cual muestra todas las paginas ACTIVAS existentes.

Este BLOQUE ser? nuestra BASE para desarrollar el nuevo bloque personalizado, y en el mismo encontramos el siguiente c?digo:
Código:

if (eregi("block-Content.php", $PHP_SELF)) {
    Header("Location: index.php");
    die();
}

global $prefix, $dbi;

$result = sql_query("SELECT pid, title FROM ".$prefix."_pages WHERE active='1'", $dbi);
while(list($pid, $title) = sql_fetch_row($result, $dbi)) {
    $content .= "<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a><br>";
}


Muchos os estare?s preguntando... QUE DIABLOS SIGNIFICA TODO ESTO?!?!?! Pues bien, pasemos a explicar linea a linea que hace cada parte del c?digo del bloque y para que sirve icon_smile.gif Comencemos icon_biggrin.gif

Código:

global $prefix, $dbi;


Declaramos como globales las variables: $prefix ( prefijo de nuestras tablas de la base de datos ) y $dbi ( nuestra variable de conexi?n con la base de datos )

Una vez declaradas como globales las variables que utilizaremos en el bloque, continuaremos con la parte fundamental que tan solo MODIFICAREMOS para personalizar el bloque de content y crear uno nuevo a partir del mismo para mostrar lo que queremos... LA CONSULTA!!!!

Código:
$result = sql_query("SELECT pid, title FROM ".$prefix."_pages WHERE active='1'", $dbi);


Que hace?! Que significa?!? Es m?s sencillo de lo que os pode?s llegar a imaginar... El bloque de content muestra todas las paginas activas del modulo, verdad?!? Pues la interpretacion directa de esa linea seria algo como:

- Resultado es igual a consulta en la base de datos seleccionando los valores de pid y title del prefijo de la tabla de nuestro nuke donde el valor de activo sea igual a 1, y para ello utilizaremos nuestra variable de conexion.

La variable $result puede ser cualquier otra cosa... como por ejemplo: $pepeleches, esta variable tan solo contiene el valor de la consulta, o sea, lo que viene justo despues del signo =.

Con sql_query() definimos la consulta que deseamos hacer a nuestra base de datos y su contenido, es la definicion de nuestras necesidades a mostrar algo en concreto, dandole un orden y descriminando registros de la tabla a la medida de nuestras necesidades.

Continuara... ( Que me estoy alargando en un mismo mensaje jajajajajaja )
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Seal_Bcn
Administrador
Administrador


Registrado: Nov 25, 2003
Mensajes: 3197
Ubicación: Barcelona

MensajePublicado: Vie Feb 25, 2005 4:11 pm    Asunto: CONTINUACION DEL ANALISIS DEL BLOQUE CONTENT Responder citando

Continuacion...

Código:
$result = sql_query("SELECT pid, title FROM ".$prefix."_pages WHERE active='1'", $dbi);


La consulta definida en el bloque de contenido de nuestro nuke, en tal caso, nos da un resultado excesivamente AMPLIO, y no se ajusta en realidad a nuestras necesidades. Y es ahi, justamente, donde atacaremos para realizar la modificacion MAS importante de bloque personalizado.

Continuando con las siguientes lineas del c?digo del bloque, nos encontramos con:

Código:
while(list($pid, $title) = sql_fetch_row($result, $dbi)) {
    $content .= "<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a><br>";
}


Esta es la parte que m?s me gusta icon_wink.gif Como hemos visto anteriormente, en la variable $result se habia declarado el CONTENIDO DE LA CONSULTA, pero eso por si solo no hace absolutamente nada, pues no estamos realizando consulta alguna a la base de datos.

Código:
while(list($pid, $title) = sql_fetch_row($result, $dbi)) {

EXPLICACION:
while define el bucle necesario para seleccionar los resultados de nuestra consulta al listar las variables (list($pid, $title) cuando las mismas, sean = a los registros que cumplan los requisitos definidos en el valor de nuestra CONSULTA sql_fetch_row($result, $dbi))

Prosigamos...

$content .= "<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a><br>";
EXPLICACION:
$content .=
plasmar? el resultado en el interior del bloque.
.="<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a><br>";
Dejando de lado las explicaciones sobre el codigo HTML que vemos en esta linea, pasaremos a lo que nos interesa realmente, que es a la parte que muestra los enlaces del contenido del modulo content en la base de datos.

Código:
<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a>


En primer lugar encontramos la definicion de la url en el contenido, y a continuacion PARTE DE LA RUTA ya establecida, pues es la parte invariable de nuestro modulo de contenidos de PHP-Nuke ( modules.php?name=Content&pa=showpage&pid= ) y partir de este punto es donde mostraremos la parte variable.

La parte variable, es la que hemos extraido de nuestra consulta a la base de datos, con la selecci?n de los datos que deseamos mostrar, osea... las dos variables con las que hemos estado trabajando desde un principio: $pid y $title as? lo que hacemos con el codigo...

Código:
<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a>


Es enlazar al modulo content para que muestre las paginas $pid y muestre el titulo de la pagina en cuestion $title.

Como hemos definido un bucle while para realizar todo esto, mostrara el contenido total de la base de datos siempre y cuando existan valores iguales a los definidos en nuestra consulta inicial ( O sea, que las paginas esten activas )

$content .= "<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a><br>";

Si os fija?s, al final de cada linea aparece <br>, para hacer un salto de linea, esto simplemente os explicara a todos... EL POR QUE en todos los bloques iniciales de PHP-Nuke hay un salto de linea despues de terminar de mostrar el contenido del mismo xD .oO( Una cosa curiosa que puede pasar desapercibida, pero como todo... tiene una explicacion razonable xD )

Y ya solo nos queda, finalizar la parte de la explicacion del codigo terminando de cerrar la llave de nuestro bucle while con el simbolito }

En definitiva, hemos podido ver mejor o peor explicado lo que hacen... Las 4 LINEAS exactas del bloque content a pelo. Si os surge cualquier duda o consulta, realizadla mejor en un post a parte y continuaremos con la SEGUNDA PARTE: LA MODIFICACION DEL BLOQUE CONTENT a las necesidades de ocram5 para su portal ErentxumWeb

Saludos!


A TENER EN CUENTA:
En PHP-Nuke existen muchas formas para mostrar o plasmar textos o valores de variables en la p?gina, modulo o bloque... En el caso de los BLOQUES la forma de plasmar los resultados o los textos deseados se efectuara mediante la variable definida de php-nuke content

$content Solo sirve, repetimos, SOLAMENTE sirve para mostrar el contenido de nuestras variables, o texto o lo que queramos en BLOQUES!!!!!

PD: No se si me he llegado a explicar bien... Pero que le vamos ha hacer,... xD No soy un experto jajajajajajaja asi que si alguien tiene alguna duda, ya sabe... O bien si he comentido algun error, pues abierto esta este post para posibles correcciones.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Seal_Bcn
Administrador
Administrador


Registrado: Nov 25, 2003
Mensajes: 3197
Ubicación: Barcelona

MensajePublicado: Vie Feb 25, 2005 5:00 pm    Asunto: Responder citando

Ahora toca la parte divertida icon_smile.gif aprovecharemos que tenemos el block-Content.php abierto con nuestro editor preferido, para guardarlo con otro nombre siguiendo este formato:

block-loquequeraisponerpornombre.php

loquequeraisponerpornombre = ponedle algo mono y corto anda... icon_wink.gif que para enfermos mentales ya me sobre y me valgo yo icon_biggrin.gif icon_smile.gif

Una vez guardado, comenzaremos realizar las modificaciones necesarias para que se muestre el contenido de una categoria del modulo CONTENT en concreto en nuestro nuevo BLOQUE. Para ello, volveremos a revisar el c?digo inicial y basandonos en el mismo...

Código:
$result = sql_query("SELECT pid, title FROM ".$prefix."_pages WHERE active='1'", $dbi);
while(list($pid, $title) = sql_fetch_row($result, $dbi)) {
    $content .= "<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title</a><br>";
}


tan solo a?adiremos las modificaciones oportunas para conseguir lo que deseamos:

Código:
$result = sql_query("SELECT pid, title, counter FROM ".$prefix."_pages WHERE active='1' and cid='2' ORDER by counter DESC", $dbi);
while(list($pid, $title, $counter) = sql_fetch_row($result, $dbi)) {
    $content .= "<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title - ($counter)</a><br>";
}
$content .= "<a href=\"modules.php?name=Content&pa=list_pages_categories&cid=2\"><b>Entrar en Entrevistas</b></a>";


Que hemos hecho?!?! Que ha cambiado o que hemos conseguido con los cambios realizados?!?!

Hemos a?adido a nuestra consulta inicial la seleccion de counter que no es mas que el contador de hits de las paginas vistas del modulo content, tambien hemos definido que solo encuentre los resultados (WHERE) que tengan las paginas activas (active='1') y hemos a?adido una condicion (and) m?s a parte del estado de las paginas (cid='2') que es la variable de la CATEGORIA y el VALOR de la categoria que deseamos mostrar.

Como ocram5 esta hecho un artista, quiere que tan solo se vean las Entrevistas que m?s veces se hayan leido, o por consiguiente, las que los usuarios han determinado con sus visitas como m?s relevantes. Para ello, tan solo hemos de a?adir un ORDEN a la hora de mostrar nuestros resultados:

Código:
ORDER by counter DESC


Con ORDER podemos ordenar los registros como deseemos y atraves de la variable que definamos, las necesidades planteadas por ocram5 son que esten los registros ordenados por VISITAS ( counter contiene el numero de veces que se han visto las paginas en el modulo content ) y le indicamos adem?s, que deseamos que muestre los resultados de MAYOR A MENOR con (DESC)

Código:
while(list($pid, $title, $counter) = sql_fetch_row($result, $dbi)) {


Hemos a?adido tambien en nuestro bucle de listado de resultados la variable $counter ya que necesitaremos el contenido de la misma para mostrar las veces que se ha visto cada entrevista. El resto, como podreis comprobar, sigue exactamente igual en nuestra definicion del bucle.

Continuamos con las modificaciones en la linea que mostrara los resultados de la consulta mediante $content y encontramos lo siguiente:

Código:
$content .= "<strong><big>&</big></strong>&<a href=\"modules.php?name=Content&pa=showpage&pid=$pid\">$title - ($counter)</a><br>";


Todo sigue exactamente igual a excepcion que hemos a?adido al final del titulo de cada registro - ($counter) lo que nos mostrar entre parentesis la cantidad de veces que se han visto las entrevistas.

Y para finalizar, hemos a?adido un enlace directo hacia el modulo content donde se muestran el contenido de las Entrevistas con el siguiente codigo:

Código:
$content .= "<a href=\"modules.php?name=Content&pa=list_pages_categories&cid=2\"><b>Entrar en Entrevistas</b></a>";


S? os fijais, hemos colocado esta parte del c?digo fuera del bucle while, si lo hubieramos puesto DENTRO del mismo, o sea antes de } en ves de despu?s, se habria puesto tantas veces como registros encontrados en la categoria de Entrevistas.

Solo nos queda, GUARDAR Y SUBIR a nuestro NUEVO BLOQUE a la carpeta de nuestro nuke BLOCKS y entrar en el panel de administracion y activarlo para ver si FUNCIONA O NO... icon_razz.gif YO NO LO HE PROBADO xD juaaaaaaaaaas asi que ya me contaras icon_razz.gif xD

Y eso eso eso es todo amig@s!!!

Espero que os haya podido servir de ayuda y como base para cualquier otra modificacion que dese?s hacer, como siempre podeis hacer uso del foro para realizar cualquier tipo de consulta icon_biggrin.gif

Saludos!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Seal_Bcn
Administrador
Administrador


Registrado: Nov 25, 2003
Mensajes: 3197
Ubicación: Barcelona

MensajePublicado: Lun Feb 28, 2005 10:58 am    Asunto: Responder citando

JUAS ocram5!!!! xD

De momento a ninguno icon_wink.gif Cuando terminemos con los 38 - 3490578345734985345 apa?os m?s que se te puedan ocurrir nos planteamos un par de rondas icon_biggrin.gif icon_wink.gif icon_razz.gif

Saludos! icon_biggrin.gif

PD:
PODEIS VER EL BLOQUE CONTENT Modificado y personalizado para mostrar las entrevistas en la web de Ocram5: erentxumweb
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Donmuerte
Moderador y Fan N?1 de Sabina
Moderador y Fan N?1 de Sabina


Registrado: Feb 06, 2004
Mensajes: 857
Ubicación: Mijas-Costa

MensajePublicado: Mar Mar 01, 2005 1:30 pm    Asunto: Responder citando

Si se?or doy f? de que el bloque Content esta terminado y funcionando de escandalo icon_wink.gif Un pasote Seal y buen trabajo Ocram5 jajajaja icon_biggrin.gif
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Publicar nuevo tema   Responder al tema    Foros de discusión -> PHP Programacion Todas las horas son GMT + 1 Hora
Página 1 de 1

 
Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro