Prestashop。如何将订单条形码添加到mailalert模块?

问题描述:

我想将我们的内部参考号码作为条形码添加到mailalert。Prestashop。如何将订单条形码添加到mailalert模块?

我可以插入到PDF发票,与此代码

<tr> 
<td style="width: 17%"></td> 
<td style="width: 83%"> 

{assign var=black value=[0,0,0]}{assign var=white value=[255,255,255]} 
{assign var=stuff value=['position'=>'S', 'border'=>false, 'padding'=>4, 
'fgcolor'=>$black, 'bgcolor'=>$white, 'text'=>false, 'font'=>'helvetica', 
'fontsize'=>8, 'stretchtext'=>4]} 
{assign var=params value=TCPDF::serializeTCPDFtagParameters(array($order- 
>getUniqReference(), 'C39', '', '', 40, 15, 0.4, $stuff, 'N'))} 
<tcpdf method="write1DBarcode" params="{$params}" /> 

</td> 

,但我想的订单确认邮件中插入。 如何将订单号转换为条形码?在mmy php/html中使用... 谢谢

我认为你在这里有几个选择。由于我不知道PHP或Prestashop,我不能给你代码,但我想提出一些想法。

条形码字体

有条形码字体,这将允许你嵌入条形码为普通文本。这里的问题是您的确认电子邮件的收件人可能没有安装这些字体,所以如果您可以使用这个字体取决于具体情况。

  • 如果你知道的确认电子邮件提前接受者(如经常与一组有限的客户的B2B的情况下),你最终也可以指导用户安装所需的字体。

  • 如果您正在处理未知收件人,您可以尝试将字体嵌入到HTML中。我知道现在大多数浏览器都正确处理嵌入字体,但我不确定电子邮件客户端是否也是如此。它可能取决于收件人使用的电子邮件客户端。

鉴于此,使用条码字体将是理想的从视图(重量轻,速度快,自然的文本以某种方式)技术的角度,但不幸的是,总会有不有安装的字体谁也人或者谁正在使用过时的电子邮件客户端。

条形码作为图片

我敢肯定,有库在那里它可以生成条码为图像。几乎所有的电子邮件客户端都能正确处理嵌入的图像,并且能够以内联方式显示它们,所以这是我可能采用的路线。

如果您绝对找不到这样的库,您仍然可以生成只包含条形码(来自您的问题,我们知道您能够这样做)的PDF,然后将该PDF转换为图像。我个人知道有很多库可以做后者。

然后将该图像作为嵌入图像嵌入到HTML电子邮件中。

其他解决方案

我深信,有对这个问题有更多的解决方案。例如,您可能可以使用某个库以SVG格式输出条形码。大多数浏览器都正确显示内联SVG,但与嵌入字体一样,我不确定电子邮件客户端。您可能会遇到与其他解决方案/格式类似的问题。

我发现转换订单号条码图像解决方案与此脚本

https://www.codeproject.com/Articles/146336/Creating-a-Code-39-Barcode-using-HTML-CSS-and-Java

但我有问题,将其插入上Mailalert邮件内。

我试图插入脚本直接邮件,但probabily就是应该modifiy mailalert.php

<script type="text/javascript" src="code39.js"></script> 
    <style type="text/css"> 
    #barcode {font-weight: normal; font-style: normal; line-height:normal; sans-serif; font-size: 12pt} 
    </style> 
</head> 
<body> 


Input : {order_name}<br /> 


<div id="externalbox" style="width:5in"> 
<div id="inputdata" >{order_name}</div> 
</div> 


<br /> 


<script type="text/javascript"> 
/* <![CDATA[ */ 
    function get_object(id) { 
    var object = null; 
    if (document.layers) { 
    object = document.layers[id]; 
    } else if (document.all) { 
    object = document.all[id]; 
    } else if (document.getElementById) { 
    object = document.getElementById(id); 
    } 
    return object; 
    } 
get_object("inputdata").innerHTML=DrawCode39Barcode(get_object("inputdata").innerHTML,0); 
/* ]]> */ 
</script> 

谁能帮助我吗?谢谢