Creando nuestro sitio público
Antes de empezar a visualizar la información vamos a crear dos archivos importantes. El núcleo principal de nuestros sitio que lo llamaremos core.php que se guarda en el directorio de setting, y un archivo llamado snippets.php que se guarda en public/lib/
core.php <?php require_once( 'config.php'); require_once( 'mysql.php'); require_once( '../public/lib/snippets.php'); function info_web(){ $mysql = new Mysql(); $sql = <<<SQL SELECT * FROM configuracion LIMIT 1 SQL; $res = $mysql->search($sql); while( is_array($res[0]) && list($key,$value) = each($res[0]) ){ $name_var = Config::PREFIX.$key; $GLOBALS[$name_var] = $value; } } function posts($category = ''){ $where = (strlen($category) > 0 ) ? "AND categoria = '$category' " : ""; $mysql = new Mysql(); $sql = <<<SQL SELECT * FROM contenidos WHERE tipo = 'POST' $where SQL; $res = $mysql->search($sql); return $res; } function page(){ $uri = substr($_SERVER['REQUEST_URI'], 1); $uri = str_replace(Config::PATH_ROOT, "", $uri); $mysql = new Mysql(); $sql = <<<SQL SELECT * FROM contenidos WHERE alias = '$uri' LIMIT 1 SQL; $res = $mysql->search($sql); while( is_array($res[0]) && list($key,$value) = each($res[0]) ){ $name_var = Config::PREFIX_PAGE.$key; if($key == 'contenido'){ $value = analizadorContenido( urldecode($value) ); } $GLOBALS[$name_var] = $value; } } function analizadorContenido($contenido){ $pattern = '/\[[a-z_]+[a-z0-9_]*((:{1}[a-z0-9_\-\s]+)+(,{1}[a-z0-9_\-\s]+)*)*\]/i'; preg_match_all($pattern, $contenido, $coincidencias, PREG_OFFSET_CAPTURE); foreach($coincidencias[0] as $arr ){ $function = $arr[0]; $lenght_function = strlen($function); $pos_string = strpos($contenido, $function); $result_function = ejecutarFuncion($function); $contenido = substr_replace($contenido, $result_function, $pos_string, $lenght_function ); //Pegar resultado de la funcion en el HTML } return $contenido; } function ejecutarFuncion($function_string){ $function = extraerCadena($function_string, "[", "]"); $arr_ftn = explode(":", $function); $function_name = $arr_ftn[0]; $params = explode(",", $arr_ftn[1]); $result_function = (function_exists($function_name)) ? call_user_func_array($function_name, $params) : $function_string; return $result_function; } function extraerCadena($str, $findBegin, $findEnd){ $posbegin = strpos($str, $findBegin) + 1; $posend = strpos($str, $findEnd); return substr($str, $posbegin, $posend-$posbegin); } function site_info($var){ return info(Config::PREFIX, $var); } function page_info($var){ return info(Config::PREFIX_PAGE, $var); } function info($prefix, $var){ $varsite = $prefix.$var; return $GLOBALS[$varsite]; } info_web(); page( $_GET['page'] ); ?> Snippets.php <?php /* Tu código personal */ ?>Explicaré las funciones de core.php
- info_web(): Retorna la información general de nuestro sitio web, como el título, la dirección, y cualquier otro dato que quieras configurar en tu web, todos los campos de configuración pasan a una variable global y esta pueda ser accedida desde cualquier lugar de nuestro sitio.
- posts(): Extrae todos los post guardados.
- page(): Retorna la página por medio del URI (https://es.wikipedia...cursos_uniforme), esta URI es la cadena que indicamos en el contenido como alias en nuestra base de datos.
- site_info(‘nombre_variable’): Retorna la información global del sitio, como el título, la dirección, la geolocalización, etc. Dependiendo de los campos que hayamos configurado para nuestro sitio.
- page_info (‘nombre_variable’): Esta función es igual que site_info, solo que nos va a extraer la información de una página en específico. Como el título, el contenido...
- analizadorContenido: Será el encargado de llamar las funciones que indiquemos en el contenido del post o página que creemos, dichas funciones deben tener el formato [nombreFuncion], o [nombreFuncion:param1,param2]. Si has trabajado con CMS como Wordpress esto lo llaman Shortcode.
Y ¿Por qué snippets.php está vácio?. Simple, en este archivo vas a crear tus funciones personalizadas para el sitio que vayas a hacer.
Ahora creemos el archivo donde se va a visualizar todo en nuestro sitio web, index.php y lo guardado en el directorio public.
Código index.php
<?php require_once(dirname(__FILE__) . '/../setting/core.php' ); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title><?= site_info('titulo') .' - '. page_info('titulo') ?></title> </head> <body> <h1><?= site_info('titulo') ?></h1> <?= page_info('contenido') ?> <small><?= site_info('titulo') ?> todos los derechos reservados. Dirección: <?= site_info('direccion') ?></small> </body> </html>Como queda nuestro CMS hasta ahora.
Si visualizamos todo con http://localhost/cms/public/ nos saldrá lo siguiente.
Enhorabuena! Hemos finalizado nuestro CMS!
Lo que nos queda ahora es hacer pruebas de todo el poder que tenemos con lo que hemos creado.
Muchas gracias, es un tutorial que voy a leerlo con calma. Lo he visto por encima y es super completo. Saludos.