将meta_tags meta_description和meta_name更改为自定义页面,该页面扩展了Prestashop 1.7中的page.tpl

时间:2018-08-25 12:10:30

标签: prestashop smarty prestashop-1.7

我有一个自定义模块,该模块在Prestashop中定义了一个自定义页面。 它由扩展page.tpl的模板和前端控制器组成。

我想了解应该在哪里修改此特定页面的元数据。

我在此控制器中看到了调用模板的那部分:

    $this->context->smarty->assign(array(
        'link' =>            $this->context->link,
        'category'             => $this->category,
        'main_category_logo' => $image_url,
        'description_short'    => Tools::truncateString($this->category->description, 350),
        'sub_categories'    => $data,
        'body_classes'         => array($this->php_self.'-'.$this->category->id, $this->php_self.'-'.$this->category->link_rewrite),
        'search_url' => $this->context->link->getPageLink('search', null, null, null, false, null, true)
    ));

    $this->setTemplate('module:'.$this->module->name.'/views/templates/front/category.tpl');

这是添加meta的正确位置吗?该如何完成?

2 个答案:

答案 0 :(得分:0)

在PS 1.7中,非常容易在前端控制器的tpl中对其进行修改。

{extends file='page.tpl'}

{block name='head_seo_title'}
    MY META TITLE
{/block}

{block name='head_seo_description'}
    MY META DESCRIPTION
{/block}

{block name='head_seo_keywords'}
    MY META KEYWORDS
{/block}

这里还有来自后台办公室的SEO和URL的另一种选择:How to change meta title in prestashop module?

答案 1 :(得分:0)

在PrestaShop 1.7中,您还可以在 ModuleFrontController 类中创建自己的 getTemplateVarPage() 函数,调用父级并根据需要设置元变量(对于博客文章,新闻,商店等项目页面类型很有用),因此您不必在模板中放入逻辑。

public function getTemplateVarPage()
{
    $page = parent::getTemplateVarPage();

    $page['meta']['title'] = 'MY META TITLE';
    $page['meta']['description'] = 'MY META DESCRIPTION';
    $page['meta']['keywords'] = 'MY META KEYWORDS';
    $page['meta']['robots'] = 'index'; // noindex, nofollow, none, ...

    return $page;
}

如果它是 static 页面(如列表或单色页面),则可以添加控制器并直接在Back Office(SEO菜单)中设置元信息。

祝你好运