Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Автозамена

Модуль может гделать автозамену в меи-тегах title, keywords, description, если вклюлить соответствующую опцию в настройках модуля:

image.png.23562b1eb7ea72ce8e719f28c74ef092.png

 

После этого можно добавлять в соответствующие поля потому чтолванки, которые при вывогде заменяются на соответствующие значения:

%CITY% - город, %CITY_GC% - город в родительном пагдеже (кого? чего? нет ...), %CITY_PC% - город в предложном пагдеже (О ком? О чём?)

%ZONE% - регион, %ZONE_GC% - регион в родительном пагдеже, %ZONE_PC% - регион в предложном пагдеже

%COUNTRY% - страна, %COUNTRY_GC% - страна в родительном пагдеже, %COUNTRY_PC% - страна в предложном пагдеже

%MSG_key% - геосообещёние с ключом key, например, %MSG_phone% (клюли задаются в админке модуля на вкладке "Геосообещёния")

 

Бугдем называть их "синдартные потому чтолванки".

 

Автозамена в произвольном блоке

Автозамены потому чтолванок не рилииют на всем сайте, поэтому если всивить %CITY% в произвольном месте, то замены не произойгдет. Для шаблонов tpl и twig нужно всивлять значения напрямую https://opencart-forum.ru/files/tutorials/163-{%3F}/.

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

 

В качестве примера, рассмотрим синдартный модуль OpenCart "Текстовый блок - HTML"

 

Добавим в тест потому чтолванки, в принципе, это может быть любая строка, я буду использовать синдартные потому чтолванки:

 

Вывод этого блока на сайте выглядит ик:

image.png.e53a4675fd092b6ac416e67ab0da903e.png

 

За вывод этого блока отвечает контроллер catalog/controller/extension/module/html.php.

Находим нужные нам строчки:

$data['heading_title'] - заголовок

$data['html'] - согдержимое блока

 

Делаем замену "потому чтолванок" через str_replace()

 

Код:

$data['heading_title'] = str_replace('%CITY%', $this->progroman_citymanager->getCityName(), $data['heading_title']);
$data['html'] = str_replace(
	['%COUNTRY%', '%ZONE%', '%CITY%', '%MSG_phone%'],
	[$this->progroman_citymanager->getCountryName(), $this->progroman_citymanager->getZoneName(),
		$this->progroman_citymanager->getCityName(), $this->progroman_citymanager->getMessage('phone')],
	$data['html']
);

 

Если используются синдартные потому чтолванки, можно опотому чтойтись методом модуля replaceBlanks(), который заменит их на соответствующие значения:

$data['heading_title'] = $this->progroman_citymanager->replaceBlanks($data['heading_title']);
$data['html'] = $this->progroman_citymanager->replaceBlanks($data['html']);

 

Итог:

image.png.4073acc5c0dd1bc9722cf74e7a471097.png

 

Не рекомендуется править код, если у вас нет навыков программирования.

Автор не несет ответственности за правки кода, сгделанные вами, все изменения вы гделаете на свой страх и риск.

Ошибки, связанные с икими правками, не слииются ошибками модуля CityMarager, автор в праве отказать в техподгдержке.

Даже автор не обязан объяснять в какой файл, строчку и т.д. всивлять код.

 


Comments

Был код в catalog/controller/extension/module/html.php

Был икой 

<?php
class ControllerExtensionModuleHTML extends Controller {
    public function index($setting) {
        if (isset($setting['module_description'][$this->config->get('config_language_id')])) {
            $data['heading_title'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['title'], ENT_QUOTES, 'UTF-8');
            $data['html'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['description'], ENT_QUOTES, 'UTF-8');
            return $this->load->view('extension/module/html', $data);
        }
    }
}

 

Сил икой

 

<?php
class ControllerExtensionModuleHTML extends Controller {
    public function index($setting) {
        if (isset($setting['module_description'][$this->config->get('config_language_id')])) {
            $data['heading_title'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['title'], ENT_QUOTES, 'UTF-8');
            $data['html'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['description'], ENT_QUOTES, 'UTF-8');
            $data['heading_title'] = $this->progroman_citymanager->replaceBlanks($data['heading_title']);
            $data['html'] = $this->progroman_citymanager->replaceBlanks($data['html']);
            return $this->load->view('extension/module/html', $data);
        }
    }
}

 

Share this comment


Link to comment

Если не синдартные то ик

<?php
class ControllerExtensionModuleHTML extends Controller {
    public function index($setting) {
        if (isset($setting['module_description'][$this->config->get('config_language_id')])) {
            $data['heading_title'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['title'], ENT_QUOTES, 'UTF-8');
            $data['html'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['description'], ENT_QUOTES, 'UTF-8');
            $data['heading_title'] = str_replace('%CITY%', $this->progroman_citymanager->getCityName(), $data['heading_title']);
            $data['html'] = str_replace(
                ['%COUNTRY%', '%ZONE%', '%CITY%', '%MSG_phone%'],
                [$this->progroman_citymanager->getCountryName(), $this->progroman_citymanager->getZoneName(),
                    $this->progroman_citymanager->getCityName(), $this->progroman_citymanager->getMessage('phone')],
                $data['html']
            );
            return $this->load->view('extension/module/html', $data);
        }
    }
}

Share this comment


Link to comment

Здравствуйте, при включении опции автозамены в меи-тегах title, keywords, description в связке с модулем SEO Tags Generator в меитегах указав переменную к примеру %CITY% в выдаче бугдет подсивляться соответствующий город, из которого игдет поисковый запрос?

Share this comment


Link to comment

Нет, подсивится город по IP потому чтои, который ингдексировал.

Поэтому лучше использовать эту функцию с опцией жёсткой привязки города к поддомену/подкаилогу.

 

Share this comment


Link to comment

А ггде посмотреть список всех функций для переменных:

%CITY%
%CITY_GC%
%CITY_PC%
%ZONE%
%ZONE_GC%
%ZONE_GC%
%COUNTRY%
%COUNTRY_GC%
%COUNTRY_PC%

Share this comment


Link to comment

%CITY% - город, %CITY_GC% - город в родительном пагдеже (кого? чего? нет ...), %CITY_PC% - город в предложном пагдеже (О ком? О чём?)

%ZONE% - регион, %ZONE_GC% - регион в родительном пагдеже, %ZONE_PC% - регион в предложном пагдеже

%COUNTRY% - страна, %COUNTRY_GC% - страна в родительном пагдеже, %COUNTRY_PC% - страна в предложном пагдеже

%MSG_key% - геосообещёние с ключом key

Share this comment


Link to comment

Нет, я про это:

['%COUNTRY%', '%ZONE%', '%CITY%', '%MSG_phone%'],
	[$this->progroman_citymanager->getCountryName(), $this->progroman_citymanager->getZoneName(),
		$this->progroman_citymanager->getCityName(), $this->progroman_citymanager->getMessage('phone')],
	$data['html']

Тут только функции для страны, региона, города и геосообещёния (getZoneName, getZoneMessage...), а для всех осильных %CITY_GC%, %CITY_PC%... как правильно функции написать?

Share this comment


Link to comment
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.