Letras para TUTORIAL MODULO PARTE 1:
un breve manual para que puedas crear tu propio modulo.
--------------------------------------------------------------------------------
comencemos explicando un simple modulo PHP con contenido html..
*TUTORIAL MODULO PARTE 1*
primero que nada veamos la estructura principal de un modulo (básico)
aquí lo básico de un modulo.. coloco el código y explico después..
Codigo:
<?PHP
if(!defined('MODULE_FILE') & !eregi("modules.php", $_SERVER['PHP_SELF'])){header("Location: ../../index.php");die();}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
define('INDEX_FILE', true);
$index=1;
include("header.php");
OpenTable();
?>
CODIGO HTML CUALQUIERA AQUI
<?PHP
CloseTable();
include("footer.php");
?>
bien, esto es lo escencial de un modulo, sin esto puede que no te funcione, tenga errores o que se yo..
primer linea:
Codigo:
<?PHP
inicio del código PHP, cualquier documento php lo necesita.
segunda linea:
Codigo:
if(!defined('MODULE_FILE') & !eregi("modules.php", $_SERVER['PHP_SELF'])){header("Location: ../../index.php");die();}
esta linea evita que abran directamente al archivo relacionado y redireccione a la portada de la web, agregue el código de versiones antiguas como de versiones nuevas de php, para evitar conflictos entre versiones..
tercer linea:
Codigo:
require_once("mainfile.php");
esta linea manda llamar al mainfile.php de tu nuke, por si alguna función mencionada en el mainfile se mandara llamar en tu modulo..
cuarta linea:
Codigo:
$module_name = basename(dirname(__FILE__));
pues bien, esta linea obtiene el nombre de tu modulo, tomando como base el nombre del directorio que contiene ese archivo..
quinta y sexta linea:
Codigo:
define('INDEX_FILE', true);
$index=1;
estas lineas hacen que los bloques de la izquierda aparescan en tu modulo, son dos lineas porque la primer linea es de versiones mas recientes, y la segunda de versiones pasadas..
7ma linea:
Codigo:
include("header.php");
esta linea, manda llamar al header total de tu pagina, así como algunas funciones mas, como mandar llamar al theme..
8va linea:
Codigo:
OpenTable();
esta linea es función del theme, es el inicio de una tabla html, para saber mas de esto lean este tutorial [ LINK ]
9na linea:
Codigo:
?>
como ven aqui se cierra el codigo php, para darle paso al codigo HTML es como una divicion.. entre php y html.. de esta linea se puede continuar con el codigo html que quieran, scripts, tablas, que se yo.. HTML..
11va linea:
Codigo:
<?PHP
de nuevo el inicio del codigo php..
linea 12:
Codigo:
CloseTable();
el cierre de la tabla que anteriormente se abrio, como ven.. SIEMPRE van juntos
Codigo:
OpenTable();
y
CloseTable
esto es porque si olvidan cerrar una tabla se desconfiguraria toda la pagina, asi que cuidado con dejar una tabla abierta..
linea 13:
Codigo:
include("footer.php");
agrega el pie de pagina o footer de tu pagina completa.
linea 14:
Codigo:
?>
cierre del codigo PHP
bien, ahi esta lo basico de un modulo, mas adelante explicare como hacer llamadas a datos desde el sql y todo lo relacionado..
-----------------------------------------------------------------------
Letras para TUTORIAL MODULO PARTE 2:
2do tutorial de como crear un modulo
--------------------------------------------------------------------------------
ahora vamos a crear un simple modulo con una sencilla llamada al sql
*TUTORIAL MODULO PARTE 2*
comenzaremos dando el código necesario, y después la explicación.
Tabla SQL:
Codigo:
CREATE TABLE `nuke_ewtest` (
`id` int(55) NOT NULL auto_increment,
`titulo` varchar(255) NOT NULL default '',
`descripcion` text NOT NULL,
PRIMARY KEY (`id`)
)
esta consulta la ejecutaran en su SQL
Explicación:
linea 1:
Codigo:
CREATE TABLE `nuke_ewtest` (
crea la tabla "nuke_ewtest"
con los siguientes campos..
Codigo:
`id` int(55) NOT NULL auto_increment,
`titulo` varchar(255) NOT NULL default '',
`descripcion` text NOT NULL,
id con valor de hasta 55 caracteres //esta linea sera la que mantenga el "orden" se cambiara el numero automaticamente..
titulo valor de 255 caracteres // aquí se colocara el titulo cualquiera que quieran.
descripción sin valor //aquí un texto largo cualquiera.
esa seria la tabla que utilizaremos en este tutorial.
ahora la estructura del archivo:
Codigo:
<?PHP
if(!defined('MODULE_FILE') & !eregi("modules.php", $_SERVER['PHP_SELF'])){header("Location: ../../index.php");die();}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
define('INDEX_FILE', true);
$index=1;
include("header.php");
OpenTable();
global $prefix;
/* Inicio Funcion SQL1 */
echo "<b>Linea Simple</b><br>";
$funcion = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest");
list($id, $titulo, $descripcion) = $db->sql_fetchrow($funcion);
echo "$id - $titulo<br>$descripcion<hr>";
/* Fin Función SQL1 */
/* Inicio Función SQL2 */
echo "<b>Lista de Lineas</b><br>";
$funcion2 = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest order by id ASC limit 0,10");
while(list($id, $titulo, $descripcion)=$db->sql_fetchrow($funcion2)){
echo "$id - $titulo<br>$descripcion<hr>";
}
/* Fin Función SQL2 */
CloseTable();
include("footer.php");
?>
y vamos a insertar un campo.
NOTA: ahorita solo explico las llamadas al sql, en el siguiente explicare como colocarle su panel de administración y todo eso.
Codigo:
INSERT INTO `nuke_ewtest` ( `id` , `titulo` , `descripcion` )
VALUES (
'', 'test title', 'descripcion de prueba'
);
ese seria el campo a mostrar en el modulo
para que entiendan mejor agregaremos otros dos campos.
Codigo:
INSERT INTO `nuke_ewtest` ( `id` , `titulo` , `descripcion` )
VALUES (
'', 'prueba 2', 'descripcion prueba 2'
), (
'', 'titulo 3', 'prueba 3 descripcion'
);
listo.. tenemos 3 campos en la base de datos, que serán mostrados en el modulo que vamos a crear.
ahora la explicacion del código del modulo:
como ven las primeras 8 lineas, son las mismas del tutorial pasado, aquí no hay mas que explicar que ya explique arriba.
linea 9:
Codigo:
global $prefix;
esta linea, se define en el archivo config.php de tu nuke, es el prefijo "nuke" solo lo mandas llamar para utilizarlo en funciones mas adelante.
Codigo:
/* Inicio Funcion SQL1 */
bien, aqui no hay que explicar, todo lo que encuentren entre /* estos caracteres */ esta comentado, son solo comentarios del autor, para ayudar a los usuarios o recordar funciones.. que se yo.. solo son mensajes.
linea 11:
Codigo:
echo "<b>Linea Simple</b><br>";
esta linea, solo muestra ese mensaje "linea simple" asi: Linea Simple XD quien no sepa html, ni siga leyendo estos tutoriales..
como ven todo contenido en php, va entre echo" ESTO "; no olviden colocar esto ni el ultimo caracter porque les marcaria error en todo el modulo.
ahora vamos a explicar las funciones SQL
colocare de dos tipos que conosco.
aqui la primera:
Codigo:
$funcion = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest");
list($id, $titulo, $descripcion) = $db->sql_fetchrow($funcion);
primer linea de esta funcion:
la variable "$funcion" manda llamar la tabla "nuke_ewtest" como ven aqui en ves de "nuke" se utiliza su variable, que anteriormente mandamos llamar con el global "$prefix" pues bien, la variable $funcion manda llamar los campos id, titulo y descripcion de la tabla nuke_ewtest, practicamente la primer y segunda linea, van juntas y hacen lo mismo..
solo mostrarian un resultado de la tabla sql
la siguiente linea:
Codigo:
echo "$id - $titulo<br>$descripcion<hr>";
pues bien, con esto imprimes o muestras las variables al contenido del modulo, lo anterior fueron llamar las variables desde el sql, esta linea las muestra en el contenido..
ahora la siguiente linea:
Codigo:
echo "<b>Lista de Lineas</b><br>";
$funcion2 = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest order by id ASC limit 0,10");
while(list($id, $titulo, $descripcion)=$db->sql_fetchrow($funcion2)){
pues bien, la primer linea de ete codigo solo muestra el titulo..
segunda y tercer linea:
mandan llamar al sql tambien, solo con una diferencia. esta ves el contenido esta entre un while
Codigo:
while(list($id, $titulo, $descripcion)=$db->sql_fetchrow($funcion2)){
echo "$id - $titulo<br>$descripcion<hr>";
}
esto lo que hace es "enlistar" 10 campos de la tabla "nuke_ewtest" ordenados por "id", pues bien, expliquemos esto:
dependiendo de los campos que tengas en tu tabla puedes ordenarlos recursos en el modulo.
en este caso:
order by id ASC // ordena los recursos por id, Ascendente
order by id DESC // ordena los recursos por id Descendente
order by titulo ASC
order by titulo DESC
y bien, dependiendo de los campos que tengan..
donde dice limit 0,10 eliminando esta parte, se mostraran TODOS los campos de tu tabla, esta parte solo "limita" los registros a mostrar, puedes tambien cambiar el valor 10 por una variable, editable desde el inicio de la pagina, asi:
Codigo:
$limite ="10";
$funcion2 = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest order by id ASC limit 0,$limite");
esto solo facilitaria ediciones que fueras a hacer despues, o bien, declararlo en sql y de ahi cambiarlo.. esto lo harias con un campo mas en tu tabla.. pero bueno, mas detalles de esto despues..
ahora viene el final del documento:
Codigo:
CloseTable();
include("footer.php");
?>
esto ya se explica en el tutorial de arriba, no hay mas que explicar por ahora.
el resultado final seria:
http://www.evolucion-web.net/beta/modules.php?name=test
-----------------------------------------------------------------------------
Letras para TUTORIAL MODULO PARTE 3:
tercer tutorial continuacion del anterior
--------------------------------------------------------------------------------
Ahora Crearemos el Panel de administracion del modulo anterior
*TUTORIAL MODULO PARTE 3*
tomando en cuenta y basandonos en el modulo anterior comenzaremos explicando la estructura de los directorios del modulo que es:
modules/test/index.php //Este archivo debe contener el codigo del tutorial anterior
modules/test/admin/case.php
modules/test/admin/index.php
modules/test/admin/links
ahora dare el codigo de cada archivo
archivo/codigo/explicacion
comenzamos con el
case.php
Codigo:
<?php
global $admin_file;
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
$module_name = "test";
switch($op) {
case "test":
case "agregartest":
include("modules/$module_name/admin/index.php");
break;
}
?>
linea 1:
Codigo:
global $admin_file;
llama a la variable $admin_file desde el archivo config.php es solamente la palabra "admin"
linea 2:
Codigo:
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
bien, esta linea ya la explique arriba en otro tutorial, hace que no puedana ccesar directamente a este archivo, agregada la funcion de versiones pasadas y la mas reciente, al accesar directamente al archivo, redirecciona a la portada de tu web
linea 3:
Codigo:
$module_name = "test";
aqui debe ir el nombre del modulo o la carpeta principal del modulo
lineas restantes:
Codigo:
switch($op) {
case "test":
case "agregartest":
include("modules/$module_name/admin/index.php");
break;
}
aqui esta un listado de las funciones que utilizas en el archivo index.php si olvidas colocar alguna te aparecera una pagina en blanco, y no te funcionara..
index.php
Codigo:
<?PHP
global $admin_file, $prefix, $db;
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
define('INDEX_FILE', true);
$index=1;
$aid = substr("$aid", 0,25);
$row2 = $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM ".$prefix."_authors WHERE aid='$aid'"));
$auth_user = 0;
require_once("mainfile.php");
include("header.php");
OpenTable();
if ($row2['radminsuper'] == 1 || $auth_user == 1) {
function test(){
global $admin_file, $prefix;
echo "<form method='post' action='".$admin_file.".php'>";
echo "<font class='content'><b>Agregar Nuevo Registro</b><br><br>";
echo "Titulo:<br><input type='text' name='titulo' size='50' maxlength='100'><br>";
echo "Descripcion:<br><textarea name='descripcion' cols="70" rows="15"></textarea><br>";
echo "<input type='hidden' name='op' value='agregartest'>";
echo "<input type='hidden' name='id' value='0'>";
echo "<center><input type='submit' value='Agregar'><br>";
echo "</form>";
}
function agregartest($id, $titulo, $descripcion){
global $admin_file, $prefix, $db;
$tet = $db->sql_query("SELECT titulo from ".$prefix."_ewtest where titulo='$titulo'");
$numrows = $db->sql_numrows($tet);
if($numrows>0){
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Este Dato ya existe en la base de datos</b><br><br>";
echo "" . _GOBACK . "<br>";
CloseTable();
}else{
if ($titulo=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar un Titulo Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
if ($descripcion=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar una Descripcion Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
$titulo = stripslashes(FixQuotes($titulo));
$descripcion = stripslashes(FixQuotes($descripcion));
$db->sql_query("insert into ".$prefix."_ewtest values (NULL, '$titulo', '$descripcion')");
OpenTable();
echo "<center>";
echo "<font class='content'>";
echo "Nuevo Dato Agregado Correctamente<br><br>";
echo "[ <a href='".$admin_file.".php?op=test'> Administracion</a> ]</center><br>";
CloseTable();
}
}
switch ($op) {
case "test":
test();
break;
case "agregartest":
agregartest($id, $titulo, $descripcion);
break;
}
} else {
OpenTable();
echo "<center><b>"._ERROR."</b><br><br>No tienes Permisos Para el Modulo "$module_name"</center>";
CloseTable();
}
CloseTable();
include("footer.php");
?>
linea 1:
Codigo:
global $admin_file, $prefix, $db;
mandas llamar el nombre del archivo principal, el prefijo nuke, y un valor general usado para funciones sql..
las 3 siguientes lineas
ya las explique arriba
Codigo:
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
define('INDEX_FILE', true);
$index=1;
siguientes lineas:
Codigo:
$aid = substr("$aid", 0,25);
$row2 = $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM ".$prefix."_authors WHERE aid='$aid'"));
$auth_user = 0;
con esta funcion, mas adelante se utilizaran los valores seleccionados, para detectar si el administrador tiene permisos para administrar este modulo o no..
siguiente:
Codigo:
require_once("mainfile.php");
include("header.php");
OpenTable();
primer linea, llama al mainfile.php por posibles funciones que puedas utilizar de el
segunda linea, agrega el header total de tu web
tercer linea, abre la tabla principal, (funcion del theme)
linea siguiente:
Codigo:
if ($row2['radminsuper'] == 1 || $auth_user == 1) {
pregunta, si el administrador accesando tiene permiso de entrar, e abre el contenido siguiente:
Codigo:
function test(){
global $admin_file, $prefix;
echo "<form method='post' action='".$admin_file.".php'>";
echo "<font class='content'><b>Agregar Nuevo Registro</b><br><br>";
echo "Titulo:<br><input type='text' name='titulo' size='50' maxlength='100'><br>";
echo "Descripcion:<br><textarea name='descripcion' cols="70" rows="15"></textarea><br>";
echo "<input type='hidden' name='op' value='agregartest'>";
echo "<input type='hidden' name='id' value='0'>";
echo "<center><input type='submit' value='Agregar'><br>";
echo "</form>";
}
estas son las funciones que decia yo se enlistan en el case.php en este modulo solo utilice dos.. eta funcion lo que hace es:
es un formulario basico, html pasado a phpcon 3 valores, uno numerico y 2 de texto
titulo, descripcion y id
como ven, se escriben en estas 3 lineas:
Codigo:
echo "Titulo:<br><input type='text' name='titulo' size='50' maxlength='100'><br>";
echo "Descripcion:<br><textarea name='descripcion' cols="70" rows="15"></textarea><br>";
echo "<input type='hidden' name='id' value='0'>";
esto es html, basico..
y biuen, los datos de este formulario, se van a mandar a la funcion agregartest
Codigo:
echo "<input type='hidden' name='op' value='agregartest'>";
la cual esta un poco mas larga, porque su funcion es comprobar que no falten campos, y si no faltan, verificar que no existan ya, si todo esta correcto, los agrega ala base de datos..
esta funcion:
Codigo:
function agregartest($id, $titulo, $descripcion){
global $admin_file, $prefix, $db;
$tet = $db->sql_query("SELECT titulo from ".$prefix."_ewtest where titulo='$titulo'");
$numrows = $db->sql_numrows($tet);
if($numrows>0){
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Este Dato ya existe en la base de datos</b><br><br>";
echo "" . _GOBACK . "<br>";
CloseTable();
}else{
if ($titulo=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar un Titulo Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
if ($descripcion=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar una Descripcion Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
$titulo = stripslashes(FixQuotes($titulo));
$descripcion = stripslashes(FixQuotes($descripcion));
$db->sql_query("insert into ".$prefix."_ewtest values (NULL, '$titulo', '$descripcion')");
OpenTable();
echo "<center>";
echo "<font class='content'>";
echo "Nuevo Dato Agregado Correctamente<br><br>";
echo "[ <a href='".$admin_file.".php?op=test'> Administracion</a> ]</center><br>";
CloseTable();
}
}
expliquemosla:
linea 1:
Codigo:
function agregartest($id, $titulo, $descripcion){
aqui declaras la funcion agregartest y las variables ahi declaradas se obtienen de la funcion o formulario anterior..
el global ya saben lo que es la siguiente linea:
Codigo:
$tet = $db->sql_query("SELECT titulo from ".$prefix."_ewtest where titulo='$titulo'");
$numrows = $db->sql_numrows($tet);
selecciona el titulo de la tabla nuke_ewtest comparando el titulo de esa tabla, con el titulo agregado where titulo='$titulo'
aqui se hace la comparacion:
Codigo:
if($numrows>0){
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Este Dato ya existe en la base de datos</b><br><br>";
echo "" . _GOBACK . "<br>";
CloseTable();
}else{
si $numrows>0 en pocas palabras.. si existe un campo igual al agregado mostrara el mensaje Error Este Dato ya existe en la base de datos de lo contrario pasara al siguiente paso de la funcion que es:
Codigo:
if ($titulo=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar un Titulo Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
si el titulo esta vacio, mostrara el mensaje de error "Error Necesitas Colocar un Titulo Para Agregar este Dato"
al igual con todos los campos que tengas en tu tabla.. si asi lo deseas..
lo siguiente:
Codigo:
$db->sql_query("insert into ".$prefix."_ewtest values (NULL, '$titulo', '$descripcion')");
una ves comparado todo y todo halla salido correctamente, va a insertar en la tabla nuke_ewtest los valores titulo y descripcion
y mostrara el mensaje
Codigo:
OpenTable();
echo "<center>";
echo "<font class='content'>";
echo "Nuevo Dato Agregado Correctamente<br><br>";
echo "[ <a href='".$admin_file.".php?op=test'> Administracion</a> ]</center><br>";
CloseTable();
Nuevo Dato Agregado Correctamente
y listo, se agrega a tu base de datos el valor dado..
Codigo:
}
}
cierre de las funciones anteriores..
lo siguiente:
Codigo:
switch ($op) {
case "test":
test();
break;
case "agregartest":
agregartest($id, $titulo, $descripcion);
break;
}
aqui van las funciones anteriores, al igual que el case, pero con todos los elementos que se utilizaran.
Codigo:
} else {
OpenTable();
echo "<center><b>"._ERROR."</b><br><br>No tienes Permisos Para el Modulo "$module_name"</center>";
CloseTable();
}
aqui es el cierre de la funcion de arriba, "si este admin tiene permisos de acceso aqui, muestra el codigo anterior, de lo contrario, aparece el mensaje No tienes Permisos Para el Modulo
lo siguiente:
Codigo:
CloseTable();
include("footer.php");
cierre de la tabla y footer incluido..
listo eso seria el index.php
ahora vamos por el
links.php
Codigo:
<?php
global $admin_file;
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
adminmenu("".$admin_file.".php?op=test", TEST, "test.gif");
?>
pues bien, esto solo coloca un enlace en tu panel de administracion, donde dice "test.gif" va el nombre de la imagen que quieras poner.. obviamente iria en el directorio
images/admin/
pues bien, es todo lo que se necesita saber para hacer el panel de administracion..pueden descargar esta prueba completa aqui:
http://www.evolucion-web.net/DWL/ewtest_module.rar
es todo, tutorial 3 terminado..
cualquier duda o comentario sobre este comentenlo aqui, otra cosa.. que mas necesitan saber?
Saludos
un breve manual para que puedas crear tu propio modulo.
--------------------------------------------------------------------------------
comencemos explicando un simple modulo PHP con contenido html..
*TUTORIAL MODULO PARTE 1*
primero que nada veamos la estructura principal de un modulo (básico)
aquí lo básico de un modulo.. coloco el código y explico después..
Codigo:
<?PHP
if(!defined('MODULE_FILE') & !eregi("modules.php", $_SERVER['PHP_SELF'])){header("Location: ../../index.php");die();}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
define('INDEX_FILE', true);
$index=1;
include("header.php");
OpenTable();
?>
CODIGO HTML CUALQUIERA AQUI
<?PHP
CloseTable();
include("footer.php");
?>
bien, esto es lo escencial de un modulo, sin esto puede que no te funcione, tenga errores o que se yo..
primer linea:
Codigo:
<?PHP
inicio del código PHP, cualquier documento php lo necesita.
segunda linea:
Codigo:
if(!defined('MODULE_FILE') & !eregi("modules.php", $_SERVER['PHP_SELF'])){header("Location: ../../index.php");die();}
esta linea evita que abran directamente al archivo relacionado y redireccione a la portada de la web, agregue el código de versiones antiguas como de versiones nuevas de php, para evitar conflictos entre versiones..
tercer linea:
Codigo:
require_once("mainfile.php");
esta linea manda llamar al mainfile.php de tu nuke, por si alguna función mencionada en el mainfile se mandara llamar en tu modulo..
cuarta linea:
Codigo:
$module_name = basename(dirname(__FILE__));
pues bien, esta linea obtiene el nombre de tu modulo, tomando como base el nombre del directorio que contiene ese archivo..
quinta y sexta linea:
Codigo:
define('INDEX_FILE', true);
$index=1;
estas lineas hacen que los bloques de la izquierda aparescan en tu modulo, son dos lineas porque la primer linea es de versiones mas recientes, y la segunda de versiones pasadas..
7ma linea:
Codigo:
include("header.php");
esta linea, manda llamar al header total de tu pagina, así como algunas funciones mas, como mandar llamar al theme..
8va linea:
Codigo:
OpenTable();
esta linea es función del theme, es el inicio de una tabla html, para saber mas de esto lean este tutorial [ LINK ]
9na linea:
Codigo:
?>
como ven aqui se cierra el codigo php, para darle paso al codigo HTML es como una divicion.. entre php y html.. de esta linea se puede continuar con el codigo html que quieran, scripts, tablas, que se yo.. HTML..
11va linea:
Codigo:
<?PHP
de nuevo el inicio del codigo php..
linea 12:
Codigo:
CloseTable();
el cierre de la tabla que anteriormente se abrio, como ven.. SIEMPRE van juntos
Codigo:
OpenTable();
y
CloseTable
esto es porque si olvidan cerrar una tabla se desconfiguraria toda la pagina, asi que cuidado con dejar una tabla abierta..
linea 13:
Codigo:
include("footer.php");
agrega el pie de pagina o footer de tu pagina completa.
linea 14:
Codigo:
?>
cierre del codigo PHP
bien, ahi esta lo basico de un modulo, mas adelante explicare como hacer llamadas a datos desde el sql y todo lo relacionado..
-----------------------------------------------------------------------
Letras para TUTORIAL MODULO PARTE 2:
2do tutorial de como crear un modulo
--------------------------------------------------------------------------------
ahora vamos a crear un simple modulo con una sencilla llamada al sql
*TUTORIAL MODULO PARTE 2*
comenzaremos dando el código necesario, y después la explicación.
Tabla SQL:
Codigo:
CREATE TABLE `nuke_ewtest` (
`id` int(55) NOT NULL auto_increment,
`titulo` varchar(255) NOT NULL default '',
`descripcion` text NOT NULL,
PRIMARY KEY (`id`)
)
esta consulta la ejecutaran en su SQL
Explicación:
linea 1:
Codigo:
CREATE TABLE `nuke_ewtest` (
crea la tabla "nuke_ewtest"
con los siguientes campos..
Codigo:
`id` int(55) NOT NULL auto_increment,
`titulo` varchar(255) NOT NULL default '',
`descripcion` text NOT NULL,
id con valor de hasta 55 caracteres //esta linea sera la que mantenga el "orden" se cambiara el numero automaticamente..
titulo valor de 255 caracteres // aquí se colocara el titulo cualquiera que quieran.
descripción sin valor //aquí un texto largo cualquiera.
esa seria la tabla que utilizaremos en este tutorial.
ahora la estructura del archivo:
Codigo:
<?PHP
if(!defined('MODULE_FILE') & !eregi("modules.php", $_SERVER['PHP_SELF'])){header("Location: ../../index.php");die();}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
define('INDEX_FILE', true);
$index=1;
include("header.php");
OpenTable();
global $prefix;
/* Inicio Funcion SQL1 */
echo "<b>Linea Simple</b><br>";
$funcion = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest");
list($id, $titulo, $descripcion) = $db->sql_fetchrow($funcion);
echo "$id - $titulo<br>$descripcion<hr>";
/* Fin Función SQL1 */
/* Inicio Función SQL2 */
echo "<b>Lista de Lineas</b><br>";
$funcion2 = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest order by id ASC limit 0,10");
while(list($id, $titulo, $descripcion)=$db->sql_fetchrow($funcion2)){
echo "$id - $titulo<br>$descripcion<hr>";
}
/* Fin Función SQL2 */
CloseTable();
include("footer.php");
?>
y vamos a insertar un campo.
NOTA: ahorita solo explico las llamadas al sql, en el siguiente explicare como colocarle su panel de administración y todo eso.
Codigo:
INSERT INTO `nuke_ewtest` ( `id` , `titulo` , `descripcion` )
VALUES (
'', 'test title', 'descripcion de prueba'
);
ese seria el campo a mostrar en el modulo
para que entiendan mejor agregaremos otros dos campos.
Codigo:
INSERT INTO `nuke_ewtest` ( `id` , `titulo` , `descripcion` )
VALUES (
'', 'prueba 2', 'descripcion prueba 2'
), (
'', 'titulo 3', 'prueba 3 descripcion'
);
listo.. tenemos 3 campos en la base de datos, que serán mostrados en el modulo que vamos a crear.
ahora la explicacion del código del modulo:
como ven las primeras 8 lineas, son las mismas del tutorial pasado, aquí no hay mas que explicar que ya explique arriba.
linea 9:
Codigo:
global $prefix;
esta linea, se define en el archivo config.php de tu nuke, es el prefijo "nuke" solo lo mandas llamar para utilizarlo en funciones mas adelante.
Codigo:
/* Inicio Funcion SQL1 */
bien, aqui no hay que explicar, todo lo que encuentren entre /* estos caracteres */ esta comentado, son solo comentarios del autor, para ayudar a los usuarios o recordar funciones.. que se yo.. solo son mensajes.
linea 11:
Codigo:
echo "<b>Linea Simple</b><br>";
esta linea, solo muestra ese mensaje "linea simple" asi: Linea Simple XD quien no sepa html, ni siga leyendo estos tutoriales..
como ven todo contenido en php, va entre echo" ESTO "; no olviden colocar esto ni el ultimo caracter porque les marcaria error en todo el modulo.
ahora vamos a explicar las funciones SQL
colocare de dos tipos que conosco.
aqui la primera:
Codigo:
$funcion = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest");
list($id, $titulo, $descripcion) = $db->sql_fetchrow($funcion);
primer linea de esta funcion:
la variable "$funcion" manda llamar la tabla "nuke_ewtest" como ven aqui en ves de "nuke" se utiliza su variable, que anteriormente mandamos llamar con el global "$prefix" pues bien, la variable $funcion manda llamar los campos id, titulo y descripcion de la tabla nuke_ewtest, practicamente la primer y segunda linea, van juntas y hacen lo mismo..
solo mostrarian un resultado de la tabla sql
la siguiente linea:
Codigo:
echo "$id - $titulo<br>$descripcion<hr>";
pues bien, con esto imprimes o muestras las variables al contenido del modulo, lo anterior fueron llamar las variables desde el sql, esta linea las muestra en el contenido..
ahora la siguiente linea:
Codigo:
echo "<b>Lista de Lineas</b><br>";
$funcion2 = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest order by id ASC limit 0,10");
while(list($id, $titulo, $descripcion)=$db->sql_fetchrow($funcion2)){
pues bien, la primer linea de ete codigo solo muestra el titulo..
segunda y tercer linea:
mandan llamar al sql tambien, solo con una diferencia. esta ves el contenido esta entre un while
Codigo:
while(list($id, $titulo, $descripcion)=$db->sql_fetchrow($funcion2)){
echo "$id - $titulo<br>$descripcion<hr>";
}
esto lo que hace es "enlistar" 10 campos de la tabla "nuke_ewtest" ordenados por "id", pues bien, expliquemos esto:
dependiendo de los campos que tengas en tu tabla puedes ordenarlos recursos en el modulo.
en este caso:
order by id ASC // ordena los recursos por id, Ascendente
order by id DESC // ordena los recursos por id Descendente
order by titulo ASC
order by titulo DESC
y bien, dependiendo de los campos que tengan..
donde dice limit 0,10 eliminando esta parte, se mostraran TODOS los campos de tu tabla, esta parte solo "limita" los registros a mostrar, puedes tambien cambiar el valor 10 por una variable, editable desde el inicio de la pagina, asi:
Codigo:
$limite ="10";
$funcion2 = $db->sql_query("SELECT id, titulo, descripcion FROM ".$prefix."_ewtest order by id ASC limit 0,$limite");
esto solo facilitaria ediciones que fueras a hacer despues, o bien, declararlo en sql y de ahi cambiarlo.. esto lo harias con un campo mas en tu tabla.. pero bueno, mas detalles de esto despues..
ahora viene el final del documento:
Codigo:
CloseTable();
include("footer.php");
?>
esto ya se explica en el tutorial de arriba, no hay mas que explicar por ahora.
el resultado final seria:
http://www.evolucion-web.net/beta/modules.php?name=test
-----------------------------------------------------------------------------
Letras para TUTORIAL MODULO PARTE 3:
tercer tutorial continuacion del anterior
--------------------------------------------------------------------------------
Ahora Crearemos el Panel de administracion del modulo anterior
*TUTORIAL MODULO PARTE 3*
tomando en cuenta y basandonos en el modulo anterior comenzaremos explicando la estructura de los directorios del modulo que es:
modules/test/index.php //Este archivo debe contener el codigo del tutorial anterior
modules/test/admin/case.php
modules/test/admin/index.php
modules/test/admin/links
ahora dare el codigo de cada archivo
archivo/codigo/explicacion
comenzamos con el
case.php
Codigo:
<?php
global $admin_file;
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
$module_name = "test";
switch($op) {
case "test":
case "agregartest":
include("modules/$module_name/admin/index.php");
break;
}
?>
linea 1:
Codigo:
global $admin_file;
llama a la variable $admin_file desde el archivo config.php es solamente la palabra "admin"
linea 2:
Codigo:
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
bien, esta linea ya la explique arriba en otro tutorial, hace que no puedana ccesar directamente a este archivo, agregada la funcion de versiones pasadas y la mas reciente, al accesar directamente al archivo, redirecciona a la portada de tu web
linea 3:
Codigo:
$module_name = "test";
aqui debe ir el nombre del modulo o la carpeta principal del modulo
lineas restantes:
Codigo:
switch($op) {
case "test":
case "agregartest":
include("modules/$module_name/admin/index.php");
break;
}
aqui esta un listado de las funciones que utilizas en el archivo index.php si olvidas colocar alguna te aparecera una pagina en blanco, y no te funcionara..
index.php
Codigo:
<?PHP
global $admin_file, $prefix, $db;
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
define('INDEX_FILE', true);
$index=1;
$aid = substr("$aid", 0,25);
$row2 = $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM ".$prefix."_authors WHERE aid='$aid'"));
$auth_user = 0;
require_once("mainfile.php");
include("header.php");
OpenTable();
if ($row2['radminsuper'] == 1 || $auth_user == 1) {
function test(){
global $admin_file, $prefix;
echo "<form method='post' action='".$admin_file.".php'>";
echo "<font class='content'><b>Agregar Nuevo Registro</b><br><br>";
echo "Titulo:<br><input type='text' name='titulo' size='50' maxlength='100'><br>";
echo "Descripcion:<br><textarea name='descripcion' cols="70" rows="15"></textarea><br>";
echo "<input type='hidden' name='op' value='agregartest'>";
echo "<input type='hidden' name='id' value='0'>";
echo "<center><input type='submit' value='Agregar'><br>";
echo "</form>";
}
function agregartest($id, $titulo, $descripcion){
global $admin_file, $prefix, $db;
$tet = $db->sql_query("SELECT titulo from ".$prefix."_ewtest where titulo='$titulo'");
$numrows = $db->sql_numrows($tet);
if($numrows>0){
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Este Dato ya existe en la base de datos</b><br><br>";
echo "" . _GOBACK . "<br>";
CloseTable();
}else{
if ($titulo=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar un Titulo Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
if ($descripcion=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar una Descripcion Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
$titulo = stripslashes(FixQuotes($titulo));
$descripcion = stripslashes(FixQuotes($descripcion));
$db->sql_query("insert into ".$prefix."_ewtest values (NULL, '$titulo', '$descripcion')");
OpenTable();
echo "<center>";
echo "<font class='content'>";
echo "Nuevo Dato Agregado Correctamente<br><br>";
echo "[ <a href='".$admin_file.".php?op=test'> Administracion</a> ]</center><br>";
CloseTable();
}
}
switch ($op) {
case "test":
test();
break;
case "agregartest":
agregartest($id, $titulo, $descripcion);
break;
}
} else {
OpenTable();
echo "<center><b>"._ERROR."</b><br><br>No tienes Permisos Para el Modulo "$module_name"</center>";
CloseTable();
}
CloseTable();
include("footer.php");
?>
linea 1:
Codigo:
global $admin_file, $prefix, $db;
mandas llamar el nombre del archivo principal, el prefijo nuke, y un valor general usado para funciones sql..
las 3 siguientes lineas
ya las explique arriba
Codigo:
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
define('INDEX_FILE', true);
$index=1;
siguientes lineas:
Codigo:
$aid = substr("$aid", 0,25);
$row2 = $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM ".$prefix."_authors WHERE aid='$aid'"));
$auth_user = 0;
con esta funcion, mas adelante se utilizaran los valores seleccionados, para detectar si el administrador tiene permisos para administrar este modulo o no..
siguiente:
Codigo:
require_once("mainfile.php");
include("header.php");
OpenTable();
primer linea, llama al mainfile.php por posibles funciones que puedas utilizar de el
segunda linea, agrega el header total de tu web
tercer linea, abre la tabla principal, (funcion del theme)
linea siguiente:
Codigo:
if ($row2['radminsuper'] == 1 || $auth_user == 1) {
pregunta, si el administrador accesando tiene permiso de entrar, e abre el contenido siguiente:
Codigo:
function test(){
global $admin_file, $prefix;
echo "<form method='post' action='".$admin_file.".php'>";
echo "<font class='content'><b>Agregar Nuevo Registro</b><br><br>";
echo "Titulo:<br><input type='text' name='titulo' size='50' maxlength='100'><br>";
echo "Descripcion:<br><textarea name='descripcion' cols="70" rows="15"></textarea><br>";
echo "<input type='hidden' name='op' value='agregartest'>";
echo "<input type='hidden' name='id' value='0'>";
echo "<center><input type='submit' value='Agregar'><br>";
echo "</form>";
}
estas son las funciones que decia yo se enlistan en el case.php en este modulo solo utilice dos.. eta funcion lo que hace es:
es un formulario basico, html pasado a phpcon 3 valores, uno numerico y 2 de texto
titulo, descripcion y id
como ven, se escriben en estas 3 lineas:
Codigo:
echo "Titulo:<br><input type='text' name='titulo' size='50' maxlength='100'><br>";
echo "Descripcion:<br><textarea name='descripcion' cols="70" rows="15"></textarea><br>";
echo "<input type='hidden' name='id' value='0'>";
esto es html, basico..
y biuen, los datos de este formulario, se van a mandar a la funcion agregartest
Codigo:
echo "<input type='hidden' name='op' value='agregartest'>";
la cual esta un poco mas larga, porque su funcion es comprobar que no falten campos, y si no faltan, verificar que no existan ya, si todo esta correcto, los agrega ala base de datos..
esta funcion:
Codigo:
function agregartest($id, $titulo, $descripcion){
global $admin_file, $prefix, $db;
$tet = $db->sql_query("SELECT titulo from ".$prefix."_ewtest where titulo='$titulo'");
$numrows = $db->sql_numrows($tet);
if($numrows>0){
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Este Dato ya existe en la base de datos</b><br><br>";
echo "" . _GOBACK . "<br>";
CloseTable();
}else{
if ($titulo=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar un Titulo Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
if ($descripcion=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar una Descripcion Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
$titulo = stripslashes(FixQuotes($titulo));
$descripcion = stripslashes(FixQuotes($descripcion));
$db->sql_query("insert into ".$prefix."_ewtest values (NULL, '$titulo', '$descripcion')");
OpenTable();
echo "<center>";
echo "<font class='content'>";
echo "Nuevo Dato Agregado Correctamente<br><br>";
echo "[ <a href='".$admin_file.".php?op=test'> Administracion</a> ]</center><br>";
CloseTable();
}
}
expliquemosla:
linea 1:
Codigo:
function agregartest($id, $titulo, $descripcion){
aqui declaras la funcion agregartest y las variables ahi declaradas se obtienen de la funcion o formulario anterior..
el global ya saben lo que es la siguiente linea:
Codigo:
$tet = $db->sql_query("SELECT titulo from ".$prefix."_ewtest where titulo='$titulo'");
$numrows = $db->sql_numrows($tet);
selecciona el titulo de la tabla nuke_ewtest comparando el titulo de esa tabla, con el titulo agregado where titulo='$titulo'
aqui se hace la comparacion:
Codigo:
if($numrows>0){
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Este Dato ya existe en la base de datos</b><br><br>";
echo "" . _GOBACK . "<br>";
CloseTable();
}else{
si $numrows>0 en pocas palabras.. si existe un campo igual al agregado mostrara el mensaje Error Este Dato ya existe en la base de datos de lo contrario pasara al siguiente paso de la funcion que es:
Codigo:
if ($titulo=="") {
OpenTable();
echo "<br><center>";
echo "<font class='content'>";
echo "<b>Error Necesitas Colocar un Titulo Para Agregar este Dato</b><br><br>";
echo "" . _GOBACK . "<br><br>";
CloseTable();
}
si el titulo esta vacio, mostrara el mensaje de error "Error Necesitas Colocar un Titulo Para Agregar este Dato"
al igual con todos los campos que tengas en tu tabla.. si asi lo deseas..
lo siguiente:
Codigo:
$db->sql_query("insert into ".$prefix."_ewtest values (NULL, '$titulo', '$descripcion')");
una ves comparado todo y todo halla salido correctamente, va a insertar en la tabla nuke_ewtest los valores titulo y descripcion
y mostrara el mensaje
Codigo:
OpenTable();
echo "<center>";
echo "<font class='content'>";
echo "Nuevo Dato Agregado Correctamente<br><br>";
echo "[ <a href='".$admin_file.".php?op=test'> Administracion</a> ]</center><br>";
CloseTable();
Nuevo Dato Agregado Correctamente
y listo, se agrega a tu base de datos el valor dado..
Codigo:
}
}
cierre de las funciones anteriores..
lo siguiente:
Codigo:
switch ($op) {
case "test":
test();
break;
case "agregartest":
agregartest($id, $titulo, $descripcion);
break;
}
aqui van las funciones anteriores, al igual que el case, pero con todos los elementos que se utilizaran.
Codigo:
} else {
OpenTable();
echo "<center><b>"._ERROR."</b><br><br>No tienes Permisos Para el Modulo "$module_name"</center>";
CloseTable();
}
aqui es el cierre de la funcion de arriba, "si este admin tiene permisos de acceso aqui, muestra el codigo anterior, de lo contrario, aparece el mensaje No tienes Permisos Para el Modulo
lo siguiente:
Codigo:
CloseTable();
include("footer.php");
cierre de la tabla y footer incluido..
listo eso seria el index.php
ahora vamos por el
links.php
Codigo:
<?php
global $admin_file;
if(!defined('ADMIN_FILE') & !eregi("".$admin_file.".php", $_SERVER['PHP_SELF'])) {header("Location: ../../../index.php");die();}
adminmenu("".$admin_file.".php?op=test", TEST, "test.gif");
?>
pues bien, esto solo coloca un enlace en tu panel de administracion, donde dice "test.gif" va el nombre de la imagen que quieras poner.. obviamente iria en el directorio
images/admin/
pues bien, es todo lo que se necesita saber para hacer el panel de administracion..pueden descargar esta prueba completa aqui:
http://www.evolucion-web.net/DWL/ewtest_module.rar
es todo, tutorial 3 terminado..
cualquier duda o comentario sobre este comentenlo aqui, otra cosa.. que mas necesitan saber?
Saludos
