Как сделать страницу php с выводом шапки PrestaShop 1.7

Автор watsongx, 07 августа 2019, 19:15:04

« назад - далее »

watsongx

В PrestaShop 1.7 нужно в корне сайта создать файл page.php который должен отразить  верхную часть сайта шапку(header).? Или, как з шаблонизатора Smarty вытянуть переменные Header? Все это я должен отразить в php файле.

Миколас


watsongx

Цитата: Миколас от 07 августа 2019, 22:41:50
include_once ( ../ config / config.inc.php ' ) ;
include_once ( ../ header.php ' ) ;


Так можно делать в prestashop 1.6, а  в 1.7 не получается.

watsongx

Создал контроллер /override/controllers/front/MyController.php

class MyController extends FrontController {
  public function initContent(){
    parent::initContent();
    $this->setTemplate('myindex');
  }
}

Все работает, отображается header,footer. Как мне между ними вставить данные со страницы? Допустим есть папка в корне сайта tag/index.php. Из нее нужно извлечь данные и разместить их на странице

Adik

В контроллере метод создайте для извлечения данных и при инициализации вызывайте, передавая переменные в шаблон.

coder

<?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

watsongx

Цитата: Adik от 09 августа 2019, 14:09:26
В контроллере метод создайте для извлечения данных и при инициализации вызывайте, передавая переменные в шаблон.
А можно на примере?

watsongx

Цитата: coder от 09 августа 2019, 16:15:48
<?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');?В моем случае это папка с контентом? Который я хочу подключить?

mistral

Если у вас контент, тогда сразу переносите его в переменные smarty. В одном контроллере + tpl можно все сделать.

watsongx

Цитата: mistral от 10 августа 2019, 11:28:35
Если у вас контент, тогда сразу переносите его в переменные smarty. В одном контроллере + tpl можно все сделать.
А можно пример показать?

mistral

Цитата: watsongx от 08 августа 2019, 18:44:05
Создал контроллер /override/controllers/front/MyController.php

class MyController extends FrontController {
  public function initContent(){
    parent::initContent();
    $this->setTemplate('myindex');
  }
}

Все работает, отображается header,footer. Как мне между ними вставить данные со страницы? Допустим есть папка в корне сайта tag/index.php. Из нее нужно извлечь данные и разместить их на странице
Создаете файл myindex.tpl и в него переносите контент.

watsongx

Цитата: mistral от 11 августа 2019, 10:51:23
Цитата: watsongx от 08 августа 2019, 18:44:05
Создал контроллер /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. Хочу подключить блог.

PrestaMan

Выше написано как подключают дополнительные классы.
https://prestashop-forum.ru/index.php/topic,10709.msg66843.html#msg66843

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