Publi

  • Cómo instalar o migrar el TPV de Redsys en tu web (nueva versión SHA256)

    negativespace1-21

    Hoy vamos a hablar de Redsys, una plataforma de comercio electrónico seguro que cubre el proceso completo de compra online, desde el acceso a la página web del comercio, hasta el proceso de autorización del pago, previa autentificación del cliente.

    ¡ Este post es una colaboración ! Y debemos agradecérselo a

    Cristina Soler. (@cso1992). Desarrolladora de aplicaciones web, solucionadora de problemas (hace maravillas con PHP y Javascript) y amante de los animales

    Y mi primera colaboración en el blog con un post que seguro que a más de uno le interesa, la reciente migración de SHA1 a SHA256 en los TPV de Redsys.

    Leer artículo completo
  • Comparativa de acceso rápido y seguro a un elemento de un array unidimensional [PHP]

    477292813_c913243065_o

    Nota: Si usas algún Framework PHP, lo más seguro que estas funciones no te sirvan, ya que muchos Frameworks suelen tener cosas parecidas, más o menos completas que hacen lo mismo. Si eres de los que trabajan «a pelo», estás creándote tu propio framework, tal vez te interese todo esto.

    Acceso simple a un elemento de un array

    Esto es una tarea sencilla en PHP, sólo tenemos que poner entre corchetes la clave a la que queremos acceder y podremos acceder a su valor:

    1
    2
    3
    <?php
    $miArray['precio']=12.34;
    echo $miArray['precio'];

    Aunque, el problema viene cuando dicha clave no existe, veremos una notificación de PHP indicando que el índice especificado no existe:

    PHP Notice: Undefined index: precio in /home/pruebas/test.php on line 3
    PHP Stack trace:
    …..

    Leer artículo completo
  • Obtener diferencia entre una zona horaria y UTC en PHP

    2744390812_c6e2aa449b_o

    Puede parecer extraño pero, a veces, cuando nuestros visitantes son de diferentes franjas horarias conviene adaptar las horas a cada uno de los usuarios. No es plan que en pleno 2015 obliguemos a los usuarios a hacer las conversiones.

    También es posible que, estemos extendiendo un CMS que ignore por completo el default_timezone_set o que lo defina a placer, y nos encontremos en un dilema cuando tenemos que tratar con la hora.… Leer artículo completo

  • Creando un modelo sencillo en Magento (paso a paso y con ejemplos)

    Anteriormente vimos cómo crear un plugin para Magento y cómo crear un controlador para Magento. Ahora le toca el turno al modelo. Intentaré poner con todo detalle todo el proceso.
    Por eso, vamos a editar app/code/local/NuestraEmpresa/nuestroPlugin/etc/config.xml, en nuestro ejemplo app/code/local/Poesia/HolaMundo/etc/config.xml para indicar que vamos a crear modelos y las conexiones de base de datos que se deben utilizar para el acceso. He pegado el archivo entero, pero indico con un comentario las novedades:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    Opcionalmente podemos poner un comentario contando qué hace nuestro módulo, nuestra web,
    información sobre la licencia, etc
    -->
    <config>
        <modules>
            <Poesia_HolaMundo> <!-- namespace_modulo -->

                <!-- Esta es la versión de nuestro módulo -->
                <version>0.0.1</version>

            </Poesia_HolaMundo>
        </modules>

        <frontend>
          <!-- Lo que necesitamos para utilizar los controladores -->
          <routers>
        <holaMundo>
          <use>standard</use>
          <args>
            <module>Poesia_HolaMundo</module>
            <frontName>hm</frontName>
          </args>
        </holaMundo>
          </routers>
          <!-- Lo que necesitamos para utilizar los controladores -->
          <!-- Lo que necesitamos para el layout y las plantillas -->
          <layout>
        <updates>
          <holamundo>
            <file>poesia.xml</file>
          </holamundo>
        </updates>
          </layout>
          <!-- Lo que necesitamos para el layout y las plantillas -->
        </frontend>
        <!-- Necesario para informar a Magento sobre nuestro modelo -->
        <global>
          <models>
        <holamundo>
            <class>Poesia_Holamundo_Model</class>
            <resourceModel>holamundo_resource</resourceModel>
        </holamundo>
        <holamundo_resource>
            <class>Poesia_HolaMundo_Model_Resource</class>
            <entities>
            <pventamod>
                <table>poesia_postvtable</table>
            </pventamod>
            </entities>
        </holamundo_resource>
          </models>
          <resources>
            <holamundo_setup>
              <setup>
                <module>Poesia_HolaMundo</module>
              </setup>
              <connection>
                <use>core_setup</use>
              </connection>
            </holamundo_setup>
            <holamundo_write>
              <connection>
                <use>core_write</use>
              </connection>
            </holamundo_write>
            <holamundo_read>
              <connection>
                <use>core_read</use>
              </connection>
            </holamundo_read>
          </resources>

        </global>
        <!-- Necesario para informar a Magento sobre nuestro modelo -->
    </config>

    Ahora creamos el modelo (le intento dar a todo nombres diferentes para que veamos qué es cada cosa).… Leer artículo completo

  • Creando un controlador en Magento (paso a paso)


    Hace un tiempo comentábamos cómo crear un plugin para Magento. Ahora, vamos a completar ese plugin creando un controlador (y nos metermos ligeramente con las plantillas) para crear algo funcional dentro de nuestra instalación de Magento.

    Antes de nada, advertir que el tema de las mayúsculas y minúsculas tanto en nombres de archivos como nombres de módulos es un poco delicado, por lo que si queremos curarnos en salud, debemos elegir un nombre lo más sencillo posible.… Leer artículo completo

  • Borrar la caché de Magento desde la línea de comandos

    Foto: Steve Jurvetson (Flickr CC)

    Cuando estás haciendo muchos cambios en una instalación de Magento, debes borrar la caché a menudo. Un caso especial es si utilizas scripts periódicos para actualizar listas de precios o stock, en ese caso debes programar también el borrado de cachés.

    Este pequeño script ha sido visto en muchas webs por lo que no me extenderé mucho y mencionaré dos fuentes donde podéis consultarlo (os invito a visitar estas páginas porque amplían la información que veis aquí).… Leer artículo completo

  • Cómo encontrar la ruta de un elemento dentro de una jerarquía en PHP

    Hace poco, hablábamos de cómo generar un array que contuviera una jerarquía de elementos, vimos cómo podíamos generarlo de forma muy rápida una vez tenemos todos los elementos en una lista en la que previamente indicamos el padre de cada uno de ellos.

    El problema hoy es algo distinto, tenemos esa jerarquía o árbol, y queremos encontrar la ruta hacia arriba, es decir, todos los elementos por los que tenemos que pasar para llegar hasta un elemento dado.… Leer artículo completo

  • Magento: insertar bloques CMS dentro de nuestras plantillas

    Para dar flexibilidad a nuestros desarrollos con Magento y con el fin de permitir a los usuarios administradores cambiar fácilmente el contenido de su tienda hecha con Magento. Una buena opción es facilitar bloques estáticos de CMS dentro de nuestras plantillas. Por ejemplo, podemos empotrar un texto dedicado a la manipulación y al envío dentro de cada producto; o, es más, podemos tener varios modelos de bloques de manipulación y envío y que sea un atributo del artículo el que decida qué bloque mostrar.… Leer artículo completo

  • Magento: Conocer qué página de CMS se está visualizando ahora mismo


    Puede ser muy útil, sobre todo cuando estamos creando o modificando las plantillas principales de nuestro tema en Magento saber si la página actual se trata de una página de CMS. Esto lo podemos saber muy fácilmente con:

    1
    $route = Mage:app()->getRequest()->getRouteName();

    La variable route tendrá el valor «cms» si se trata de una página CMS, o podrá obtener el valor de la ruta del controlador actual (dependiendo de si estamos en el carrito, página de categoría, producto, dentro de un plugin, etc).… Leer artículo completo

  • Magento: Saber si estamos en la página principal (home page)

    Cuando estamos trabajando con Magento, en ocasiones necesitamos conocer si actualmente nos encontramos en la home de nuestro sitio o en cualquier otra página. Normalmente, la home, tendrá un diseño diferente y por eso debemos diferenciarla de las demás.

    Para ello, desde Magento 1.5+ tenemos una función que nos puede ayudar mucho en esta misión. Si nos encontramos en el header.phtml podemos comprobarlo llamando a:

    1
    2
    3
    4
    if ($this->getIsHomePage())
      echo "Estoy en la HOME";
    else
      echo "No estoy en la HOME";

    Pero si nos encontramos en cualquier otra plantilla, tenemos que llamar a esa misma función que se encuentra en el header, para ello obtenemos el singleton del header y se lo preguntamos:

    1
    2
    3
    4
    if (Mage::getBlockSingleton('page/html_header')->getIsHomePage())
      echo "Estoy en la HOME";
    else
      echo "No estoy en la HOME";

    O también podemos asignar el valor de Mage::getBlockSingleton(‘page/html_header’)-getIsHomePage() a una variable local y utilizar su valor en nuestra plantilla.… Leer artículo completo