Añadir codigo verificación google en Magento

0

Cuando damos de alta un sitio en google nos pide que insertemos un codigo de verificación.

En magento es tan sencillo como irse a  Sistema> Configuración> Diseño> HTML  y en la sección Varios Scripts copias y pegas ese codigo.

Esto es un ejemplo del uso de la sección “Varios Script”. Aquí podemos pegar cualquier otra opción (scripts, metas ….) que querámos que aparezca dentro de head.

Ocultar un sitio de test Magento

0

Sucede que mientras está en desarrollo de test de una tienda magento muchas veces google indexa, lo cual puede ser super contraproducente.

Para evitar hay que acordarse de poner el meta robots a noindex,  nofollow.

Esta tarea es muy facil desde magento solo tienes que ir a Configuration -> Design -> HTML Head y seleccionar en Default robots la opción adecuada.

 

Insertar google maps en CMS de Magento

2

Para insertar un mapa de google en una página CMS de Magento lo mejor es insertarlo como Static Block aunque también se puede insertar directamente en la página.
Los pasos son

  1. Buscar la ubicación en google maps
  2. Copiar el código de “Pegar HTML para insertar en sitio web”
  3. Cambiar la vista del edito a show/hide Editor para poder pegar. OJO NO VALE MOSTRAR EL CÓDIGO HTML DEL EDITOR.
  4. Pegar el código de google.

Si se ha hecho como bloque estático solo nos queda insertarlo en la página CMS

Integración de Roundcube con Plesk 10

1

If you prefer to read this post in english, click here.

Como ya hemos comentado en anteriores ocasiones, los webmails incluidos con Plesk 10 no eran de nuestro agrado, así que cuando sustituímos Plesk 9.5 Windows por Plesk 10.3 Linux, decidimos cambiarlo por Roundcube. El problema ha sido que los usuarios han echado de menos cierta funcionalidad de la que disponían con MailEnable, pero lo hemos podido solventar mediante el desarrollo de plugins o drivers para plugins ya existentes, que queremos publicar:

Función Descripción Descarga
Cambio de contraseña Driver para el plugin Password, que permite cambiar la contraseña del buzón utilizando la utilidad CLI mail, provista en Plesk 10.3. Enlace
Mensaje fuera de oficina Driver para el plugin Vacation, que permite establecer una respuesta automática a los correos recibidos, y de forma opcional, reenviar el correo a un tercero, utilizando la utilidad CLI autoresponder, provista en Plesk 10.3. Enlace
Redireccionamiento Plugin nuevo, desarrollado a partir de Vacation, que permite especificar varias direcciones e-mail a las que se reenviarán los correos recibidos, utilizando la utilidad CLI mail, provista en Plesk 10.3. Enlace

Todos los desarrollos asumen que Roundcube se está ejecutando en el mismo servidor que Plesk, y precisan de permisos de ejecución de las utilidades CLI para el usuario que esté ejecutando Apache. La ventaja de llamar nativamente a Plesk es que los cambios realizados en el panel se ven en el webmail, y viceversa, además de que se incluyen en la copia de seguridad de Plesk.

Roundcube and Plesk 10 integration

16

Si prefiere leer esta entrada en castellano, pulse aquí.

As mentioned previously, webmails included with Plesk 10 were not to our liking, so when we switched from Plesk 9.5 Windows to Plesk 10.3, we decided to replace them with Roundcube. The problem was that users have missed some functionality available with MailEnable, but we were able to solve by developing plugins or drivers for existing plugins which we want to publish:

Function Description Download
Password change Driver for Password plugin, which lets users change mailbox password using the CLI utility mail, provided in Plesk 10.3. Link
Vacation message Driver for Vacation plugin, which lets users define an automatic reply to received emails, and optionally, forward emails to third parties, using the CLI utility autoresponder, provided in Plesk 10.3. Link
Forward New plugin, developed from Vacation code, which lets users specify multiple e-mail addresses to which incoming e-mail will be forwarded, using the CLI utility mail, provided in Plesk 10.3. Link

All developments assume that Roundcube is running on the same server as Plesk, and require execute permissions over CLI utilites for user running Apache. The advantage of call natively Plesk through his CLI is that changes made in the panel are shown in the webmail, and vice versa, in addition to being included in the Plesk backup.

Update 23/12/2011: Changed link for Vacation message to GitHub repository, where latest version should be found, with contributions from other authors.

Componente Magento para mostrar los articulos como bloque

0

Hoy me ha surgido la necesidad, aunque resulte raro, de querer mostrar todos los productos de la web (son pocos, 11) en un lateral.
Magento no tiene nada de esto por lo que hemos tenido que hacer un modulo para mostrar todos los articulos como bloque en Magento.
Ya que se hacía lo hicimos parametizable para poder mostrar todos los de una categoría.
Al hacerlo como bloque lo podemos poner donde queramos, izquierda, derecha, como contenido de una página CMS

Aqui está el código
Lo primero es crear un fichero que declare el módulo.
Para eso nos iremos a app/etc/modules y crearemos el fichero Did_All.xml

<?xml version="1.0"?>
<config>
<modules>
<Did_Productsbycategory>
<active>true</active>
<codePool>local</codePool>
</Did_Productsbycategory>
</modules>
</config>

Luego en app/code/local crearemos una carpeta Did y dentro de esta otra con nombre Productsbycategory (el nombre de nuestro modulo).
Una vez ahi creamos la carpeta etc y añadimos un fichero con nombre config.xml donde pondremos

<?xml version="1.0"?>
<config>
<modules>
<Did_Productsbycategory>
<version>0.1.0</version>
</Did_Productsbycategory>
</modules>
<global>
<blocks>
<did_productsbycategory>
<class>Did_Productsbycategory_Block</class>
</did_productsbycategory>
</blocks>
</global>
</config>

En Productsbycategory crearemos otra carpeta que se llame block y dentro crearemos un fichero con nombre View.php

<?php

class Did_Productsbycategory_Block_View extends Mage_Catalog_Block_Product_Abstract

{
    public $_collection;

    public $_categoryName;
    private $_Cat;

      public function setCat($category) {
        $this->_Cat = $category;
    }

    public function getCatName() {
        return $this->_categoryName;
    }

    protected function _getProductCollection() {
        $storeId    = Mage::app()->getStore()->getId();
        $product    = Mage::getModel('catalog/product');
        $category   = Mage::getModel('catalog/category')->load($this->_Cat);
        $this->_categoryName = $category->getName();

        $visibility = array(
            Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
            Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG
        );

        $products   = $product->setStoreId($storeId)
                              ->getCollection()
            ->addAttributeToFilter('visibility', $visibility)
            ->addCategoryFilter($category)
            ->addAttributeToSelect(array('name'), 'inner')
            ->setOrder('name', 'asc')
        ;

        $this->_collection = $products;
        return $this->_collection;
    }

    public function getCurrentCategory() {
        return Mage::getModel('catalog/category')->load($this->_Cat);
    }

    public function getProductCollection() {
        return $this->_getProductCollection();
    }
}

Finalmente crearemos el template.
Dentro de nuestro tema crearemos una carpeta Productsbycategory con un fichero que se llame view.phtml
Este es fichero que mostrará y formateará los resultados.
Aquí esta un ejemplo pero se deberá adaptar para cada template

<?php
$this->_getProductCollection();
if(!$this->_collection->count()): ?>
<div class="note-msg">
    <?php echo $this->__('There are no products matching the selection.') ?>
</div>
<?php else: ?>
<div class="block">
<div class="block-title">
<strong><span><?php echo $this->getCatName(); ?></span></strong>

</div>
<div class="block-content">
<?php //echo Mage::registry('current_category')->getId(); ?>
<ul class="listaproductos">
<?php foreach ($this->_collection as $_product): ?>
            <li><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<?php endif; ?>

Finalmente solo queda especificar su uso.
Nosotros por ejemplo lo hemos actualizado el layout catalog.xml y le hemos añadido.
En el ejemplo pasamos la categoría como 0 para que lo muestre todo, pero se podría poner el Id de una y mostraría solo los de esa.

<reference name="left">
   <block type="did_productsbycategory/view" name="leftprodlist" template="productsbycategory/view.phtml" />
</reference>
<reference name="leftprodlist">
   <action method="setCat"><category>0</category></action>
</reference>

Cambiar posición del simbolo de moneda en Magento

0

Para cambiar el símbolo de moneda en Magento tenemos que cambiar un fichero de ZEND donde se define esto.

Iremos a la carpeta lib/Zend/Locale/data. Aquí están todos los fichero de definición de cada idioma.
Para es español editaremos fichero es.xml

Buscaremos la cadena

<pattern>¤ #,##0.00</pattern>

, mas o menos por la linea 2509 y la sustituiremos por

<pattern>#,##0.00 ¤</pattern>

Al cambiar esto puede que no veamos los cambios. Para esto no vale solo con quitar la cache de Magento también tendremos que borrar
/var/cache
/var/locks
/var/report

Si no borramos esto puede que incluso nos de errores para entrar al administrador.

Si con esto no vale, también habrá que borrar todas las caches del navegador.

Especificar en Magento la cantidad minima en el carrito

1

Es común que la gente al comprar ponga cantidades a 0 o vacias.
También es normal en Magento, por parte del administrador poner la cantidad mínima de producto en el carro.
Es recomendable y necesario especificar un mínimo de producto en el carrito para evitar problemas.

Hay várias manera de hacerlo.

1.- ESPECIFICARLO EN EL PRODUCTO
El los parámetros de inventario del producto hay un parámetro que se llama “Cantidad mínima permitida en el carrito de compras”. Ahí se le puede especificar la cantidad mínima, que por defecto suele venir 0.
Si seleccionamos “Usar las configuraciones de Config”, la opción mas habitual, cogerá la configuración global (ver punto 2).

2.- ESPECIFICACIÓN GLOBAL
Para especificar el valor global por defecto tendremos que

  • Ir al Sistema -> Configuracion -> Inventario-> Opciones de los productos en existencia
  • Hacer click en el botón Add Minimum Qty
  • Seleccionar el grupo de clientes. ALL GROUPS es lo mas normal para aplicarlo a todos los clientes
  • Escribe 1 o la cantidad que quieras como Minimum Qty
  • Guarda la configuración

3.- RETOCANDO EL TEMPLATE
El la forma menos elegante y recomendada pero la pongo por si a alguién le es útil en algún escenario.
Para esto hay que buscar la carpeta
app\design\frontend\default\TUDISEÑO\template\catalog\product\view

Abre el fichero y sobre la linea 35 busca esto:

<input name=”qty” type=”text” id=”qty” maxlength=”12″ value=”<?php echo $this->getMinimalQty($_product) ?>” /></span>

y cambialo por este código

<input name=”qty” type=”text” id=”qty” maxlength=”12″ value=”<?php echo $this->getMinimalQty($_product)== null?1:$this->getMinimalQty($_product) ?>” /></span>

Problemas indexando Magento. Index process is working now

0

El tipiquísimo problema con la indexación “Index process is working now. Please try run this process later.” de Magento se suele resolver borrando o asignado permisos 775 o 777 a los ficheors lock y a la carpeta lock que encontramos en var/locks.

Aun así nos han surgido casos, muy pocos, en los que esto no lo resuelve y no hemos sido capaces de solucionarlo.
Ante esto existe la posibilidad de ejecutar un script por ssh pero, como desgraciadamente, en la mayoría de los casos no hay acceso SSH al servidor no suele ser muy útil.
Por eso optamos, aunque poco elegante, por quitar la comprobación de fichero bloqueado y que ejecute la indexación incondicionalmente.

Para esto hay que editar el fichero Process.php que se encuentra en:
app\core\Mage\Index\Model\Process.php

Sobre la linea 132 existe la funcion reindexAll()
Comentamos la comprobación quedando la función así

 public function reindexAll()
    {
       // if ($this->isLocked()) {
         //   Mage::throwException(Mage::helper('index')->__('%s Index process is working now. Please try run this process later.', $this->getIndexer()->getName()));
//        }
        $this->_getResource()->startProcess($this);
        $this->lock();
        $this->getIndexer()->reindexAll();
        $this->unlock();
        $this->_getResource()->endProcess($this);
    }

Quitar tasa mayor de 0 en los tipos Fixed Product Tax de magento

0

Magento tiene un tipo de atributo para los productos llamado Fixed Product Tax.
Este tipo de tasa se invento para las ecotasas (por eso las tablas y el componente se llama weee “waste of electrical and electronical equipment”) que son tasa de importe fijo para el producto.
El tiempo y la necesidad ha hecho que este tipo de atributo se use para otras cosas.

Nosotros por ejemplo lo hemos tenido que usar para una situación especial en la que un producto de precio único lleva diferentes tipos de I.V.A.
Para mas lio, y dado que el I.V.A. es solo para la peninsula, se tuvieron que crear excepciones.
Inicialmente creamos el impuesto con * para toda España. Luego creamos la excepcion, p.e. CEUTA, con importe 0.
Al guardar resulta que este campo tenía que ser mayor de 0.

Para quitar la obligatoriedad de mayor de 0 es tan facil como retocar el template de administracion de weee.
El fichero se encuentra en app/design/adminhtml/default/default/template/weee/renderer/tax.phtml

En este fichero, mas o menos por la linea 68, tenemos que quitar la validacion “validate-greater-than-zero” dejando solo required-entry.
Antes

 <td>
    <input disabled="no-template" class="<?php echo $_htmlClass ?> required-entry validate-greater-than-zero" type="text" name="<?php echo $_htmlName ?>[__index__][price]" value="'#{price}'" />
 </td>

Despues

 <td>
   <input disabled="no-template" class="<?php echo $_htmlClass ?> required-entry" type="text" name="<?php echo $_htmlName ?>[__index__][price]" value="'#{price}'" />
 </td>
Go to Top