Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

ocStore 3.0.2.0b1 версия для тестирования


dinox

Recommended Posts

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

немного пересечь потреблядство. 

Меня аж выворачивает от этого всего

А вот тут..

От чего?

Есть авторы этого кода.. которые сказали, та мы, та щас и сделаем ... Три месяца...
И никто не мешал..

Был найден баг, было озвучено. Кто должен его фиксить? Пусто!!!! Даже если это бета..


Есть еще баги - они озвучены - Кто????

Так где потребительство?

Т.е. команда не работает..

И.. почти полтора года.. Пусто..
Уже две минорных версии вышло.. Пусто..

Так что в потребительстве обвинять не надо...

Только при наличии обратной связи будет НЕпотребительство
 

Надіслати
Поділитися на інших сайтах

5 минут назад, chukcha сказал:

А вот тут..

От чего?

Есть авторы этого кода.. которые сказали, та мы, та щас и сделаем ... Три месяца...
И никто не мешал..

Был найден баг, было озвучено. Кто должен его фиксить? Пусто!!!! Даже если это бета..


Есть еще баги - они озвучены - Кто????

Так где потребительство?

Т.е. команда не работает..

И.. почти полтора года.. Пусто..
Уже две минорных версии вышло.. Пусто..

Так что в потребительстве обвинять не надо...

Только при наличии обратной связи будет НЕпотребительство
 

Ой ой ой. Гитхаб коммит - это не барское дело?

 

По остальным багам. Добро пожаловать на гит, там очень много рефакторинга. Всё в ваших руках. Любые инициативы приветствуются.

Надіслати
Поділитися на інших сайтах


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

Любые инициативы приветствуются.

Не дождетесь

Есть команда.. Много рефакторинга? Где он в релизах?

 

 

14 минут назад, Yoda сказал:

это не барское дело?

Не-а.. а смысл..

Смыл только в обратной связи..

 

Надіслати
Поділитися на інших сайтах

2 минуты назад, chukcha сказал:

Не дождетесь

Есть команда.. Много рефакторинга? Где он в релизах?

 

 

Не-а.. а смысл..

Смыл только в обратной связи..

 

Пройдите в гитхаб сходите внимательно просмотрите.

 

Ещё раз повторяю. Есть баг. Багу нужен фикс. Болтать не мешки ворочать. Хотите помочь?

Оформите код и сделайте коммит. Это самый быстрый способ. 

 

  • +1 2
Надіслати
Поділитися на інших сайтах


35 минут назад, Yoda сказал:

Это самый быстрый способ. 

И он не попадет в релиз..

Не интересно..
 

Надіслати
Поділитися на інших сайтах

12 минут назад, chukcha сказал:

И он не попадет в релиз..

 

4 минуты назад, Yoda сказал:

Почему?

Вы прочитали?

Или почему не попадет..

потому что больше года нет релиза

Надіслати
Поділитися на інших сайтах

5 часов назад, Yoda сказал:

Даниэль Керр знать не знает ни про какие массивы.

До Даниэля я вряд ли достучусь, а тут стоило попробовать.

 

5 часов назад, Yoda сказал:

В каком месте туда может попасть массив?

 

Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery".

 

Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php

public function rewrite($link) {
    $url_info = parse_url(str_replace('&', '&', $link));
    if($this->config->get('config_seo_pro')){		
    $url = null;
    } else {	
    $url = '';
    }
    $url_info = parse_url(str_replace('&', '&', $link));
    parse_str($url_info['query'], $data);

    //seo_pro baseRewrite
    if($this->config->get('config_seo_pro')){		
    list($url, $data, $postfix) =  $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id'));	
    }
...
...

И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php

 

public function baseRewrite($data, $language_id) {
		
		
		$url = null;
		$postfix = null;
		
		$language_id = (int)$this->config->get('config_language_id');
			switch ($data['route']) {
				case 'product/product':
				$postfix = true;
	
				if (isset($data['product_id'])) {
					$route = 'product/product';
					$path = '';
					$product_id = $data['product_id'];
					if (isset($data['path'])) {
						$path = $this->getPathByProduct($product_id);
					}
					unset($data);
					$data['route'] = $route;
					if ($path && $this->config->get('config_seo_url_include_path')) {
						$data['path'] = $path;
					}	
					
					$data['product_id'] = $product_id;
				}
					break;
				case 'product/category':
					if (isset($data['path'])) {
						$category = explode('_', $data['path']);
						$category = end($category);
						$data['path'] = $this->getPathByCategory($category);
						//if (!$data['path']) return $url;
					}
					break;
				case 'product/product/review':
				case 'information/information/info':
				case 'product/manufacturer/info':
					break;
				default:
					break;
			}
			
	$queries = array();
		foreach ($data as $key => $value) {
				$query_ = $this->getKeywordByQuery($value);
				//single_url
				if($query_ !== null) {
					unset($data[$key]);
					//common/home
					if($query_  == '')  return [$query_, $data ,  $postfix];
					//common/home
					return ['/' . $query_, $data ,  $postfix];
				}
				//single_url

...
...

Обращаем внимание на это место:

foreach ($data as $key => $value) {
	$query_ = $this->getKeywordByQuery($value);

 

Ну и сам метод "getKeywordByQuery":

public function getKeywordByQuery($query, $language_id = '') {
		
	$store_id = (int)$this->config->get('config_store_id');
			
	if(!$language_id) {
		$language_id = $this->config->get('config_language_id');
	}
	
	if($this->config->get('config_seo_url_cache')){
		if(isset($this->keywords[$query][$store_id][$language_id])) 
			return($this->keywords[$query][$store_id][$language_id]);
		
		
	}
	
	
	$sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1";
	$query = $this->db->query($sql);	
			if ($query->num_rows) {
				return  $query->row['keyword'];
			}
	return;
}

 

Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем:

$this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar'])));

И натыкаемся на тот самый warning

  • +1 1
Надіслати
Поділитися на інших сайтах

5 часов назад, Yoda сказал:

3. С каких пор opencart стал YII и в CodeStyle стало принято передавать post-get данные многомерными массивами?

При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post.

 

5 часов назад, Yoda сказал:

4. Если вы такие умные-кричащие, где вы уже два года с вашими коммитами на GIT?

С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет?

 

5 часов назад, Yoda сказал:

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

Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить.

  • +1 1
Надіслати
Поділитися на інших сайтах

10 минут назад, reDream сказал:

$this->url->link('product/category', 'language=' . $this->config->get('config_language')

Э.. это какая версия?
3.1

ocstore - 3.0

Надіслати
Поділитися на інших сайтах

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

А "баг" найден фильтро писателями.. ..
Ну так научитесь писать свои преобразователи, это не сложно..
И не лезьте в системный..
Это на порядок проще..

А что, собственно, плохого в том, что кто-то "фильтро писатель"?

И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning.

Надіслати
Поділитися на інших сайтах

А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле

parse_str($result['push'], $data);

где уже будет и route и path и другие если надо

понадобится, только валидация для однозначности ссылки..

Надіслати
Поділитися на інших сайтах

9 часов назад, reDream сказал:

И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning.

поддерживаю. есть явная недоработка seo pro для тройки.

  • +1 1
Надіслати
Поділитися на інших сайтах

15 часов назад, Yoda сказал:

Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. 

Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей   напишем и будет нам покушать.

Все сказал? Твоя демагогия уже всем надоела здесь
Не надо впаривать говнокод. А он там реально г.. вно полное
Тебе идею дали чтобы  не было фрагментации ? Дали.
Прислушайся к парням по цеху. У будь более уважителен к ним.
Это не твой говнобложик
И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш
Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart
Только самые критичные
И не гитом а ocmod -м
А снастик (тебе же не дано писать код) там налабал полную пургу

 

Спойлер

 

 

  • +1 8
Надіслати
Поділитися на інших сайтах

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

Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart
Только самые критичные
И не гитом а ocmod -м

поддерживаю на все 100%

  • +1 1
Надіслати
Поділитися на інших сайтах

12 часов назад, reDream сказал:

При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post.

 

С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет?

 

Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить.

За коммит на Гите? Который фиксит системный баг? Вряд-ли. 

Надіслати
Поділитися на інших сайтах


3 часа назад, markimax сказал:

Все сказал? Твоя демагогия уже всем надоела здесь
Не надо впаривать говнокод. А он там реально г.. вно полное
Тебе идею дали чтобы  не было фрагментации ? Дали.
Прислушайся к парням по цеху. У будь более уважителен к ним.
Это не твой говнобложик
И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш
Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart
Только самые критичные
И не гитом а ocmod -м
А снастик (тебе же не дано писать код) там налабал полную пургу

 

  Показать контент

 

 

солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано.

  • +1 1
Надіслати
Поділитися на інших сайтах

  • dinox unpinned та unfeatured this topic
  • 7 months later...
В 26.01.2019 в 01:53, reDream сказал:

До Даниэля я вряд ли достучусь, а тут стоило попробовать.

 

 

Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery".

 

Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php


public function rewrite($link) {
    $url_info = parse_url(str_replace('&', '&', $link));
    if($this->config->get('config_seo_pro')){		
    $url = null;
    } else {	
    $url = '';
    }
    $url_info = parse_url(str_replace('&', '&', $link));
    parse_str($url_info['query'], $data);

    //seo_pro baseRewrite
    if($this->config->get('config_seo_pro')){		
    list($url, $data, $postfix) =  $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id'));	
    }
...
...

И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php

 


public function baseRewrite($data, $language_id) {
		
		
		$url = null;
		$postfix = null;
		
		$language_id = (int)$this->config->get('config_language_id');
			switch ($data['route']) {
				case 'product/product':
				$postfix = true;
	
				if (isset($data['product_id'])) {
					$route = 'product/product';
					$path = '';
					$product_id = $data['product_id'];
					if (isset($data['path'])) {
						$path = $this->getPathByProduct($product_id);
					}
					unset($data);
					$data['route'] = $route;
					if ($path && $this->config->get('config_seo_url_include_path')) {
						$data['path'] = $path;
					}	
					
					$data['product_id'] = $product_id;
				}
					break;
				case 'product/category':
					if (isset($data['path'])) {
						$category = explode('_', $data['path']);
						$category = end($category);
						$data['path'] = $this->getPathByCategory($category);
						//if (!$data['path']) return $url;
					}
					break;
				case 'product/product/review':
				case 'information/information/info':
				case 'product/manufacturer/info':
					break;
				default:
					break;
			}
			
	$queries = array();
		foreach ($data as $key => $value) {
				$query_ = $this->getKeywordByQuery($value);
				//single_url
				if($query_ !== null) {
					unset($data[$key]);
					//common/home
					if($query_  == '')  return [$query_, $data ,  $postfix];
					//common/home
					return ['/' . $query_, $data ,  $postfix];
				}
				//single_url

...
...

Обращаем внимание на это место:


foreach ($data as $key => $value) {
	$query_ = $this->getKeywordByQuery($value);

 

Ну и сам метод "getKeywordByQuery":


public function getKeywordByQuery($query, $language_id = '') {
		
	$store_id = (int)$this->config->get('config_store_id');
			
	if(!$language_id) {
		$language_id = $this->config->get('config_language_id');
	}
	
	if($this->config->get('config_seo_url_cache')){
		if(isset($this->keywords[$query][$store_id][$language_id])) 
			return($this->keywords[$query][$store_id][$language_id]);
		
		
	}
	
	
	$sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1";
	$query = $this->db->query($sql);	
			if ($query->num_rows) {
				return  $query->row['keyword'];
			}
	return;
}

 

Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем:


$this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar'])));

И натыкаемся на тот самый warning

Spasıbo bolshoe

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.