Snippets

Quitar javascript del tema padre en WordPress

Quitar javascript del tema padre en WordPress

He estado un buen rato probando diferentes ejemplos en los que había gente que conseguía quitar, desde un tema hijo, código Javascript del padre. Es algo que yo he necesitado porque no me interesaba ampliar la funcionalidad sino evitar que cierto código mal escrito se ejecutara. En lugar de «guarrear» el tema original y perder los cambios cuando el autor lo actualice (ya me ha pasado), al final he optado por hacer que el Javascript del padre no se cargue para, en su lugar, cargarse uno mío modificado.

Lo que he tenido que hacer entonces es, primero dejar que el tema haga sus cosas, luego eliminar la carga del archivo problemático y luego añadir el mío. Dejo aquí el código porque me ha costado un buen rato encontrarlo:

// Añado mi Javascript 
wp_enqueue_script( 
  "duranda_bbwp_custom_js",
  get_stylesheet_directory_uri()."/javascript/custom.js",
  array( 'triggeronview' ), '', true ); 

// Elimino el del padre
add_action(
  'wp_print_scripts',
  'duranda_theme_setup', 100 );

function duranda_theme_setup() { 
  wp_deregister_script( 'custom' ); 
} 

Con esto y un bizcocho, hasta mañana a las… bueno, hasta mañana a las «no antes de las 12 🙂

A cuidarse!

Acceder al scope de AngularJS desde la consola del navegador

Acceder al scope de AngularJS desde la consola del navegador

Hoy he necesitado hacer unas pruebas y correcciones en el código de un proyecto pero no tenía acceso a la VPN, así que no podía entrar ni a los entornos de pruebas ni al repositorio de código.

Se trataba de una aplicación hecha con AngularJS, así que se me ha ocurrido que, al ser Javascript, a lo mejor podía acceder a las variables desde la consola y hacer las pruebas directamente desde el navegador.

Un tal Michal hablaba de cómo obtener referencias al $scope en esta entrada de su blog. Siguiendo sus ejemplos he conseguido lo que necesitaba, así que lo dejo aquí por si a alguien le sirve:

Una cosa que no sabía es que AngularJS añade a jQuery algunas opciones y utilidades, como la que vais a ver a continuación. Podemos obtener el nodo jQuery del que queremos sacar el $scope, y luego llamar a su método scope, que ha sido añadido por Angular para facilitarnos la vida. Veamos:

var $scope = $('#nuestro_elemento').scope()

Otra forma de conseguir el $scope es utilizar la función element de AngularJS, que espera el nodo asociado. Este parámetro podemos pasarlo de distintas formas, como por ejemplo:

// Mediante el selector CSS
var nodo = '#nuestro_elemento';

// Mediante el nodo jQuery 
var nodo = $('#nuestro_elemento'); 

// Mediante el nodo del DOM
var nodo = document.getElementById('nuestro_elemento');

// Obtenemos el $scope 
var $scope = angular.element(nodo).scope();

Una vez lo tenemos podemos, por ejemplo, modificar una función de validación para que diga que los datos siempre son correctos:

$scope.nombre = 'Luis';
$scope.esNombreValido = function() { return true; }

// Notificamos a AngularJS para que se entere
// de los cambios 
$scope.$apply()

Leyendo la documentación seguro que hay muchas más cosas interesantes para contar, pero eso ya lo dejo para otro día.

Hasta la próxima! 🙂

Reemplazar múltiples ocurrencias de una cadena en Javascript

Reemplazar múltiples ocurrencias de una cadena en Javascript

Cuando tengo que reemplazar una cadena por otra en Javascript tiendo a utilizar la función replace, que en principio parece que debería funcionar. De lo me he dado cuenta hoy es de que esta función sólo reemplaza la primera ocurrencia de la cadena en cuestión.

Esto es suficiente en muchas ocasiones pero en muchas otras necesitamos reemplazar la cadena todas las veces que aparezca en la original.

Buscando por diferentes webs he encontrado varias formas de conseguirlo pero al final he optado por ésta:


var cadena = "limuneru"; var nueva = cadena.split('u').join('o');

Siguiendo esta línea, podemos eliminar todas las ocurrencias de una cadena en otra así:


var cadena = 'El blog de Duranda lalala es genial'; 
var nueva = cadena.split('lalala').join('');

Como veis es un código sencillo pero nunca consigo acordarme. Por eso he pensado que dejarlo aquí sería buena idea,  además de que igual le sirve a alguien más.

Otro día más y mejor! 🙂

Evitar errores en navegadores sin consola

Evitar errores en navegadores sin consola

Un compañero me pasó el otro día una utilidad que me parece muy interesante. Os comento:

Cuando programamos hay veces en los que utilizar la consola del navegador para dejarnos mensajes de depuración nos viene muy bien. El problema aparece cuando el navegador no tiene consola, ya sea porque es viejo o porque se trata de un navegador de un móvil.

Este pequeño javascript evita errores de ejecución cuando el navegador en cuestión no dispone de consola.


// Avoid `console` errors in browsers that lack a console. 
(function() {  
   var method;
     var noop = function () {};
     var methods = [
         'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',         'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',         'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',         'timeStamp', 'trace', 'warn'
     ];

     var length = methods.length;
     var console = (window.console = window.console || {});

     while (length--) {
         method = methods[length];

         // Only stub undefined methods.
         if (!console[method]) {
             console[method] = noop;
         }
     }
 }());

Os dejo el enlace a Github, aquí.

¡Otro día más y mejor!

Utilizar proxy en nuestros programas Java

Utilizar proxy en nuestros programas Java

El siguiente código sirve para utilizar un proxy HTTP en las peticiones que hagamos desde nuestros programas Java. Es necesario si queremos salir al exterior en redes donde toda comunicación con internet pasa por un proxy. Os dejo cómo hacerlo tanto pasando los parámetros al arrancar la JVM como por código.

Como parámetros de arranque:

java -Dhttp.proxyHost=proxyhostURL
       -Dhttp.proxyPort=proxyPortNumber
       -Dhttp.proxyUser=someUserName
       -Dhttp.proxyPassword=somePassword HelloWorldClass

Con código:

System.getProperties().put("http.proxyHost", "someProxyURL");
System.getProperties().put("http.proxyPort", "someProxyPort");
System.getProperties().put("http.proxyUser", "someUserName");
System.getProperties().put("http.proxyPassword", "somePassword");

Lo he encontrado aquí.

Otro día más y mejor! 🙂

Page 1 of 2 1 2