Explorando la Categoría: "Frameworks"

Cómo listar los directorios de un directorio con el framework de Joomla

Frameworks, Joomla, Programación

7 de Mayo del 2008

Esta vez voy a anotar un pequeño trozo de código que me ha servido de mucho en mi último trabajo.

No es ningún secreto saber cómo se listan los directorios, pero gracias al API de de Joomla! es mucho más sencillo, además se integra con la capa FTP para solucionar problemas cuando no tengamos permisos de escritura en nuestro script.

Para listar los directorios simplemente puse en siguiente código en el fichero view.html.php de mi componente:

  1. jimport( ‘joomla.filesystem.folder’ );
  2. //Importamos los ficheros necesarios
  3.  
  4. $carpetas = JFolder::folders(JPATH_COMPONENT.DS.‘miDirectorio’);
  5.  
  6. //Obtenemos los directorios, el metodo folders devuelve un array con el nombre de los //directorios
  7.  
  8. if(count($carpetas > 0))
  9. {
  10.     foreach ($carpetas as $carpeta)
  11.     {
  12.             echo "Nombre del directorio: " . $carpeta ;
  13.     }
  14. }else{
  15.     echo “No hay directorios en ” .  JPATH_COMPONENT.DS.‘miDirectorio’;
  16. }
  17.  

Ahora veamos como hacer lo mismo con php sin usar el framework:

(código sacado de la web www.desarrolloweb.com )

  1. $ruta = /path/a/tu/directorio
  2.    // abrir un directorio y listarlo recursivo
  3.    if (is_dir($ruta)) {
  4.       if ($dh = opendir($ruta)) {
  5.          while (($file = readdir($dh)) !== false) {
  6.             //esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio
  7.             //mostraría tanto archivos como directorios
  8.             //echo "Nombre de archivo: $file : Es un: " . filetype($ruta . $file);
  9.             if (is_dir($ruta . $file) && $file!="." && $file!=".."){
  10.                //solo si el archivo es un directorio, distinto que "." y ".."
  11.                echo "Directorio: $ruta$file";
  12.                listar_directorios_ruta($ruta . $file . "/");
  13.             }
  14.          }
  15.       closedir($dh);
  16.       }
  17.    }else
  18.       echo "No es ruta valida";
  19. }
  20.  

Como puedes ver, se comprueba manualmente si el directorio existe con la función is_dir(), esto ya lo lleva implementado el API de Joomla y no hace falta que lo volvamos a hacer si usamos el método folders.

Este es el código del método folders:

  1. function folders($path, $filter = ‘.’, $recurse = false, $fullpath = false, $exclude = array(‘.svn’, ‘CVS’))
  2.     {
  3.         // Initialize variables
  4.         $arr = array ();
  5.  
  6.         // Check to make sure the path valid and clean
  7.         $path = JPath::clean($path);
  8.  
  9.         // Is the path a folder?
  10.         if (!is_dir($path)) {
  11.             JError::raiseWarning(21, ‘JFolder::folder: ‘.JText::_(‘Path is not a folder’).‘ ‘.$path);
  12.             return false;
  13.         }
  14.  
  15.         // read the source directory
  16.         $handle = opendir($path);
  17.         while (($file = readdir($handle)) !== false)
  18.         {
  19.             $dir = $path.DS.$file;
  20.             $isDir = is_dir($dir);
  21.             if (($file != ‘.’) && ($file != ‘..’) && (!in_array($file, $exclude)) && $isDir) {
  22.                 // removes SVN directores from list
  23.                 if (preg_match("/$filter/", $file)) {
  24.                     if ($fullpath) {
  25.                         $arr[] = $dir;
  26.                     } else {
  27.                         $arr[] = $file;
  28.                     }
  29.                 }
  30.                 if ($recurse) {
  31.                     if (is_integer($recurse)) {
  32.                         $recurse–;
  33.                     }
  34.                     $arr2 = JFolder::folders($dir, $filter, $recurse, $fullpath);
  35.                     $arr = array_merge($arr, $arr2);
  36.                 }
  37.             }
  38.         }
  39.         closedir($handle);
  40.  
  41.         asort($arr);
  42.         return $arr;
  43.     }
  44.  

Como puedes comprobar se hacen todo tipo de comprobaciones y nos libra de realizarlas a mano.

Puedes ver más métodos interesantes en la documentación oficial del API de Joomla

Tutorial: Módulos para Joomla! 1.5

Frameworks, Joomla, Programación

10 de Febrero del 2008

Aunque con las extensiones existentes de Joomla tendremos suficiente en la mayoría de los casos, hay ocasiones en que necesitamos algo concreto, como por ejemplo un módulo que muestre los usuarios registrados que cumplan años hoy o uno que muestre los artículos publicados hace un año.
Y eso es precisamente lo que voy a hacer.

En el siguiente tutorial vamos a crear un modulo que consulte a la base de datos y muestre el titulo de los artículos con un enlace al articulo completo.

Hacer un módulo es mucho más sencillo que un componente.

De hecho los módulos están pensados para mostrar datos concretos, como usuarios conectados, datos de contacto, menús etc… que en muchos casos son una simple consulta a la base de datos.

Los módulos se encuentran situados en el directorio modules dentro del directorio de instalación de Joomla y por cada módulo hay una carpeta con nombre mod_nombredelModulo .

Nuestro módulo se va a llamar anyo, por lo tanto la carpeta del módulo se llamará mod_anyo.

La estructura de un módulo es muy simple, tiene un fichero php con el mismo nombre que el módulo, el cual es el punto de entrada, que tomará en control del módulo cuando este sea llamado.

Para separar la lógica de la presentación se ha creado la clase helper, en la cual escribiremos nuestras funciones y de esta forma nuestro código quedará más ordenador y legible. La clase helper se encuentra en el fichero de nombre helper.php en la raíz del directorio del módulo.

Lee el resto de esta entrada »

Enviar correo electrónico con el API de Joomla 1.5

Frameworks, Joomla, Programación

8 de Febrero del 2008

Hoy en el trabajo he necesitado crear un componente para enviar correos electrónicos.

Allí usamos Joomla 1.5 como CMS, así que lo primero que he hecho a sido ir a la página de documentación oficial de Joomla a buscar documentación.

La versión 1.5 acaba de salir, por lo tanto no hay mucha documentación, así que no he encontrado nada.

Después he pensado… pero si Joomla lleva un componente para enviar correos… ¿Cómo lo habrán hecho?

Menos mal, que Joomla es open source y me permite ver como esta hecho por dentro. Me he metido a ver el componente “com_massmail” que lleva instalado Joomla de serie y que posibilita enviar correos masivos.
Lee el resto de esta entrada »

Programación de componentes bajo Joomla! 1.5.

Frameworks, Joomla, Programación

7 de Febrero del 2008

En este post he hecho una recopilación de los tutoriales que he ido escribiendo sobre como crear componentes en Joomla! 1.5 siguiendo el patrón Modelo Vista Controlador.

Tutorial: Componente para Joomla 1.5 IV

Frameworks, Joomla, Programación

7 de Febrero del 2008

El tutorial anterior fue una introducción a la creación de componentes en Joomla 1.5, pero aun faltan muchas cosas.

Faltan cosas como el acceso a datos mediante el framework de Joomla, los tasks y más cosas que se me escapan he iré completando más adelante.

Para la parte de back-end, el sistema es el mismo, lo único que deberemos de ubicar el componente en la carpeta administrator/components . El acceso al componente es por la URL …tuSitio/administrator/index.php?option=com_prueba .

El api de Joomla! nos provee de unos objetos específicos para operar con bases de datos.

Siempre que se pueda es recomendable usar estos objetos, en lugar de conectar directamente con las funciones de mysql que tiene php, ya que el API de Joomla! hace mucho trabajo por debajo, como protección contra inyección Sql, optimización, etc…

Lee el resto de esta entrada »

blank
[x] Cerrar
E-mail