Пользовательская страница Prestashop с собственным шаблоном

Пользовательская страница Prestashop с собственным шаблоном

11.09.2018 05:53:23 Просмотров 79 Источник

Я запускаю свою собственную тему prestashop и хочу добавить новую страницу без css. Поэтому я добавил три файла php, контроллер и шаблон. Я разместил PHP в корневом каталоге моего авто, добавил контроллер для корневой/контроллеры/передний и размещен шаблон в корень/темы/мои темы.
Если я позвоню http://localhost/prestashop/?страницы=обычай-страницу, Я вижу указатель на начальную страницу, если я назову имя localhost/покупка/таможня-страницы, я получаю ошибка HTTP 404.
Может кто-нибудь помочь мне получить мою страницу отображается?

РНР:

<?php
  include(dirname(__FILE__).'/config/config.inc.php');
  Tools::displayFileAsDeprecated();

  include(dirname(__FILE__).'/header.php');

  $smarty->display(_PS_THEME_DIR_.'custom-page.tpl');

  include(dirname(__FILE__).'/footer.php');

Контроллер:

public function init(){
  parent::init();
}

public function initContent(){
  parent::initContent();
  $this->setTemplate(_PS_THEME_DIR_.'custom-page.tpl');
}


//public function setMedia(){
  //parent::setMedia();
  //$this->addCSS(_THEME_CSS_DIR_.'custom-page.css');
  //$this->addJS(_THEME_JS_DIR_.'custom-page.js');
//}

}

Шаблон:

<div>
 HELLO PAGE
</div>

{literal}
  <style type="text/css">
  </style>
{/literal}

<script type="text/javascript">
  {literal}
  {/literal}
</script>
У вопроса есть решение - Посмотреть?

Ответы - Пользовательская страница Prestashop с собственным шаблоном / Prestashop custom page with own template

Является ответом!
Rolige

11.09.2018 08:17:48

Для PS 1.7 создайте новую страницу, выполнив следующие действия:

Создайте контроллер: /controllers/front/MyPageController.php

<?php

class MyPageControllerCore extends FrontController
{
    public $php_self = 'mypage';
    public $ssl = true;

    public function initContent()
    {
        parent::initContent();

        $this->setTemplate('mypage');
    }
}

Создайте файл tpl в вашей теме : /themes/YOUR_THEME/templates/mypage.tpl

{extends file='page.tpl'}

{block name='page_header_container'}{/block}

{block name='page_content'}
  PAGE CONTENT HERE
{/block}

Удалите файлы индекса класса : /var/cache/dev/class_index.php и /var/cache/prod/class_index.php

Как получить к нему доступ : http://your-site.com/index.php?controller=mypage

Наконец:
Если вы хотите обработать дружественный URL для этой страницы, просто добавьте страницу в Shop Parameters > Traffic & SEO.

https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91510903_52281093
Не могли бы вы сказать мне, где мне нужно разместить файлы, когда я использую свою пользовательскую тему?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91539881_52281093
В PS 1.6 / 1.5 обычно в корне темы. В PS 1.7 некоторые из них находятся в корне, а другие - в подпапке. В файле /controller/front/ControllerName.phpвы можете увидеть путь в свойстве $this->setTemplate('path/here');
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91540247_52281093
привет, поэтому я добавил его (он был в списке, поэтому я думаю, что prestashop знает, что он есть). как я могу это назвать?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91542246_52281093
Не могли бы вы сначала сказать мне, какую версию PS вы используете?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91542298_52281093
Я использую 1.7.X (я думаю, что это на самом деле 1.7.4)
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91544990_52281093
@ItFreak я обновил свой ответ, чтобы шаг за шагом поставить процесс, чтобы следовать, теперь я думаю, что это должно быть намного яснее.
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91545827_52281093
Большое спасибо, я попробую это! Еще один вопрос :) я мой HTML-контент у меня есть два изображения. Можно ли сделать их "выбираемыми" через Панель администратора?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91545835_52281093
Большое спасибо, я попробую это! Еще один вопрос :) я мой HTML-контент у меня есть два изображения. Можно ли сделать их "выбираемыми" через Панель администратора?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91546083_52281093
@ItFreak я действительно не понимаю ваш вопрос, но если это не об этой проблеме, пожалуйста, создайте новый вопрос.
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91546768_52281093
Спасибо большое, это сработало. Просто небольшая проблема, внутри блока содержимого страницы я создал div с содержанием работ, но на странице ничего не отображается :/. Я думаю, что добавление CSS и JS работает так же, как и в Примере с вопросом mz?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91546943_52281093
Содержимое должно быть внутри блока page_content, а не вне его, как в моем примере.
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91547088_52281093
Да, я сделал: {имя блока=...} <элемент div.>.. < / div > {/блок}
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91547296_52281093
Он должен работать, возможно, вы используете класс CSS, который скрывает элемент, попробуйте проверить, существует ли HTML-код в исходном коде страницы.
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52281093#comment91548762_52281093
Это была просто ошибка кэширования. Я повторил удаление кэша, и теперь он работает! Большое спасибо!
Alexander Grosul

12.09.2018 09:00:41

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

Вот некоторые сведения о том, как создать собственную страницу в модуле https://belvg.com/blog/creating-frontcontroller-in-the-module-and-customization-of-displaying-page-in-prestashop.html и еще https://belvg.com/blog/how-to-implement-a-controller.html

https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52288392#comment91525820_52288392
спасибо, я следовал другой учебник этого блога, чтобы создать эти файлы. Теперь я добавил его под SEO (поэтому я думаю, что prestashop знает, что это "там"), как я могу назвать страницу?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52288392#comment91526108_52288392
Использовать $ссылка = новая ссылка(); $ссылка->getModuleLink('your_module', 'контроллер', для вывода $params); для модуля или $ссылка->getPageLink('контроллер') для этого метода с пользовательских разделе тару вы уже пробовали. Если вы реализовали все правильно это должно работать
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52288392#comment91526386_52288392
И где я могу увидеть эту ссылку?
https://stackoverflow.com/questions/52278754/prestashop-custom-page-with-own-template/52288392#comment91526874_52288392
Если вы используете модуль, вы можете определить переменную и передать ее своему интерфейсу. Что-то вроде $customPage = $ссылка->getModuleLink('your_module', 'контроллер', для вывода $params); и использовать его в своей ТПЛ нравится <a href="$customPage"></a>. Или, если вы используете custome page variant, вам нужно добавить его в классы / контроллер / FrontController.php к методу getTemplateVarUrls в массиве $p (который содержит имена страниц) и использовать его в шаблонах, таких как $urls.страницы.пользовательская страница
Закрыть X