Arhn - архитектура программирования

Как создать переменную smarty в prestashop 1.5

Я работаю над кнопкой, которая переключает вид с помощью onClick. Я хочу сохранить последнюю позицию / позицию по умолчанию в переменной, чтобы предотвратить переключение в состояние просмотра по умолчанию при каждом обновлении страницы или навигации.

Я читал, что в файле php могу делать следующее:

$myVar= -1;
$smarty->assign('myVar', $myVar);

а затем используйте $myVar в файле tpl. Но у меня не работает. Файл tpl, над которым я работаю, не является частью модуля и не имеет файла .php в корневой папке prestashop.

Может ли кто-нибудь немного рассказать мне о smarty / php и о том, как создавать переменные и использовать их для хранения состояния кнопки?

Спасибо


Ответы:


1

Smarty - это шаблонизатор PHP для PHP, который облегчает отделение представления (XHTML / CSS) от основных функций / контроллеров PrestaShop.

Файл шаблона (обычно с расширением .tpl в PrestaShop) всегда вызывается файлом контроллера PHP (это может быть внешний контроллер ядра или контроллер модуля).

Пример: /prestashop/controllers/front/ContactController.php

$this->context->smarty->assign(array(
    'contacts' => Contact::getContacts($this->context->language->id),
    'message' => html_entity_decode(Tools::getValue('message'))
));

$this->setTemplate(_PS_THEME_DIR_.'contact-form.tpl');

Мы видим, что этот файл получает информацию из базы данных и назначает ее Smarty.

Затем шаблон contact-form.tpl покажет его посетителям.

Синтаксис модулей очень похож, например: /prestashop/modules/blocklink/blocklink.php

public function hookLeftColumn($params)
{       
    $this->smarty->assign('blocklink_links', $this->getLinks());
    
    return $this->display(__FILE__, 'blocklink.tpl');
}

Кроме того, для хранения значений в переменных Smarty вы можете использовать функцию 'assign' двумя способами:

  1. $this->context->smarty->assign('my_smarty_variable_name', $my_value);

    или если у вас несколько переменных:

  2. $this->context->smarty->assign(array('my_smarty_variable_name1' => $my_value1), ('my_smarty_variable_name2' => $my_value2));

А затем в шаблоне Smarty:

The value of my variable is {$my_smarty_variable_name|escape:'htmlall':'UTF-8'}.

Модификатор escape используется, чтобы избежать проблем с безопасностью XSS.

25.06.2013
  • Я пытаюсь сделать то же самое, переопределив orderreturncontrollercore, присутствующий в контроллерах администратора, но в файле form.tpl не отображаются переменные smarty, вы можете сказать мне, почему? 08.02.2016
  • Можете ли вы создать отдельный вопрос и опубликовать свой код (как PHP, так и Smarty) для проверки? 09.02.2016

  • 2

    Чтобы использовать переменные в вашем файле smarty, вам необходимо использовать, например:

    $this->context->smarty->assign(
        array(
            'myVar' => $myvar,
            'otherVar' => $otherVar
        )
     );
    

    Затем, чтобы использовать его в своем файле tpl, вам просто нужно использовать:

    <div>my var = {$myVar}</div>
    

    Чтобы использовать переменную в своем умнике, вам нужно записать ее внутри {}.

    26.06.2013
  • Я пытаюсь сделать то же самое, переопределив orderreturncontrollercore, присутствующий в контроллерах администратора, но в файле form.tpl не отображаются переменные smarty, вы можете сказать мне, почему? 08.02.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..