Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Замена данных в HTML


Автозамена

Модуль может делать автозамену в мета-тегах 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://opencartforum.com/files/tutorials/163-{%3F}/.

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

 

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

image.thumb.png.7c8697a9a1a3ca12a9f03c4c9f5169de.png

 

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

image.thumb.png.5c374a87d0f11e98ba4b6f687e85d98d.png

 

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

image.png.e53a4675fd092b6ac416e67ab0da903e.png

 

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

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

image.thumb.png.8ea41d70f83ed2807d7297dc499b86bc.png

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

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

 

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

image.thumb.png.855fa8199d0fe645b6eb9d69c44abf8f.png

 

Код:

$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, автор в праве отказать в техподдержке.

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

 

image.png


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);
        }
    }
}

 

Поделиться комментарием


Ссылка на комментарий

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

<?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);
        }
    }
}

Поделиться комментарием


Ссылка на комментарий

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

Поделиться комментарием


Ссылка на комментарий

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

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

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

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

Поделиться комментарием


Ссылка на комментарий

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

['%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%... как правильно функции написать?

Поделиться комментарием


Ссылка на комментарий
$this->progroman_citymanager->getCityName(); // Воронеж
$this->progroman_citymanager->getCityName('gc'); // Воронежа
$this->progroman_citymanager->getCityName('pc'); // Воронеже
$this->progroman_citymanager->getCityName('', true); // г. Воронеж

 

https://opencartforum.com/files/tutorials/163-poluchenie-dannyh-iz-modulya-strana-region-gorod-i-dr-v-kontrollerah-i-shablonah/

Поделиться комментарием


Ссылка на комментарий

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.