lunes, 28 de octubre de 2013

Top menu vinculo varios colores / Top menu links with different colors

Modificar el archivo / Modify this file:
modules .>blocktopmenu > blocktopmenu.php

Tenemos que colorcar una clase a cada etiqueta LI del menú .
1. Necesitamos saber que LI pertenece al segundo nivel .
En la función private function getCategory tenemos la varialble $category->level_depth que indica el nivel de la categoría.

We need a class in the LI label
We need to know with LI belongs to the second level
In the function private function getCategory the variable $category->level_depth shows the category level.

Según las categoráis prestashop:
Acording to the prestashop category:

Inicio (Nivel 1)
      Cat(Nivel 2)
            Cat(Nivel 3)
      Cat(Nivel 2)
      Cat(Nivel 2)

Así que vamos a poner una condicion que discrimine los niveles 2. Dentro de la misma función sustituimos:
Introduce a condition to differentiate levels. In the same function replace:
$this->_menu .= '<. li '.$selected.'>';
por / to
if ($category->level_depth == 2){
                $this->_menu .= '<.li '.$selected.' class='aqui ira la clase /the style will place here'>';
                $this->contstile ++;
            }else{
                $this->_menu .= '<.li '.$selected.'>';
            }

        
2. Colocar el estilo que queremos. Inicializamos dos variables generales en la clase y colocamos debajo de las que hay:
Place the stile you want. Initialize two general variables and place beneath the actuals.
class Blocktopmenu extends Module
{
    private $_menu = '';
    private $_html = '';
    private $user_groups;


private $topstile= array('unotopmenu','dostopmenu','trestopmenu', 'cuatrotopmenu','cincotopmenu','seistopmenu','sietetopmenu' ,'ochotopmenu','nuevetopmenu','dieztopmenu','oncetopmenu'); <-- array="" br="" con="" estilos="" los="" name="" of="" style.="" the="" with="">
 private $contstile=0; <-- comment-----="" contador="" counter="">

Colocamos en el LI la clase que corresponde / Place in the LI at the class belonging.

if ($category->level_depth == 2){
                $this->_menu .= '<.li '.$selected.' class='.$this->topstile[$this->contstile].'>'; <-- br="" el="" estilo="" here="" inserta="" la="" moviendo="" moving="" nbsp="" place="" the="" variable.="" variable="">                $this->contstile ++;
            }else{
                $this->_menu .= '<.li '.$selected.'>';
            }



3. Colocar la clase de color que queremos en el css / Place the styles with the colocr in the CSS:
module>blocktopmenu>css>superfish-modified.css
.unotopmenu{  background-color:#C0F;}
.dostopmenu{background-color:#CC3;}
...




Escalar logotipo en plantilla movil de prestashop 1.5 / Scale logo in the mobile prestashop theme 1.5

Cuando subimos el logotipo a prestashop en la versión movil se reescala sólo horizontal.
Para quitar esta opción y no se deforme.
Uploaded logo on prestashop in the mobile version 1.5 logo scales only with. 
To take off this option and loss of shape:

Modificar el archivo Modify file:
themes>defatult>mobile>header.tpl

linea /line: 67
{$shop_name|escape:'htmlall':'UTF-8'}

Borrar /delete:
{if $logo_image_width}width="{$logo_image_width}"{/if} {if $logo_image_height}height="{$logo_image_height}" {/if}

viernes, 27 de septiembre de 2013

Install prestashop in other server and security copy

http://vimeo.com/deliacampo/migracion-prestashop

Tabla / Table:                   ps_configurations > ps_shop_domain
Archivo / file config:          config > settings.inc.php


Copia de seguridad desde prestashop / Security copy form prestashop
 Parametros avanzados > copia de seguridad


Procedimiento para restaurar una base de datos de copia de seguridad en 10 pasos fáciles
  1. Elija « No » en la sección « Activar Tienda » de la pagina « Mantenimiento “ situada en el menú “Preferencias”.
  2. Descaragar el archivo de copia de seguridad a partir de la siguiente lista o en su servidor FTP (en el archivo "admin/backups").
  3. Comprobar la integridad de copia de seguridad: buscar errores, archivo incompleto... Compruebe todos sus datos.
  4. Pregunte a su proveedor de hosting para que "phpMyAdmin" acceda a su base de datos
  5. Conectar a "phpMyAdmin" y seleccionar su base de datos actual
  6. Si no ha habilitado la opción "Suprimir las tablas existentes durante la importación", debe suprimir todas las tablas presentes en su base de datos actual.
  7. En la parte superior de la pantalla seleccione la opción "Importar"
  8. Pulse en "Examinar ..." y seleccione el archivo de copia de seguridad de su disco duro
  9. Compruebe el tamaño máximo de archivo permitido (por ejemplo, máximo: 16 MB)
    Si el peso de su archivo de copia de seguridad es demasiado importante, póngase en contacto con su hosting
  10. Pulse en el botón "Go" y espere durante la importación, el proceso puede tardar varios minutos

Recursos diseño grafico y web / sources graphic and web design

http://lauralofer.com/8-webs-con-recursos-gratuitos-para-disenadores/

miércoles, 18 de septiembre de 2013

Error: Install demonstration data / Instalación de los archivos de prueba

Cuando isntalas Prestashop, resulta que se crean todas las tablas pero no se puede colocar los archivos de imagen de los productos de prueba.
Una posible solución, es que cuando creas un nuevo hosting con PHP automaticamente se crea en modo seguro. Desactivalo en el Plesk, alojamiento>Configurar.

At the end of the Prestashop instalation, all the tables are created but it shows you and error which doesnt allow to introduce de test products.
A possible solution is, when you create a new host with PHP by default you do in safe mode. Desactivate this option in Plesk. host > Configurate.

Landing pages

Como diseñar páginas iniciales para atrapar la vista de los visitantes.

How to design website to hijack your visitors eyes.

http://thelandingpagecourse.com/landing-page-design-principles-for-conversion/?utm_source=Ecourse&utm_campaign=LPCC&utm_content=buffer93a48&utm_medium=twitter

martes, 3 de septiembre de 2013

Cómo Migrar Prestashop 1.5 de servidor

A veces queremso copiar nuestro prestashop a otro servidor. Aquí hay un buen post donde los explica.

http://www.mattexe.com/como-migrar-prestashop-1-5-de-servidor/

lunes, 5 de agosto de 2013

Menú desplegable oculto

Al colocar un menú desplegable en prestashop en la cabeza se qeudaba oculto.
Esto es por que en el div #header está la propiedad overflow: hidden; elimina y ya se verá el menú desplegable.

viernes, 2 de agosto de 2013

Hooks nuevos en Prestashop con categorías

Al final me ha tocado ponerme con prestashop para las tiendas. Es un cms bastante completo y no muy complejo una vez que entiendes el sistema. A diferencia con Wordpress, Prestashop compila los archivos mediante smarty utilizando para ello los archivos php y los tpl.

Cada vez que modificar un archivo hay que compilarlo, para ello abre el panel de control y en:
Preferencias>rendimiento 
Forzar compilación y de paso pon que no se almacene caché.

Vamos al grano:

CREAR UN NUEVO HOOK

1. Crear una nueva entrada en la base de datos en la tabla ps_hook
INSERT INTO `ps_hook` (`name`, `title`, `description`) VALUES ('Hooknuevo', 'Nombre que se mostrará al usuario', 'Descripcion del hook para mostrar al usuario');

2. Modificar el archivo /classes/FrontController.php
Verás un código como este:
self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn') 


Insertar nuestro nuevo hook con la nomenclatura correspondiente:
self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn') 

'HOOK_MIONUEVO' => Module::hookExec('Hooknuevo') 

Con esto indicamos como vamos a llamar desde los templates a nuestro nuevo hook que contendrá un módulo.
Por ejemplo en el archivo header.php como eras {$HOOK_TOP}, puedes colocar un {$HOOK_MIONUEVO}

3, Ahora tenemos que indicar los módulos que pueden ir en nuestro hook para que el programa desde el panel de control nos permita modificarlo.
E inserto este código:
public function hookHooknuevo($params) { return $this->funcionquequeremso( $params ); }
En este caso recupero el valor de una variable global de la clase y la incorporo a mi hook. Pero podeis escribir vuestra nuevva función.
Ejemplo en /modules/blockcategories/blockcategories.php para crear un menu de categorías en la cabeza.
public function  hookHooknuevo($params) {
        global $smarty, $cookie;

        $id_customer = (int)($params['cookie']->id_customer);
        // Get all groups for this customer and concatenate them as a string: "1,2,3..."
        $groups = $id_customer ? implode(', ', Customer::getGroupsStatic($id_customer)) : _PS_DEFAULT_CUSTOMER_GROUP_;
        $id_product = (int)(Tools::getValue('id_product', 0));
        $id_category = (int)(Tools::getValue('id_category', 0));
        $id_lang = (int)($params['cookie']->id_lang);
        $smartyCacheId = 'blockcategories|'.$groups.'_'.$id_lang.'_'.$id_product.'_'.$id_category;

        $smarty->cache_lifetime = 31536000; // 1 Year
        Tools::enableCache();
        if (!$this->isCached('blockcategories_header.tpl', $smartyCacheId))
        {
            $maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH');
            if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
                SELECT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite
                FROM `'._DB_PREFIX_.'category` c
                LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.$id_lang.')
                LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`)
                WHERE (c.`active` = 1 OR c.`id_category` = 1)
                '.((int)($maxdepth) != 0 ? ' AND `level_depth` <= '.(int)($maxdepth) : '').'
                AND cg.`id_group` IN ('.pSQL($groups).')
                GROUP BY id_category
                ORDER BY `level_depth` ASC, '.(Configuration::get('BLOCK_CATEG_SORT') ? 'cl.`name`' : 'c.`position`').' '.(Configuration::get('BLOCK_CATEG_SORT_WAY') ? 'DESC' : 'ASC'))
            )
                return;
            $resultParents = array();
            $resultIds = array();

            foreach ($result as &$row)
            {
                $resultParents[$row['id_parent']][] = &$row;
                $resultIds[$row['id_category']] = &$row;
            }
            //$nbrColumns = Configuration::get('BLOCK_CATEG_NBR_COLUMNS_FOOTER');
            $nbrColumns = Configuration::get('BLOCK_CATEG_NBR_COLUMN_FOOTER');
            if (!$nbrColumns)
                $nbrColumns=3;
            $numberColumn = abs(sizeof($result)/$nbrColumns);
            $widthColumn= floor(100/$nbrColumns);
            $smarty->assign('numberColumn', $numberColumn);
            $smarty->assign('widthColumn', $widthColumn);
           
            $blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'));
            unset($resultParents);
            unset($resultIds);
            $isDhtml = (Configuration::get('BLOCK_CATEG_DHTML') == 1 ? true : false);

            if (Tools::isSubmit('id_category'))
            {
                $cookie->last_visited_category = $id_category;
                $smarty->assign('currentCategoryId', $cookie->last_visited_category);
            }
            if (Tools::isSubmit('id_product'))
            {
                if (!isset($cookie->last_visited_category) OR !Product::idIsOnCategoryId($id_product, array('0' => array('id_category' => $cookie->last_visited_category))))
                {
                    $product = new Product($id_product);
                    if (isset($product) AND Validate::isLoadedObject($product))
                        $cookie->last_visited_category = (int)($product->id_category_default);
                }
                $smarty->assign('currentCategoryId', (int)($cookie->last_visited_category));
            }
            $smarty->assign('blockCategTree', $blockCategTree);

            if (file_exists(_PS_THEME_DIR_.'modules/blockcategories/blockcategories_header.tpl'))
                $smarty->assign('branche_tpl_path', _PS_THEME_DIR_.'modules/blockcategories/category-tree-branch.tpl');
            else
                $smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'blockcategories/category-tree-branch.tpl');
            $smarty->assign('isDhtml', $isDhtml);
        }

        $display = $this->display(__FILE__, 'blockcategories_header.tpl', $smartyCacheId);
        Tools::restoreCacheSettings();
        return $display;
    }/* fin nuevo hook */

En este caso me he creado un nuevo tpl para mostrar, que es lo que está en color morado.

4. Hemos creado nuestro hook, le hemos asigniado los módulos/funciones que queremos permitirle mostrar y le hemos indicado una nomenclatura para colocarlo en los tpls.
Ahora sólo nos queda ir al panel de control compilar como he indicado al principio e ir a modulos/posiciones para indicar a nuestro nuevo hook que modulo queremos inisertar. En este caso nos dejará insertar el bloque de categorías como se lo hemos puesto en el archivo php.



viernes, 28 de junio de 2013

Instagram en la web

Poner unas fotos con un hashtag concreto en tu web de instagram:
http://web.stagram.com/tools#blog_parts

viernes, 10 de mayo de 2013

Captcha

He encontrado este blog donde salen los Captcha más interesantes y usados.
http://tympanus.net/codrops/2009/09/22/21-free-captcha-sources/

Efectos javascript sólo con css

http://benschwarz.github.io/gallery-css/#item-3

Iconos para mapas

http://www.webiconset.com/map-icons/

Instalar Mysql en Mac

Hola de nuevo!

Encontré este vínculo que está muy bien, pero voy a modificar algunas cosas que yo no hice o que simplemente han cambiado.
http://www.elguisante.com/2011/12/como-instalar-y-desinstalar-mysql-y-phpmyadmin-en-mac-osx-lion/

En concreto:
- Cambiar la contraseña es entre [].
sudo /usr/local/mysql/bin/mysqladmin –u root password [NUEVOPASSWORD]

- El renombre de PhpMyadmin se puede hacer directamente sobre la carpeta y copiarlo y pegarlo en el directorio local. /usr/local/phpMyAdmin

- Editar config.inc.php de ‘localhost’ a ‘127.0.0.1’ No es necesario si no quereis que nadie entre en vuestro ordenador a ver las páginas y lo quereis de prueba.

Varias instrucciones:
  • Para arrancar la base de datos desde el terminal:
    sudo /usr/local/mysql/support-files/mysql.server start
  • Para pararla:
    sudo /usr/local/mysql/support-files/mysql.server stop
  • Para añadir una contraseña a root:
    sudo /usr/local/mysql/bin/mysqladmin –u root password NUEVOPASSWORD

Conectar a Mysql para verificar:
mysql -u root -p
y luego nos pedira la contraseña