Jump to content

Шаблон для одного из файлов модуля


Recommended Posts

Приветствую.
В модуле присутствует файл, который отрисовывает некую страницу в "своем" шаблоне. Выглядит примерно так:

// somemodule.php
class SomeModule extends Module
{
    public function __construct() {...}
    public function coolFunction() {
        // здесь у меня заполняются перменные для Smarty
        echo $this->display(__FILE__, 'views/templates/front/sometpl.tpl');
    }
}
 

А отрисовка страницы происходит при вызове файла cool.php, который выглядит так:

// cool.php
include_once('../../config/config.inc.php');
include_once('../../init.php');

include_once(dirname(__FILE__).'/somemodule.php');

$module = new SomeModule();

$module->coolFunction();

Так вот, в файле шаблона из первого кода есть ряд переменных смарти которые прекрасно срабатывают без каких либо заполнений:

  • $language_code
  • $meta_title

Возможно еще какие-то есть, но мне пока нужны были только эти, ито язык не сильно нужен в моей реализации.

Однако переменные $css_files и $js_files приходится заполнять ручками, либо прямо в шаблоне прописывать пути до стилей и скриптов.

Отсюда вопрос - в шаблоне темы все это заполняется контроллером престы, а в моем плагине это придется реализовать ручками?

Share this post


Link to post
Share on other sites

в стандартном варианте такое в hookHeader в модуле пишется:
$this->context->controller->addCss(($this->_path).'css/file.css');
$this->context->controller->addJS(($this->_path).'js/file.js');

если вы выводите не через хуки свой модуль, то какая вам разница как вы их вставите в вывод:

    $html = '<link href="'.$this->_path.'css/file.css" rel="stylesheet" type="text/css" media="all" />';
    $html .= '<script src="'.$this->_path.'js/file.js" type="text/javascript" ></script>';
$html .= $this->display(__FILE__, 'views/templates/front/sometpl.tpl');
echo $html;
Edited by wagood (see edit history)

Share this post


Link to post
Share on other sites

 

в стандартном варианте такое в hookHeader в модуле пишется:
$this->context->controller->addCss(($this->_path).'css/file.css');
$this->context->controller->addJS(($this->_path).'js/file.js');

если вы выводите не через хуки свой модуль, то какая вам разница как вы их вставите в вывод:

    $html = '<link href="'.$this->_path.'css/file.css" rel="stylesheet" type="text/css" media="all" />';
    $html .= '<script src="'.$this->_path.'js/file.js" type="text/javascript" ></script>';
$html .= $this->display(__FILE__, 'views/templates/front/sometpl.tpl');
echo $html;

 

Ну собственно так и делаю =) просто хотел сделать более красивый код, но так тоже норм

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
 Share

×
×
  • Create New...

Important Information

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