Aquí está el código de ejemplo para un módulo personalizado de Drupal:
Configuración básica Drupal
1.- Instalar Drupal. Necesitamos una base de datos y los archivos de Drupal:
https://www.drupal.org/project/drupal
2.- Instalar y configurar algún tema si es necesario:
https://www.drupal.org/project/project_theme
3.- Instalar módulos básicos:
Wysiwyg: https://www.drupal.org/project/wysiwyg
Bajar librerías de TyniMCE (Versión 3.5.11):
O de CKEditor:
http://ckeditor.com/download
En este último caso modificar la línea 81 de sites\all\modules\wysigyg\editors\ckeditor.inc por esta:
if (preg_match(‘@version:\”(?:CKEditor )?([\d\.]+)(?:.+revision:\”([\d]+))?@’, $line, $version)) {
Las tenemos que guardar en sites\all\libreries
Tenemos que configurar qué editor vamos a usar para cada estilo y los botones que añadiremos a cada uno. ¡Ojo con el BBcode en el tinyMCE, que nos quita las imágenes!
IMCE: Para subir imágenes:
https://www.drupal.org/project/imce
https://www.drupal.org/project/imce_wysiwyg
3.- Menús
Instalar el módulo superfish:
https://www.drupal.org/project/superfish
Y bajar la librería superfish:
https://github.com/mehrpadin/Superfish-for-Drupal/archive/1.x.zip
4.- Vistas
Necesitamos los siguientes módulos:
Chaos Tools
https://www.drupal.org/project/ctools
Views
https://www.drupal.org/project/views
5.- Otros tipos de campos:
Fechas:
http://drupal.org/project/date
Youtube:
https://www.drupal.org/project/youtube
Referencias a nodos:
https://www.drupal.org/project/references
Plugins copia de seguridad
http://www.ipixelestudio.com/mejores-plugins-copia-seguridad-wordpress/
Plugin Frase del día: action, filter y widget
<?php /* Plugin Name: Frase del día Plugin URI: https://es.wikiquote.org/wiki/Portada Description: Muestra una frase del día diferente Author: Jota Peich Version: 1.0 Author URI: http://intelisen.com */ function frase_getFrase() { $upload = wp_upload_dir(); $frases = file($upload['basedir'] . "/frases.txt"); return $frases[rand(0, count($frases) - 1)]; } function frase_ponFrase() { echo frase_getFrase(); } add_action('admin_notices', 'frase_ponFrase'); function frase_filtro($contenido) { return $contenido . "<br/>" . frase_getFrase(); } add_filter("the_content", 'frase_filtro'); class FraseWidget extends WP_Widget { function FraseWidget() { $widget_ops = array('classname' => 'FraseWidget', 'description' => 'Muestra una frase del día'); $this->WP_Widget('FraseWidget', 'Frase del día', $widget_ops); } function form($instance) { $instance = wp_parse_args((array) $instance, array('title' => '')); $title = $instance['title']; ?> <p><label for="<?php echo $this->get_field_id('title'); ?>"><?= _e('Title') ?>: <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" /></label></p> <?php } function update($new_instance, $old_instance) { $instance = $old_instance; $instance['title'] = $new_instance['title']; return $instance; } function widget($args, $instance) { extract($args, EXTR_SKIP); echo $before_widget; $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']); if (!empty($title)) echo $before_title . $title . $after_title;; echo frase_getFrase(); echo $after_widget; } } add_action('widgets_init', create_function('', 'return register_widget("FraseWidget");'));
Crear host virtual
A la hora de desarrollar una web es conveniente tener configurado un host virtual. Así podemos acceder vía una web falsa. Por ejemplo, si estoy desarrollando la web miweb.com, puedo crear un host llamado miweb.dev para el desarrollo que apunte a la carpeta local.
¿Cómo hacerlo? Básicamente hay que hacer dos cosas: decirle a windows que ese dominio es local y configurar un host virtual.
Lo primero se hace en:
C:\Windows\System32\drivers\etc\hosts
Añadiendo lo siguiente:
127.0.0.1 miweb.dev
Lo segundo en C:\xampp\apache\conf\extra\httpd-vhosts.conf
Añadiendo lo siguiente:
<Directory “C:/xampp/htdocs/”>
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
ServerAdmin webmaster@gmail.com
DocumentRoot “C:/xampp/htdocs/miweb”
ServerName miweb.dev
</VirtualHost>
Redirigir un dominio a un hosting
Cuando contratamos un hosting puede ser virtual o compartido, en cuyo caso por lo general nos proporcionan las dns que tenemos que poner en el dominio, o dedicado, en cuyo caso tenemos una ip donde está nuestro alojamiento.
En el primer caso tenemos que introducir las dns en el apartado que para tal fin tenga nuestro dominio:
En el caso de tener una ip tenemos que redirigir los registros:
Guardar datos en options
<?php /* Plugin Name: Guarda datos Plugin URI: https://es.wikiquote.org/wiki/Portada Description: Guarda mi nombre y apellidos y nada más Author: Jota Peich Version: 1.0 Author URI: http://intelisen.com */ add_action('admin_menu', 'guardar_menu'); add_action('admin_init', 'guardar_settings'); function guardar_settings() { register_setting('guardar-group', 'guardar_nombre'); register_setting('guardar-group', 'guardar_apellido'); } function guardar_menu() { add_options_page('Guardar datos personales', 'Guardar datos', 'manage_options', 'guardar-datos', 'guardar_options'); } function guardar_options() { if (!current_user_can('manage_options')) { wp_die('No tiene permiso.'); } ?> <div> <?php screen_icon(); ?> <h2>Guardar datos personales</h2> <form method="post" action="options.php"> <?php settings_fields('guardar-group'); do_settings_fields('guardar-group', ''); ?> <p>Nombre</p> <input size="70" type="text" name="guardar_nombre" value="<?php echo get_option('guardar_nombre'); ?>" /> <p>Apellido</p> <input size="70" type="text" name="guardar_apellido" value="<?php echo get_option('guardar_apellido'); ?>" /> <?php submit_button(); ?> </form> </div> <?php }
Web de temas y plugins
Algunos plugins para WordPress
Integrar foros:
Integrar eCommerce:
Convertir en Wiki:
Página FAQ.
Crear curso:
Galerías de imágenes:
Sliders:
Debuggar con NetBeans
En php.ini:
[XDebug] zend_extension = "C:\xampp\php\ext\php_xdebug.dll" ;xdebug.profiler_append = 0 xdebug.profiler_enable = 1 ;xdebug.profiler_enable_trigger = 0 ;xdebug.profiler_output_dir = "C:\xampp\tmp" ;xdebug.profiler_output_name = "cachegrind.out.%t-%s" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "127.0.0.1" xdebug.trace_output_dir = "C:\xampp\tmp" xdebug.remote_port=9000