Acrobat X Pro: PDF Flattener Preview bug workaround

Tried to outline fonts inside Illustrator and the PDF exported shows random distortions like wider Ls here and there. If we export the file as a PDF with the fonts as is, there are no issues.

However, have encountered printers who have problems viewing common fonts. So it is a must to ensure fonts are outlined.

Solution: use PDF Flattener within Acrobat X Pro.

BUT there is a bug.

If the fonts used are not “perfect”, the Flattener Preview is unable to outline the fonts.

See solution: https://www.youtube.com/watch?v=U5umF_kTcaA

As a workaround, inside Acrobat
1) Go to Tools (top right corner) > Pages > Add a watermark like a ‘full stop’ to the PDF. Size it down small. Choose 0% Opacity. Click OK.

2) Add the Print Production menu to Tools if it is not enabled by default. Click on the tiny menu list icon under Tools (right)

3) Go to Print Production > Flattener Preview and Tick Convert all text to outlines and convert all strokes to outlines. Then apply to all pages in the document and SAVE the PDF.

4) Final check, view file properties to see if all the fonts are removed.

Joy 🙂

Posted in Adobe, troubleshoot | Tagged , | Comments Off on Acrobat X Pro: PDF Flattener Preview bug workaround

Prestashop: Searching orders by the products they contain via mysql

Source: https://www.prestashop.com/forums/topic/437518-searching-orders-by-the-products-they-contain/?tab=comments#comment-2033625

SELECT product_id, product_attribute_id, product_name, GROUP_CONCAT(id_order SEPARATOR ‘, ‘) AS orders FROM ps_order_detail group by product_name order by product_id, product_attribute_id

Can add where product_id = to the number you want to narrow down the specific product

SELECT product_id, product_attribute_id, product_name, GROUP_CONCAT(id_order SEPARATOR ‘, ‘) AS orders FROM ps_order_detail where product_id = XYZ group by product_name order by product_id, product_attribute_id

Posted in database | Tagged , , | Comments Off on Prestashop: Searching orders by the products they contain via mysql

Prestashop: Warehouse theme mobile menu disable link on category parent

File edits are uploaded on:
modules/iqitmegamenu/iqitmegamenu.php
override/modules/iqitmegamenu/iqitmegamenu.php
themes/warehouse/js/modules/iqitmegamenu/js/mlpushmenu.js

1) modules/iqitmegamenu/iqitmegamenu.php
changed private function generateCategoriesMenu($categories, $depth_limit, $depth = 0) to
protected function generateCategoriesMenu($categories, $depth_limit, $depth = 0)

Overrides do not work on private functions. Could have just edited the whole file but did this for future reference.

2) override/modules/iqitmegamenu/iqitmegamenu.php

3) themes/warehouse/js/modules/iqitmegamenu/js/mlpushmenu.js
comment out the script that prepends responsiveInykator to the div
comment out the script that changes + to –
leave this as standalone so that the submenu shows when tapped on $(this).parent().children(‘ul’).slideToggle(300);

Posted in ecommerce, modules | Tagged , | Comments Off on Prestashop: Warehouse theme mobile menu disable link on category parent

Prestashop: Fix layered navigation block doesn’t keep order position of filters

Solution: https://www.prestashop.com/forums/topic/317265-layered-navigation-block-dont-keep-order-position/?do=findComment&comment=2128180
https://github.com/musicpanda/blocklayered/commit/c53257c6cefcf5551d1f3cd51268fde658c1ad6b?diff=unified
Info: It repairs one file: blocklayered_admin.js in the module
/modules/blocklayered/blocklayered_admin.js

If you’re using other themes look for the corresponding file to make the change
e.g. warehouse theme
/modules/blocklayered_mod/blocklayered_mod_admin.js
look for

if (typeof filters !== 'undefined')
{
filters = JSON.parse(filters);
var filtertmp = []; //filter sort fix
var filteri = 0; //filter sort fix
console.log(filters);

for (filter in filters)
{
$('#'+filter).attr("checked","checked");
$('#selected_filters').html(parseInt($('#selected_filters').html())+1);
$('select[name="'+filter+'_filter_type"]').val(filters[filter].filter_type);
$('select[name="'+filter+'_filter_show_limit"]').val(filters[filter].filter_show_limit);
//filter sort fix start
var elt = document.getElementById(filter);
var eltli = elt.parentNode.parentNode.parentNode; /* the LI */
var eltul = elt.parentNode.parentNode.parentNode.parentNode; /* the UL */
filtertmp[filteri++] = eltul.removeChild(eltli);
}
for(var i=0; i

Posted in troubleshoot | Tagged , , | Comments Off on Prestashop: Fix layered navigation block doesn’t keep order position of filters

Prestashop: How to add the invoice number to the backoffice orders grid

Source: https://www.prestashop.com/forums/topic/300119-solved-how-to-add-the-invoice-number-to-the-orders-grid/?do=findComment&comment=1517949

Try to start with adding another array item to $this->fields_list

add code to:
/controllers/admin/AdminOrdersController.php

‘invoice_number’ => array(
‘title’ => $this->l(‘Rechnung-Nr: ‘),
‘width’ => 50
),

Posted in ecommerce | Tagged | Comments Off on Prestashop: How to add the invoice number to the backoffice orders grid

Prestashop: How to create admin controller to add link of module to backoffice menu

Troubleshoot: PrestaShop Admin Module Controller Not Found

https://stackoverflow.com/questions/37984270/prestashop-admin-module-controller-not-found

Whenever this happened to me was because I hadn’t created a menu entry for my new controller.

What I’d advise you to do is to go to Administration > Menus then created a new entry.

Fill in the form like this :

Name: Productarticle
Class: AdminProductarticle
Module: productarticle (if that’s the name you gave your module)
Active: NO (this way you don’t have to have a menu entry that’s gonna be useless to you)

On top of that you should have something like this in your __construct()

E.g. filename modules/module_name/controllers/admin/AdminProductarticleController.php

class AdminProductarticleController extends ModuleAdminController
{
public function __construct()
{
$this->module = ‘productarticle’; //refers to your module’s $this->name = ‘productarticle’;
$this->bootstrap = true;
$this->context = Context::getContext();
//The following 2 lines are useful if you have to link your controller to a certain table for data grids
$this->table = ‘contribution’;
$this->className = ‘Contribution’;

parent::__construct();

Tools::redirectAdmin(Context::getContext()->link->getAdminLink(‘AdminModules’, true) . ‘&configure=nameofmodule&tab_module=front_office_features&module_name=nameofmodule’);
}
}

Posted in troubleshoot | Tagged | Comments Off on Prestashop: How to create admin controller to add link of module to backoffice menu

Prestashop: Add style number to product page

Using warehouse theme. When product has combinations, the SKU is shown. I wanted to also show the main product style number for easy reference.
https://www.prestashop.com/forums/topic/605088-slovedhow-to-show-reference-numbers-on-product-page/?do=findComment&comment=2540332


{$product->reference|escape:'html':'UTF-8'}

There are 2 locations to add in ware theme product.tpl

Posted in ecommerce, templates | Tagged | Comments Off on Prestashop: Add style number to product page

Blacklist Check IP

Question – https://www.quora.com/How-exactly-does-a-domain-name-email-get-blacklisted-Whats-the-trigger-or-what-is-responsible-for-it

Check:
https://www.dnsbl.info/dnsbl-list.php

Email needs to have rDNS and FCrDNS, so that it is not blacklisted.

What is rDNS?
https://spfbl.net/en/rdns/

What is FCrDNS?
https://spfbl.net/en/fcrdns/

Remove from blacklist
https://www.ndchost.com/wiki/rbl/yahoo
https://spfbl.net/en/delist/

Spam check: https://www.spamhaus.org/lookup/

Domain health check: https://mxtoolbox.com/domain/

Posted in servers, troubleshoot | Tagged , | Comments Off on Blacklist Check IP

Prestashop 1.6: Breadcrumb to display the category that product is currently in (not its default category)

Update 20190608: Due to SEO concern, the friendly url of product is configured to not show subcategories, i.e. domain.com/product-name-1234.html so the following solution does not work as it uses the subcategories in the friendly url as reference

Source: https://www.prestashop.com/forums/topic/167513-how-to-show-the-full-breadcrumb-to-the-default-category-on-every-product-page/?do=findComment&comment=2684341

Function  assignCategory(), preferably in override/controllers/front/ProductController.php

protected function assignCategory()
{
// Assign category to the template
if ($this->category !== false && Validate::isLoadedObject($this->category) && $this->category->inShop() && $this->category->isAssociatedToShop()) {
$path = Tools::getPath($this->category->id, $this->product->name, true);
$all_product_subs = Product::getProductCategoriesFull($this->product->id, $this->context->language->id);

if(isset($all_product_subs) && count($all_product_subs)>0)
{
foreach($all_product_subs as $subcat)
$all_product_subs_path = array(); //reset array, only last one is used
$all_product_subs_path[] = Tools::getPath($subcat[‘id_category’], ”, true);
}

} elseif (Category::inShopStatic($this->product->id_category_default, $this->context->shop)) {
$this->category = new Category((int)$this->product->id_category_default, (int)$this->context->language->id);
if (Validate::isLoadedObject($this->category) && $this->category->active && $this->category->isAssociatedToShop()) {
$path = Tools::getPath((int)$this->product->id_category_default, $this->product->name);
}
}
if (!isset($path) || !$path) {
$path = Tools::getPath((int)$this->context->shop->id_category, $this->product->name);
}

if (Validate::isLoadedObject($this->category)) {

// various assignements before Hook::exec
$this->context->smarty->assign(array(
‘path’ => Tools::getPath($this->category->id, ”, true),
//THIS CONTAINS ALL PRODUCT SUBCATEGORIES PATH
‘all_product_subs’=>$all_product_subs_path,
‘category’ => $this->category,
‘subCategories’ => $this->category->getSubCategories($this->context->language->id, true),
‘id_category_current’ => (int)$this->category->id,
‘id_category_parent’ => (int)$this->category->id_parent,
‘return_category_name’ => Tools::safeOutput($this->category->name)
));

}
$this->context->smarty->assign(array(‘HOOK_PRODUCT_FOOTER’ => Hook::exec(‘displayFooterProduct’, array(‘product’ => $this->product, ‘category’ => $this->category))));
}

Posted in ecommerce | Tagged , | Comments Off on Prestashop 1.6: Breadcrumb to display the category that product is currently in (not its default category)

Prestashop: Fix pagination error on Attributes and Features in Backoffice

https://github.com/PrestaShop/PrestaShop/pull/8638/files

https://www.prestashop.com/forums/topic/554037-possible-bug-on-product-attributes-list-pagination-in-1616/

https://www.prestashop.com/forums/topic/507337-backoffice-pagination-error-in-products-attribute-section/

Hi, i fixed this by adding a short code to ‘AdminAttributesGroupsController.php’ in /controllers/admin/

    public function setRedirectAfter($url)
    {
        $addUrl = '';
        if(Tools::isSubmit('viewattribute_group') && Tools::getValue('id_attribute_group')) {
            $addUrl = '&viewattribute_group&id_attribute_group=' . Tools::getValue('id_attribute_group');
        }

        $this->redirect_after = $url . $addUrl;
    }

Function fixes the bug too for Feature values. We need to create an override for ‘AdminFeaturesController.php’:

<?php

class AdminFeaturesController extends AdminFeaturesControllerCore
{

   public function setRedirectAfter($url)
    {
        $addUrl = '';
        if(Tools::isSubmit('viewfeature') && Tools::getValue('id_feature')) {
            $addUrl = '&viewfeature&id_feature=' . Tools::getValue('id_feature');
        }

        $this->redirect_after = $url . $addUrl;
    }
}
Posted in troubleshoot | Tagged , | Comments Off on Prestashop: Fix pagination error on Attributes and Features in Backoffice