Jump to content
Donaldiosa

[BEENDET] Grundsätzliche Frage, wie funktioniert PrestaShop

Recommended Posts

Moin, Moin!

 

Ich habe folgene grundsätzliche Frage zum PrestaShop:

 

Einerseits hat man die .php und anderseits die .tpl-Dateien (für das Design).

Wenn ich nun die Datei blocktopmenu.tpl anpasse, um dort einen Wert auszugeben, hatte ich mir vorgestellt einfach mal eine Testzeile "<li>TestVariable={$TestVariable}</li>" hinzuzufügen.

{if $MENU != ''}
</div>
 
<!-- Menu --> 
 
<div class="sf-contener clearfix">
 
<ul class="sf-menu clearfix" style="margin: -111px 0px 0px 0px;">
 
 
{$MENU} 
{if $MENU_SEARCH}
 
<li class="sf-search noBack" style="float:right">
 
<form id="searchbox" action="{$link->getPageLink('search')}" method="get"> 
<input type="hidden" name="controller" value="search" /> 
<input type="hidden" value="position" name="orderby"/>
<input type="hidden" value="desc" name="orderway"/>
<input type="text" name="search_query" value="{if isset($smarty.get.search_query)}{$smarty.get.search_query|escape:'htmlall':'UTF-8'}{/if}" />
</form>
 
</li>
{/if}
<li>TestVariable={$TestVariable}</li>
 
</ul> 
 
<div class="sf-right"> </div>
 
<!--/ Menu -->
{/if}

Dazu habe ich gesucht, wo denn die Datei "blocktopmenu.tpl" aufgerufen wird. Dies geschieht wohl in der Funktion "public function hookDisplayTop($param)" in der Datei blocktopmenu.php. Jedenfalls ist es die einzige Datei, in der "blocktopmenu.tpl" zu finden war.

 

Nun habe ich diese Funktion um meine Variable "$TestVariable = "Ernie";" ergänzt:

    public function hookDisplayTop($param)
    {
        $this->user_groups = ($this->context->customer->isLogged() ?
            $this->context->customer->getGroups() : array(Configuration::get('PS_UNIDENTIFIED_GROUP')));
        $this->page_name = Dispatcher::getInstance()->getController();
        if (!$this->isCached('blocktopmenu.tpl', $this->getCacheId())) {
            if (Tools::isEmpty($this->_menu)) {
                $this->makeMenu();
            }
 
            $shop_id = (int)$this->context->shop->id;
            $shop_group_id = Shop::getGroupFromShop($shop_id);
 
            $this->smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH', null, $shop_group_id, $shop_id));
            $this->smarty->assign('MENU', $this->_menu);
            $this->smarty->assign('this_path', $this->_path);
        }
        $TestVariable = "Ernie";
        $html = $this->display(__FILE__, 'blocktopmenu.tpl', $this->getCacheId());
        return $html;
    }

Doch dann auf der Seite erscheint nur "TestVariable=". Der Wert der Variablen (Ernie) wird nicht mit übergeben.

 

Hintergrund ist, das ich eigentlich feststellen möchte, ob ein Artikel im Warenkorb vorhanden ist und wenn, möchte ich die Zeile

<ul class="sf-menu clearfix" style="margin: -111px 0px 0px 0px;">

durch

<ul class="sf-menu clearfix" style="margin: -84px 0px 0px 0px;">

ersetzten.

 

 

Mir ist also noch nicht klar, wie PrestaShop da funktioniert. Eigentlich ist mir nicht mal klar, wie die Variablen von der PHP-Datei an die TBL-Datei übergeben werden.

 

Kann mir an dieser Stelle jemand weiterhelfen? Und wo kann ich dazu Erklärungen finden?

 

Edited by Donaldiosa (see edit history)

Share this post


Link to post
Share on other sites

Inzwischen habe ich meinen Fehler gefunden:

statt:

 

$TestVariable = "Ernie";

 

muss man die Variablen so übergeben:

 

$this->smarty->assign('TestVariable', 'Ernie');

 

Dann klappt es auch :-)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More