Autor Zpráva
Nailen
Profil
Zdravím,

Mám problém s PDF dokumenty. Používám systém online obchodu PrestaShop a pokoušel jsem se získat pomoc na oficiálních fórech pro tento script. Bohužel žádná odpověď.

Modifikoval jsem vzuhld PDF dokumentů (zatím fakturu).

Modifikoval jsem tyto soubory:

•\class\pdf\HTMLTemplate.php
•\pdf\header.tpl
•pdf\invoice.tpl

Nejprve vše fungovalo. Změny se při vygenerování PDF dokumentu provedly. Pak najednou jsem si všiml, že z dokladů zmizelo logo, číslo faktury a datum vystavení.
Tyto všechny proměnné ze souboru header.tpl jsou prázdné mimo shop name.

Rozhodl jsem se vrátit vše zpět do původního stavu. Soubory jsem obnovil. Problém přetrvává.

Poradil by mi někdo, jak postupovat, abych odhalil problém, proč se mi nenačítají (nepřenáší) data v souboru header.tpl
Vše ostatní vypadá, že funguje. Jen tato část dokumentu ne.

v HTMLTemplate.php je toto:

abstract class HTMLTemplateCore
{
    public $title;
    public $date;
    public $available_in_your_account = true;
    public $smarty;
    public $shop;

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

        $width = 0;
        $height = 0;
        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   
        ));
        return $this->smarty->fetch($this->getTemplate('header'));
  }

v header.tpl je toto:

<table style="width: 100%">
<tr>
    <td style="width: 50%">
        {if $logo_path}
            <img src="{$logo_path}" style="width:{$width_logo}px; height:{$height_logo}px;" />
        {/if}
    </td>
    <td style="width: 50%; 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>

z tohoto kódu se mi vypíše jen proměnná $shop_name

Díky
Alphard
Profil
Ověřoval jste např. testovacím výpisem, že přiřazované proměnné skutečně obsahují správná data? Není problém třeba v cache?
Tori
Profil
Nailen:
Modifikoval jsem tyto soubory:
•\class\pdf\HTMLTemplate.php
Doporučený způsob je upravovat jen třídy ve složce \override, tedy \override\classes\pdf\HTMLTemplate.php a třídy, jejichž název končí na "Core", nechat na pokoji (např. kvůli tomu, abyste při upgradu PS nepřišel o vlastní úpravy). K dotazu: neexistuje ještě jiná šablona pro pdf, která tu vaši překryje (viz $overriden_template v HTMLTemplateCore::getTemplate)?
Nailen
Profil
Alphard:

Dobrý podvečer. Omlouvám se, že tak pozdě reaguji na Vaše komentáře. Kojenec doma, to pak není čas na nic.

Co se týče keševání, tak mám zapnuté: Překompilovat šablony, pokud byly soubory zaktualizovány.
Keš adresáře jsem na serveru ručně promazal.

Co si mám představit pod testovacím výpisem? Proměnné jsou prázdné a neobsahují žádná data.

Děkuji za Vaši reakci.


Tori:

Dobrý podvečer, také se omlouvám za pozdní reakci.

váš příspěvek mi vyřešil problém :-) O složce override jsem nevěděl. Když jsem se do ní podíval, tak jsem tam našel vámi zmiňovaný soubor, ve které byla nadefinována jen jedna proměnná. Nevím jak tam sám vznikl, každopádně teď už o něm vím a úpravy šablony budu provádět zde.

Děkuji moc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: