Magento

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

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>

Eliminar pedidos desde el Backend de Magento

0

Magento no dispone de un sistema para eliminar los pedidos. Permite cambiarles es estado a “Cancelar” pero no borrarlos.

Para eso existen componentes que no permiten hacerlo.
Hemos probado la siguiente con resultados satisfactorios

http://www.magentocommerce.com/magento-connect/seamless-delete-order.html

Una vez instalado añade una nueva opción el las acciones de los pedidos.

Eliminar pedidos de prueba y clientes de prueba de Magento

0

Con Magento es normal hacer pruebas en una tienda que luego se pasa a producción.
Al haber configurado multiples parametros (metodos de envio, metodos de pago….) es indispensable pasar la base de datos de test a producción pasando también todas las pruebas.

Magento no lleva de serie un sistema para borrar pedidos. Aun así la manera mas fácil sería borrarlos de golpe mediante SQL.

Aquí tenemos el script necesario para eliminar los pedidos de prueba de Magento. Para las ordenes elegiremos el que necesitemos según nuestra base de datos

/* reset orders 1 */
TRUNCATE `sales_order`;
TRUNCATE `sales_order_datetime`;
TRUNCATE `sales_order_decimal`;
TRUNCATE `sales_order_entity`;
TRUNCATE `sales_order_entity_datetime`;
TRUNCATE `sales_order_entity_decimal`;
TRUNCATE `sales_order_entity_int`;
TRUNCATE `sales_order_entity_text`;
TRUNCATE `sales_order_entity_varchar`;
TRUNCATE `sales_order_int`;
TRUNCATE `sales_order_text`;
TRUNCATE `sales_order_varchar`;
TRUNCATE `sales_quote`;
TRUNCATE `sales_quote_address`;
TRUNCATE `sales_quote_address_decimal`;
TRUNCATE `sales_quote_address_int`;
TRUNCATE `sales_quote_address_text`;
TRUNCATE `sales_quote_address_varchar`;
TRUNCATE `sales_quote_decimal`;
TRUNCATE `sales_quote_entity`;
TRUNCATE `sales_quote_entity_datetime`;
TRUNCATE `sales_quote_entity_decimal`;
TRUNCATE `sales_quote_entity_int`;
TRUNCATE `sales_quote_entity_text`;
TRUNCATE `sales_quote_entity_varchar`;
TRUNCATE `sales_quote_int`;
TRUNCATE `sales_quote_item`;
TRUNCATE `sales_quote_item_decimal`;
TRUNCATE `sales_quote_item_int`;
TRUNCATE `sales_quote_item_text`;
TRUNCATE `sales_quote_item_varchar`;
TRUNCATE `sales_quote_rule`;
TRUNCATE `sales_quote_text`;
TRUNCATE `sales_quote_varchar`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;

ALTER TABLE `sales_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_address_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_address_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_address_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_address_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_entity` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_item_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_item_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_item_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_item_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_rule` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_quote_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;

/* reset orders 2*/
SET FOREIGN_KEY_CHECKS=0;

TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_invoiced_aggregated`;            # ??
TRUNCATE `sales_invoiced_aggregated_order`;        # ??
TRUNCATE `log_quote`;
 
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;

/* reset customers */
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;

ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;

-- Reset all ID counters
TRUNCATE `eav_entity_store`;
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;
Go to Top