Login
Main menu

Componente One Page Checkout y error: Cannot redeclare geoip_country_code_by_name()

Hoy me he levantado con la desagradable sorpresa de que varios clientes de una tienda me enviaban correos diciendo que no podían realizar pedidos que les aparecía una página de error. La sopresa no sólo es desagradable por el problema en si, sino porque te surge la duda de ¿cuántos pedidos habré perdido?. No todos los clientes se molestan en comunicarte el error. Por lo que vaya ahí mi agradecimiento a aquellos que lo hacen, entre otras cosas porque están verdaderamente interesados en el producto.

 

Bien, me dispuse a reproducir el error, y efectivamente cuando le daba al botón de realizar pedido, que en este caso nos lleva a una única página de compra montada con el famoso componente One Page Checkout de IWD, me encuentro con un error: 

El Problema

Cannot redeclare geoip_country_code_by_name()

A continuación me mostraba la ruta del fichero que producía el error.

Empecé a Googlear, y revisar mensajes de foros, hasta que di con uno lo suficientemente reciente y que reproducía el error exactamente igual.

La solución

Editamos el fichero: raiz_de_instalacion_magento/lib/MaxMind/GeoIP/geoip.inc

Buscamos el trozo de código siguiente:

function geoip_country_code_by_name($gi, $name) {
  $country_id = geoip_country_id_by_name($gi,$name);
  if ($country_id !== false) {
        return $gi->GEOIP_COUNTRY_CODES[$country_id];
  }
  return false;
}
function geoip_country_name_by_name($gi, $name) {
  $country_id = geoip_country_id_by_name($gi,$name);
  if ($country_id !== false) {
        return $gi->GEOIP_COUNTRY_NAMES[$country_id];
  }
  return false;
}

Y lo sustituimos por este (previa copia del fichero por si acaso):

if (!function_exists('geoip_country_code_by_name')){
    function geoip_country_code_by_name($gi, $name) {
      $country_id = geoip_country_id_by_name($gi,$name);
      if ($country_id !== false) {
            return $gi->GEOIP_COUNTRY_CODES[$country_id];
      }
      return false;
    }
}
if (!function_exists('geoip_country_name_by_name')){
    function geoip_country_name_by_name($gi, $name) {
      $country_id = geoip_country_id_by_name($gi,$name);
      if ($country_id !== false) {
            return $gi->GEOIP_COUNTRY_NAMES[$country_id];
      }
      return false;
    }
}

Y el carrito de compra me ha vuelto a funcionar con normalidad.

Modificado por última vez enMartes, 11 Noviembre 2014 17:28
Valora este artículo
(0 votos)

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.

volver arriba