Usando Javascript en Drupal 7, algunos cambios

Haciendo algunos cambios en un theme de Drupal 6 a Drupal 7, he notado que los scripts antiguos no funcionan.

Buscando mucho, he encontrado que jQuerya hora está "namespaced", por lo tanto si tenías un código parecido a este:

JAVASCRIPT:

$(document).ready(function() {
        // Código
});
 

Ahora tiene que ser:

JAVASCRIPT:

(function($) {
    $(document).ready(function() {
        // Código
    });
})(jQuery);
 

Funciona y parece ser la solución final, sin embargo no se si hay otro tipo de solución. Si es asi, házmelo saber.

Actualización

Alejandro Barrio, me escribe y me sugiere que use los "behaviors" de Drupal para agregar los scripts:

Para Drupal 6

JAVASCRIPT:

Drupal.behaviors.exampleModule = function (context) {
    $('.example', context).click(function () {
            $(this).next('ul').toggle('show');
    });
}
 

Para Drupal 7

JAVASCRIPT:

(function ($) {
    Drupal.behaviors.exampleModule = {
        attach: function (context, settings) {
            $('.example', context).click(function () {
                $(this).next('ul').toggle('show');
                });
        }
    };
}(jQuery));
 

De la misma manera Eber Irigoyen sugiere no usar document.ready, sino:

JAVASCRIPT:

jQuery(function ($) {
        // codigo, puedes usar $ sin conflictos
});
 

Gracias por sus aportes 🙂

Enlace: Managing Javascript in Drupal 7

No puedo encontrar mysql al instalar Drupal 7

Hace ya unos años estoy trabajando fuertemente con Drupal 6, sólo hace unas semanas he empezado a usar la versión 7 y me parece un avance excelente. Poco a poco estaré publicando información relacionada a Drupal.

Instalando Drupal 7 bajo Windows y Apache he encontrado que no me da la opción de usar MySQL:

Instalación Drupal y MySQL

Esto es porque ahora Drupal 7 tiene como requerimiento el uso de la extensión PDO, además que requiere MySQL 5.015 o mayor.

Para solucionarlo, sólo debemos abrir el archivo php.ini, buscar y descomentar las líneas que permiten el uso de estas extensiones:

;extension=php_openssl.dll
extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll

Reiniciamos Apache y listo:

Instalación Drupal y MySQL

Es posible que tengas algunos otros errores, si es así, los comentarios están abiertos

Por cosas pequeñas y sencillas... 🙂

Drupal Summit Latino 2011 – Lima, Peru

Por fin podemos anunciar oficialmente el lanzamiento del mayor evento Drupal del año: "Drupal Summit Latino – Lima 2011".

Lima (Perú) alojará el primer evento a nivel latinoamericano dedicado a Drupal los días 27, 28 y 29 de Enero de 2011.

Habrán 36 conferencias dictadas por reconocidos y experimentados drupaleros provenientes de varios países de América Latina, Estados Unidos y Europa.

Se espera la presencia de más de 300 participantes lo que será sin duda alguna, a nivel continental, la mayor concentración jamás vista de experiencia y conocimiento sobre el software de publicación de sitios Web más exitoso del momento: Drupal por supuesto!

Concurso Drupal en tu vida

El evento será la oportunidad de premiar a la mejor fotografía Drupal del año en nuestro continente. El ganador será elegido por la comunidad en el sitio del evento y será premiado con un pack de libros en castellano de la colección Aprende Drupal 6 (Inicial + Intermedio + Avanzado) de FORCONTU.

Así que ingresa al sitio del evento - ! PARTICIPA y GANA !

Keynotes

Como si fuera poco, tendremos también 3 KEYNOTES de infarto! Fran Gil (España), Felix Delattre - xamanu (Alemania) y Fernando P. García – develCuy (Perú) nos hablarán de los temas más candentes del presente y del futuro de Drupal.

! Eso sí que no te lo puedes perder !

Sorteo Curso On-Line FORCONTU durante el evento

Además durante el evento, se sorteará entre todos los participantes un curso integral online de creación y gestión de portales web con Drupal 6 (300 horas de formación online tutorizada, en un período de 5 meses) de FORCONTU.

No pierdas esta increíble oportunidad ! inscríbete ya !

Más información en http://lima2011.drupal-latino.org

Ubercart para productos de tipo “servicio”

Este es un post de varios que empezaremos sobre Drupal.

Ubercart es un poderoso módulo de Drupal para vender productos o servicios.

Por defecto este módulo nos permite crear el tipo de nodo "Producto" con atributos de envío como peso, altura, etc.

Sin embargo unos proyectos que estoy haciendo necesité quitar este tipo de atributos para ofrecer sólo servicios. Un ejemplo sería por ejemplo ofrecer Tours.

Para esto he creado un pequeño módulo que básicamente oculta estos campos usando el hook_form_alter de la API de Drupal sin alterar el core de Ubercart. El código es el siguiente:

PHP:

function uc_service_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == "product_node_form") {
          
          // Precios
          $form['base']['prices']['list_price']["#type"]        = 'hidden';
          $form['base']['prices']['cost']["#type"]                = 'hidden';
          
          // Producto Físico
          $form['base']['shippable']['#type']         = 'hidden';
          $form['base']['shippable']['#default_value']   = FALSE;
          
          // Peso
          unset($form['base']['weight']);
          
          // Dimensiones
          unset($form['base']['dimensions']);
          
          // Cantidades
          $form['base']['default_qty']["#type"]                         = 'hidden';
          $form['base']['default_qty']["#default_value"]        = 0;
          
          unset($form['base']['pkg_qty']);
  }
}
 

Instalación

  1. Descomprimir el archivo
  2. Copiar la carpeta uc_service en /sites/all/modules/ o /modules/ depende donde hayas instalado Ubercart.
  3. Activar el módulo en /admin/build/modules/.
  4. Crear tus productos tipo servicio.

He probado este módulo en algunos sitios y todo va bien, sin embargo cualquier observación háganmelo saber.

Descargar el módulo uc_service.