Автор Тема: Как сделать страницу php с выводом шапки PrestaShop 1.7  (Прочитано 697 раз)

07 Август 2019, 19:15:04
  • Новичок
  • *
  • Сообщений: 46
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В PrestaShop 1.7 нужно в корне сайта создать файл page.php который должен отразить  верхную часть сайта шапку(header).? Или, как з шаблонизатора Smarty вытянуть переменные Header? Все это я должен отразить в php файле.
07 Август 2019, 22:41:50
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
include_once ( ../ config / config.inc.php ' ) ;
include_once ( ../ header.php ' ) ;
08 Август 2019, 13:25:21
Ответ #2
  • Новичок
  • *
  • Сообщений: 46
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
include_once ( ../ config / config.inc.php ' ) ;
include_once ( ../ header.php ' ) ;

Так можно делать в prestashop 1.6, а  в 1.7 не получается.
08 Август 2019, 18:44:05
Ответ #3
  • Новичок
  • *
  • Сообщений: 46
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Создал контроллер /override/controllers/front/MyController.php

class MyController extends FrontController {
  public function initContent(){
    parent::initContent();
    $this->setTemplate('myindex');
  }
}
Все работает, отображается header,footer. Как мне между ними вставить данные со страницы? Допустим есть папка в корне сайта tag/index.php. Из нее нужно извлечь данные и разместить их на странице
09 Август 2019, 14:09:26
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере метод создайте для извлечения данных и при инициализации вызывайте, передавая переменные в шаблон.
09 Август 2019, 16:15:48
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
<?php

include '/path/mypage.php');

class 
MyPageController extends FrontController
{
    public 
$php_self 'mypage';

    
/**
     * Initialize controller
     * @see FrontController::init()
     */
    
public function init()
    {
        
parent::init();
    }
    
/**
     * Assign template vars related to page content
     * @see FrontController::initContent()
     */
    
public function initContent()
    {
        
parent::initContent();

        
$this->context->smarty->assign(
            array(
                
'var1' => $mypage->myfunct1(),
                
'var2' => $mypage->myfunct2(),
            )
        );

        
$this->setTemplate('mypage.tpl'); // themes/theme_current/templates/mypage.tpl
    
}
}

Но лучше создать класс из файла php а папке classe или добавить методы в override / FrontController
10 Август 2019, 00:38:48
Ответ #6
  • Новичок
  • *
  • Сообщений: 46
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере метод создайте для извлечения данных и при инициализации вызывайте, передавая переменные в шаблон.
А можно на примере?
10 Август 2019, 00:47:26
Ответ #7
  • Новичок
  • *
  • Сообщений: 46
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
<?php

include '/path/mypage.php');

class 
MyPageController extends FrontController
{
    public 
$php_self 'mypage';

    
/**
     * Initialize controller
     * @see FrontController::init()
     */
    
public function init()
    {
        
parent::init();
    }
    
/**
     * Assign template vars related to page content
     * @see FrontController::initContent()
     */
    
public function initContent()
    {
        
parent::initContent();

        
$this->context->smarty->assign(
            array(
                
'var1' => $mypage->myfunct1(),
                
'var2' => $mypage->myfunct2(),
            )
        );

        
$this->setTemplate('mypage.tpl'); // themes/theme_current/templates/mypage.tpl
    
}
}

Но лучше создать класс из файла php а папке classe или добавить методы в override / FrontController
Я не понимаю часть этого кода?
parent::initContent();

        $this->context->smarty->assign(
            array(
                'var1' => $mypage->myfunct1(),
                'var2' => $mypage->myfunct2(),
            )
А также include '/path/mypage.php');?В моем случае это папка с контентом? Который я хочу подключить?
10 Август 2019, 11:28:35
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Если у вас контент, тогда сразу переносите его в переменные smarty. В одном контроллере + tpl можно все сделать.
10 Август 2019, 20:50:11
Ответ #9
  • Новичок
  • *
  • Сообщений: 46
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если у вас контент, тогда сразу переносите его в переменные smarty. В одном контроллере + tpl можно все сделать.
А можно пример показать?
11 Август 2019, 10:51:23
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Создал контроллер /override/controllers/front/MyController.php

class MyController extends FrontController {
  public function initContent(){
    parent::initContent();
    $this->setTemplate('myindex');
  }
}
Все работает, отображается header,footer. Как мне между ними вставить данные со страницы? Допустим есть папка в корне сайта tag/index.php. Из нее нужно извлечь данные и разместить их на странице
Создаете файл myindex.tpl и в него переносите контент.
11 Август 2019, 15:05:16
Ответ #11
  • Новичок
  • *
  • Сообщений: 46
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Создал контроллер /override/controllers/front/MyController.php

class MyController extends FrontController {
  public function initContent(){
    parent::initContent();
    $this->setTemplate('myindex');
  }
}
Все работает, отображается header,footer. Как мне между ними вставить данные со страницы? Допустим есть папка в корне сайта tag/index.php. Из нее нужно извлечь данные и разместить их на странице
Создаете файл myindex.tpl и в него переносите контент.
Так я это понимаю. Но как мне в подключить контент. Под словом контент понимается отдельная папка в которой есть свои файлы php, база и подключается через index.php. Хочу подключить блог.
11 Август 2019, 19:23:33
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Выше написано как подключают дополнительные классы.
https://prestashop-forum.ru/index.php/topic,10709.msg66843.html#msg66843

В своем контроллере подключаете
include_once(dirname(__FILE__).'/../../../tag/index.php');
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!