Opencart元标题包括商店名称

时间:2012-04-10 10:22:06

标签: php opencart

如何在Document类中获取商店名称。这就是我想要做的事情:

public function setTitle($title) {

    // Append store name if small title
    if(strlen($title) < 30){
        $this->title = $title . ' - ' . $this->config->get("store_name");
    } else {
        $this->title = $title;
    }
}

虽然$this指的是文档类。如何获得配置?

使用最新版本的opencart 1.5.2.1

检查index.php文件以查看配置的加载方式

// Registry
$registry = new Registry();

// Loader
$loader = new Loader($registry);
$registry->set('load', $loader);

// Config
$config = new Config();
$registry->set('config', $config);

3 个答案:

答案 0 :(得分:4)

Opencart使用某种依赖注入来从库类访问注册表。此技术适用于许多库类,如客户,会员,货币,税,重量,长度和购物车类。令人惊讶的是,文档类是少数几个没有传入注册表对象的类之一。

如果您想遵循此约定,我建议您修改index.php和library / document.php,以便Document构造函数将注册表作为参数:

class Document {

        [...]

        // Add the constructor below
        public function __construct($registry) {
                $this->config = $registry->get('config');
        }

        [...]

        public setTitle($title) {
            if(strlen($title) < 30){
                $this->title = $title . ' - ' . $this->config->get("store_name");
            } else {
                $this->title = $title;
            }
        }

}

现在您只需要将注册表对象注入index.php中的Document类,如下所示:

// Registry
$registry = new Registry();

[...]

// Document
$registry->set('document', new Document($registry));

答案 1 :(得分:1)

你不能在文档类中使用 $ this-&gt; cofig ,因为它没有 config 属性,也没有魔法 __ get 方法,就像控制器类一样。

您可以尝试更改标头控制器。

public function index() {

   $title = $this->document->getTitle();
   if(strlen($title) < 30){
      $this->data['title'] = $title . ' - ' . $this->config->get("store_name");
   } else {
      $this->data['title'] = $title;
   }

   // ....
}

--------更新--------

如果你想在Document类中使用$ config,你可以使用全局变量:

public function setTitle($title) {

    global $config;
    // Append store name if small title
    if(strlen($title) < 30){
        $this->title = $title . ' - ' . $config->get("store_name");
    } else {
        $this->title = $title;
    }
}

但我建议你不要这样做。

答案 2 :(得分:1)

在Opencart 1.5.1.3上,将$this->config->get("store_name")更改为$this->config->get("config_name")