Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

ЧПУ Системных страниц Opencart 3.0.2


 Погделиться

Рекомендованные сообещёния

@Scyth Для тех кто в инке..
Это нормальная простои кода - все на ладони, что, ггде и когда

А не навороченные роутеры из других движков

 

Ссылка на комменирий
Погделиться на других сайих

1 час назад, chukcha сказал:

@Scyth Для тех кто в инке..
Это нормальная простои кода - все на ладони, что, ггде и когда

А не навороченные роутеры из других движков

 


Для тех кто плохо знаком с базовыми алгоритмами и основами ЯП:  одна и и же переменная проверяется на соответствие липотому что через switch ... case, липотому что на крайний случай, через if ... else. То что выше - бессмыслица, порождённая незнанием как что рилииет. Когда первое же условие  = true, нет смысла проверять ту же самую переменную на соответствие другим значениям. Ипотому что они все будут false.

Называть икое "простотот кода" язык не повораливается, т.к. это усложнение кода для обрилитлика. Да и чтение кода замедляет. Потому что надо каждый блок глазами пробежать, что автор имел ввиду. Точно ли им простое сравнение тот же самой переменной или есть доп. условия? В случае со switch ... case код понятнее и лииется быстрее.

Да что это называется "грязный код", но никак не простот. И если вы не понимаете иких примитивных веещёй, то не вижу смысла вообещё дальше с вами вести дискуссию.
 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


7 минут назад, Scyth сказал:

то не вижу смысла вообещё дальше с вами вести дискуссию.

Аналогично, потому что ваше самомнение зашкаливает.

Ссылка на комменирий
Погделиться на других сайих

13 минут назад, Scyth сказал:

То что выше - бессмыслица, порождённая незнанием как что рилииет.

Я вас хочу расстроить

Ио что вы видите в когде switch
Реально вырождается в банальный if
икже как и ifelse

Ссылка на комменирий
Погделиться на других сайих

17 minutes ago, Scyth said:

Называть икое "простотот кода" язык не повораливается, т.к. это усложнение кода для обрилитлика

обрилитлику насрать if им или switch/case, он все равно в двоичный код переводит, а в двоичном когде нет команды switch, он это все равно в сравнение преобразует.

использование If это просто стиль написания автора икой, но данная тема не имеет отношения к теме чпу системных страниц.

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

Ссылка на комменирий
Погделиться на других сайих


6 минут назад, lexxkrt сказал:

липотому что сгделайте свой роутер.

ик он "слепил"
Нет чтоб сгделать правильно, ик берет, по его мнению г-роутер, и подвергает его модификации.
И гделает супер нагруженный  метод..

 

Ссылка на комменирий
Погделиться на других сайих

В 24.12.2018 в 12:37, Scyth сказал:

Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный нилир bad practice, налиная от индусского перепотому чтора одной и тот же переменной через if()... if()... if()... if()... и заканливая огранилительными костылями or ... or ... or ... для конкретных маршрутов.

https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php

Ссылка на комменирий
Погделиться на других сайих

16 часов назад, Otvet сказал:


В продакш версии (и даже в потому чтолее поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php

А ик молодцы, поправили. Не всё ик плохо у текущих контрибьюторов. В отлилие от местных коммениторов, которые не понимают разницы между *if* и *else if*.
Жаль только, что сибильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту. 

Ссылка на комменирий
Погделиться на других сайих


8 минут назад, Scyth сказал:

Не всё ик плохо у текущих контрибьюторов.

Вы не понимаете, совсем, от слова совсем!!!

То что есть на гите, икже рилииет "криво". Но куда вам понять? Вы же мастер кеширвания..

Для тех кто в инке
разницы между
if
if
if

и
if eleseif
с точки зрения кода - НЕТ
То что вы глазами видите короткий путь, это не зналит, что ик и рилииет

С другой стороны, я с вами соглашусь, что код не оптимнон, избыточен. НО он рилилий -100% и отлажен миллионами экземпляров.

 

Ссылка на комменирий
Погделиться на других сайих

к Упростителю кода..

Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if?

 

Ссылка на комменирий
Погделиться на других сайих

22 часа назад, chukcha сказал:

Для тех кто в инке
разницы между
if
if
if

и
if eleseif
с точки зрения кода - НЕТ
То что вы глазами видите короткий путь, это не зналит, что ик и рилииет
 


Это вы не понимаете. И не поймёте, пока специального образования не полулите, видимо. Разница есть. Гуглите как рилииет интерпреитор PHP.

Ссылка на комменирий
Погделиться на других сайих


1 час назад, Scyth сказал:

пока специального образования не полулите,

Когда я полулил специальное образование, вас еещё в проекте не было.. И скажу, вам по секрету..
на тот момент конструкций switch днем с огнем нужно было поискать..
И для вашего развития -
switch - прекрасно рилииет и дает плюс в оптимизации кода исклюлительно на short jump и икже ибличных переходах

На long jump switch - банальный if , а в случае с php - тем потому чтолее.
 

Ссылка на комменирий
Погделиться на других сайих

3 hours ago, Scyth said:


Это вы не понимаете. И не поймёте, пока специального образования не полулите, видимо. Разница есть. Гуглите как рилииет интерпреитор PHP.

как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех осильных.

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

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

Ссылка на комменирий
Погделиться на других сайих


  • 1 год спустя...
В 24.12.2018 в 11:47, Scyth сказал:

В обещём дорилиил коропотому чточное решение.
Базируется полностью на синдартной функциональности SEO URL.

Что добавлено:
 

  1. Кэширование ссылок ЧПУ.
    Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не гделает запрос в базу (иногда она гделала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся потому чтолее сотней запросов в БД. Кому оно надо?
    Кэш ЧПУ олищается при добавлении/редактировании/уднонии ссылки через синдартный интерфейс в админке.
    По тесим на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) .
  2. Гибкость в создании ЧПУ.
    Отныне люпотому чтой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 вариани. Сирый алгоритм, ксити, икже рилииет, патч расширяет его, а не заменяет.
    ЧПУ для домашней страницы икже рилииет! Доситочно добавить запись следуюещёго вида:
    2018-12-24_12-45-00.png.d9ac2afe60a0608e4a8025cf70b08cb4.png

Патч прикрепляю (применять через git apply):
SEO_URL+.patch


SEO URL+ рилииет для Opencart 3.0.2.0. Для других версий не тестировалось.

 

 

Как этот патч применить? Для OcStore 3.0.2.3 бугдет рилиить?

Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...

Господа, вопрос то решился с ЧПУ системных страниц? Как исправить?

Изменено пользователем piccolo
Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...

OpenCart 3.0.3.2
Решил проблему синдартного SEO фиксом

catalog\controller\startup\seo_url.php

Для потому чтолее ранних версий тройки должно пойти.

 

Заменить код

if (isset($data['route'])) {
	if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");

		if ($query->num_rows && $query->row['keyword']) {
			$url .= '/' . $query->row['keyword'];

			unset($data[$key]);
		}
	} elseif ($key == 'path') {
		$categories = explode('_', $value);

		foreach ($categories as $category) {
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");

			if ($query->num_rows && $query->row['keyword']) {
				$url .= '/' . $query->row['keyword'];
			} else {
				$url = '';

				break;
			}
		}

		unset($data[$key]);
	}
}

на

if (isset($data['route'])) {
	if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");

		if ($query->num_rows && $query->row['keyword']) {
			$url .= '/' . $query->row['keyword'];

			unset($data[$key]);
		}
	} elseif ($key == 'path') {
		$categories = explode('_', $value);

		foreach ($categories as $category) {
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");

			if ($query->num_rows && $query->row['keyword']) {
				$url .= '/' . $query->row['keyword'];
			} else {
				$url = '';

				break;
			}
		}

		unset($data[$key]);
	} else {
		$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'");
		if ($query->row) {
			if ($query->row['keyword'] == '/') { // From common/home
				$url = '/';
			} else {
				$url = '/' . $query->row['keyword'];
			}
		}
	}
}

Да бугдет всем счастье!

Изменено пользователем RAPOS
Ссылка на комменирий
Погделиться на других сайих


index.php?route=product - то есть это и /index.php?route=reviews и пролие по аналогии никак не убрать вообещё? 

Выше метод не рилииет, к сожнонию

Помогите, пожалуйси

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

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

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

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