Модификация сгенерированных ссылок из библиотеки URL в opencart

Сначала позвольте мне сказать вам, чего я пытаюсь достичь здесь. Предположим, что есть такой URL http://www.example.com/?id=12345 Теперь я хочу, чтобы в URL был доступен параметр id. Я хочу добавить один и тот же параметр к каждому URL на этой странице. Opencart имеет библиотеку URL, которая генерирует URL, я уверен, что вы все должны быть с ней знакомы, я нашел способ сделать то, что я хочу, но он работает только на некоторых случайных частях сайта, таких как категории, которые генерируют URL с параметром id, добавленным к это и другие не делают.

вот что я пробовал до сих пор

Файл: System / libray / url.php

вот функция

public function link($route, $args = '', $connection = 'NONSSL') {
if ($connection ==  'NONSSL') {
$url = $this->url;
}else {
$url = $this->ssl;
}

$url .= 'index.php?route=' . $route;

if ($args) {
$url .= str_replace('&', '&', '&' . ltrim($args, '&'));
}

foreach ($this->rewrite as $rewrite) {
$url = $rewrite->rewrite($url);
}
if(isset($_GET['id']))
{
if(!empty($this->request->get['id']))
$url .= '&id='.$this->request->get['id'];
if(!empty($_GET['id']))
{
$url .= '&id='.$_GET['id'];
}
}
return $url;
}

0

Решение

Проблема в том, что не все используют этот метод для генерации своих URL.

Например, все, что связано с баннерами (например, модуль «Карусель»), использует ссылки, которые администратор устанавливает вручную в System-> Design-> Banners, поэтому вам также потребуется отредактировать код для этого. Самый простой и, вероятно, правильный способ — это редактировать данные, которые выкладывают модели, например,

model_design_banner->getBanner() становится

public function getBanner($banner_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "banner_image bi LEFT JOIN " . DB_PREFIX . "banner_image_description bid ON (bi.banner_image_id  = bid.banner_image_id) WHERE bi.banner_id = '" . (int)$banner_id . "' AND bid.language_id = '" . (int)$this->config->get('config_language_id') . "'");
if (isset($_GET['id'])) {
array_walk($query->rows, function(&$value) {
$value['link'] .= '&id=' . $_GET['id'];
});
}
return $query->rows;
}

Это либо так, либо отредактируйте вывод в каждом контроллере, который использует этот метод.

Это всего лишь пример для баннеров. Я не припомню, какие другие модули нужно будет редактировать, но если есть какой-то конкретный, который заставляет вас чесать голову, дайте мне знать, и я дам вам другой пример, чтобы это исправить.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]