sábado, 20 de julio de 2013

Arreglo temporal para el módulo Artículos Archivados (JOOMLA 3.1)

Bueno me he encontrado con un problema que se presenta con el módulo para mostrar una lista con los meses en los que hay artículos archivados en Joomla 3.1.

Si todo fuera bien debería mostrarse un enlace de un mesen concreto si en dicho mes se publicó algún articulo que haya sido archivado. Sin embargo, el módulo muestra un enlace a la lista de artículos de cada mes por cada artículo de dicho mes. Esto hace que si en Junio 2013 tenemos 15 artículos archivados y el módulo lo configuramos para que muestre 15 enlaces... solo veríamos 15 enlaces iguales todos ellos apuntando a la lista de artículos de Junio 2013... en fin, un despropósito.

Desconozco si esto lo consideran un fallo o si simplemente es que está a medio hacer. O también puede ser que mi aun limitado conocimiento de Joomla 3.1 me este jugando una mala pasada. Sea como fuere así es como lo he arreglado.

He modificado el archivo default.php que se encuentra en la carpeta del módulo:
Joomla_path / modules / mod_articles_archive / tmpl /


<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_archive
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
?>
<?php if (!empty($list)) :?>
<ul class="archive-module<?php echo $moduleclass_sfx; ?>">
<?php
//Dos variables
//$link para guardar el enlace asociado a cada elemento de la lista e ir comprando
//$numLinks para contar cuantas veces aparece repetido un enlace.
$link="";
$numLinks=1;
foreach ($list as $ind=>$item) : 
if($link==""){
//Primera enlace de la lista. Simplemente asignamos el valor del enlace.
$link=$item->link;
}
if($link!=$item->link || $ind+1==count($list)){
/* Si el enlace del elemento actual es diferente al que vamos guardando 
* o si estamos en el ultimo elemento de la lista habremos de mostrar 
* el enlace y el acumulado
*/
?>
<li>
<a href="<?php echo $item->link; ?>">
<?php echo $item->text. " (".$numLinks.")"; ?>
</a>
</li>
<?php
/* Si hemos escrito un enlace significa que hay que esperar por si hubiera otro
* de modo que inicializamos el contador y reasignamos el link para comparar
*/
$numLinks=1;
$link=$item->link;
  }else{
//Si no se dan las condiciones antes descritas incrementamos el contador
$numLinks++;
}
endforeach; ?>
</ul>
<?php endif; ?>


La salida que obtengo ahora de este módulo es algo así
  • Enero, 2013 (16)
  • Febrero, 2013 (7)
  • Marzo, 2013 (11)


Espero que a alguien le resulte útil.

miércoles, 20 de marzo de 2013

Añadir Código de barras a la factura en prestashop 1.5

Saludos cordiales.
En la comunidad de Prestashop de G+ de la que soy miembro se comentaba hoy sobre como hacer esto y he encontrado un método bastante sencillo. Usando esta herramienta, php-barcode, y retocando un par de archivos se puede añadir un código de barras EAN13 (por ejemplo) en el centro de la parte superior de nuestra factura.
Descomprimir el archivo.zip dentro de la carpeta tools/ de prestashop. Yo le acorté el nombre para que se llamase solo php_barcode

A continuación modificaremos el contenido de
override/classes/pdf/HTMLTemplate.php

Ese archivo deberá quedar así.


<?php

abstract class HTMLTemplate extends HTMLTemplateCore
{

/**
* Returns the template's HTML header
* @return string HTML header
*/
public function getHeader()
{
$shop_name = Configuration::get('PS_SHOP_NAME');
$path_logo = $this->getLogo();

$width = 0;

$height = 0;



$info_barcode = "1234567890128";
$tipo_barcode = "EAN";


if (!empty($path_logo))
list($width, $height) = getimagesize($path_logo);

$this->smarty->assign(array(
'logo_path' => $path_logo,
'img_ps_dir' => 'http://'.Tools::getMediaServer(_PS_IMG_)._PS_IMG_,
'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'),
'title' => $this->title,
'date' => $this->date,
'shop_name' => $shop_name,
'width_logo' => $width,
'height_logo' => $height,
'barcode_path' => "http://localhost/prestashop/tools/php_barcode/barcode.php?code=".$info_barcode."&encoding=".$tipo_barcode."&mode=jpg&size=2"
));

return $this->smarty->fetch($this->getTemplate('header_barcode'));
}
}

Las lineas resaltadas en rojo contienen la una solución provisional para crear un código de barras EAN13 que contendrá la cadena 1234567890128 en su interior.

Ahora vamos a mostrar ese nuevo dato en la factura.
Dentro de la carpeta pdf/ estan los archivos que conforman las facturas. Crear una copia del archivo header.tpl y llamarlo header_barcode.tpl

Modificarlo para que quede así.


<table style="width: 100%">
<tr>
<td style="width: 33%">
{if $logo_path}
<img src="{$logo_path}" style="width:{$width_logo}px; height:{$height_logo}px;" />
{/if}
</td>
<td style="width: 33%;text-align:center;">
{if $barcode_path}
<img src="{$barcode_path}" alt="barcode" height="{$height_logo}px"/>
{/if}
</td>
<td style="width: 33%; text-align: right;">
<table style="width: 100%">
<tr>
<td style="font-weight: bold; font-size: 14pt; color: #444; width: 100%">{$shop_name|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td style="font-size: 14pt; color: #9E9F9E">{$date|escape:'htmlall':'UTF-8'}</td>
</tr>
<tr>
<td style="font-size: 14pt; color: #9E9F9E">{$title|escape:'htmlall':'UTF-8'}</td>
</tr>
</table>
</td>
</tr>
</table>




Ya podéis disfrutar de vuestro código de barras en la parte superior de la factura. Deberíais poder ver algo así:

Espero que resulte útil.
Disculpadme si con las prisas por explicarlo me he dejado algo en el tintero.

Testeado en prestashop 1.5.2

EDITO

Haciendo uso de la propia clase que trae prestashop se puede añadir el código de barras de igual modo. Lo único que he hecho ha sido crear una herramienta que he ubicado dentro de tools/mybarcode/mybarcode.php

Este archivo se verá tal que así

<?php
require_once('/var/www/prestashop/tools/tcpdf/barcodes.php');
$code=$_GET["code"];
$type=$_GET["type"];
$tcpdfbarcode = new TCPDFBarcode($code, $type);
$tcpdfbarcode->getBarcodePNG(2, 30, array(0,0,0));
?>


Ahora cambiando sutilmente el archivo HTMLTemplate.php que se indicaba más arriba para que apunte a este script en lugar de al php_barcode, ya tendremos el código de barras insertado dentro de la factura.

El aspecto de la factura será así:

martes, 29 de enero de 2013

Selección de idiomas en las publicaciones de Blogger

Hola, bienvenidos

Empiezo este blog escribiendo sobre cómo obtener botones de distintas lenguas, como se puede ver a la derecha, en una entrada que desea publicar en BLOGGER.com.

Esto nos permitiría escribir el post en dos languajes y sólo se mostrará uno de ellos hasta que utilice el buitton para mostrar la otra

Podéis ver la explicación en este siguiente vídeo, o si ya te manejas con los diferentes lenguajes de la web podrás entender directamente el archivo adjunto que está enlazado bajo el vídeo.

Espero que pueda ser útil para alguien.

Hello, welcome

I start this blog writing about how to get buttons of different languages, as you could see to the right, in a post you want to publish in BLOGGER.com.

It would permit us to write the post in two languajes and it only show one of them until you use the buitton to show the other one.

You can see the explanation in this next video, or if you already drive with the different languages ​​of the web can directly understand the attachment that is bound under the video.

I hope it could be usefull for somebody.