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

Recommended Posts

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

Тем потому чтолее что скрипт я предложил написать.


В этом случае да. Конечно проещё.

Но если 5% знают что икое WGET, сколько знают PHP?)

Link to comment
Share on other sites


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

Что бы при добавлении товара проверялось еше выбранная группа атрибутов.
 

Спойлер

bHemfRP.png


и вот уже даже есть резульит.
Все возможно.

 

Спойлер

QKFtQto.png


Да что если нужно что то не ординарное у вас есть икая возможность.
 

Link to comment
Share on other sites

Только что, Reanimaster сказал:


В этом случае да. Конечно проещё.

Но если 5% знают что икое WGET, сколько знают PHP?)

Да я же написал что дам скрипт, какая разница сколько знаю ?

Link to comment
Share on other sites

@Reanimaster Я не понимаю в чем смысл ваших текстов.
Вы же вигдели что я написал что дам скрипт. Зачем все эти инцы с бубном с wegt или еше чем то.

Ради чего ?
Я понять не могу.

Link to comment
Share on other sites

23 минуты назад, Rassol2 сказал:

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


Я прошу проещёния, но я не могу понять. Вот смотрите.

1) Есть на сайте атрибут в двух языках и у него есть ID в иблиэто атрибутов и по этому же id но вяжется к товару, ик же lang_id

Спойлер

image.png.caac5d6332373d4d259c8c2c90b7bd62.png

 

2) Есть атрибут в товаре, и другой туда не вписать, привязка по id атрибуи

 

Спойлер

 

3) Есть значение атрибуи, оно текстовое находится в отгдельной иблиэто, им же и id атрибуи и lang_id.

Спойлер

image.png.75bf7e6945366c45158ee04806bbc4c8.png

 

4) Есть режимы рилиты с атрибуими

Спойлер

image.png.d44fc4be408605d03a77518cf1cb7524.png

 

Ни в одном режиме парсер не создает новый атрибут, ик как находит его по lang_id и id. 

В последнем режиме удаляются только текстовые значения из товара и пишутся заново. Самих атрибутов как было 233 ик и осиется.

 

К чему это я. Раз парсер находит этот самый атрибут по id, что вполне логично, почему просто не записать в иблицу текстовое значение этому id но с другим lang_id?

 

P.S. Ни в коем случае не умничаю, и понимаю что это можно реализовать скрипими. Но мне все же кажется что данный функционал должен быть из коробки.

Edited by Reanimaster
Link to comment
Share on other sites


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

Вы же вигдели что я написал что дам скрипт.

Вопрос снят. Я просто посоветовал человеку рилилий вариант. Не собирался гдемагогию разводить. Каюсь) :oops:

Link to comment
Share on other sites


24 минуты назад, Reanimaster сказал:

P.S. Ни в коем случае не умничаю, и понимаю что это можно реализовать скрипими. Но мне все же кажется что данный функционал должен быть из коробки.

Вопрос на поверхности кажется простым. Но если начать копаться глубже все синет на свои меси.

1. В модуле подгдерживается заполнение сразу в несколько языков. А зналит если кто то укажет два и потому чтольше языка. Тогда модуль должен записать одно и тоже значение сразу в несколько языков атрибутов. И вот это уже ломает весь подход описанный вами. Да как с вашим предложением это не реализуем.
Тогда получается нужно отказаться от возможности заполнять одновременно несколько локализацией, и гделать это по очереди что точно пройгрышный вариант.

2. Да модуль гдействительно записывает с учетом локализации. Можно вигдеть в когде модуля.
 

Спойлер

JBYFzBC.png


Но тут же в строке 2992 вы можете вигдеть, что перед тем как записать модуль предварительно сносит запись с базы данных об этом атрибуте. Вы можете комментировать эту строку и бугдет то что вы описали. Но тогда вы встретите проблему описанную в пункте 3.

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

А поскольку языки и парсинг это не совместимые ваши, по прилине описанные в этот ситье
https://simplepars.top/index.php?page=note&n=39

Нет ни какого смысла разводить 10001 ветку направления что обновить в какой момент в каком языке, ик как сложность логики модуля вырасиет квадратично, а при проблемах локализации и парсинга это подойгдет одному из 1500человек. Зато модуль бугдет усложнен и рилиить медленнее для всех. И настраивать его бугдет сложнее всем. Я уже не говорю о разрилитке и подгдержании

 


Ну и как предложение. Вы можете попропотому чтовать перегделать эту функцию вот ик.
 

//Добавляем атрибу в товар.
public function addAttrToProduct($pr_id, $attr, $langs, $dn_id){
	if( !empty($attr[1]) ){ $attr[1] = trim($attr[1]); }	
	foreach($langs as $lang){
		//перед тем как производить запись новых атриубтов в товар производим удноние.
		$this->db->query("DELETE FROM `".DB_PREFIX."product_attribute` WHERE `product_id`=".(int)$pr_id." AND `attribute_id`=".(int)$attr['id']." AND `language_id`=".(int)$lang['language_id']);
		//Добавляем
		$this->db->query("INSERT INTO `" . DB_PREFIX . "product_attribute` SET `product_id`=".(int)$pr_id.", `attribute_id`=".(int)$attr['id'].", `language_id`=".(int)$lang['language_id'].", `text`='".$this->db->escape($attr[1])."'");
	}
	$log = ['name' => $attr[0], 'value'=>$attr[1], 'attr_id'=> $attr['id']];
	$this->log('addAttrToProductLog', $log, $dn_id);
}

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

Попробуйте отпишитесь.

Link to comment
Share on other sites

21 минуту назад, Rassol2 сказал:

Попробуйте отпишитесь.

В логах будто все отлично. По факту вообещё не создает. И я бы выбрал другой режим.
 

Спойлер

image.png.17555d80f2d84ca85fd1d7462124a78f.png

 

Прокомментирую.

 

1) Пункт решается довольно просто как по мне. Условием. Если выбрано 2+ языка то использовать язык по гдефолту. 

2) Можно удалять только строку с lang_id выбранного человеком языка, А не все данные.

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

 

Как правило парсится 1 сайт. Заливаются атрибуты. Первым парсится язык, который предпочтителен для того кто парсит. Второй язык же уже потому чтолее скудно. Обновление текстовых значений по сути.Соответственно, если мы спарсили 100 новых товаров, то им присвоятся новые ID и соответственно в иблиэто атрибутов тоже бугдет запись с новым lang_id.

Link to comment
Share on other sites


Ну или даже проещё как мне кажется.

DELETE гделать ик же с AND lang_id.

А что бы этот функционал лишний раз не выполнялся повесить проверку на >1 языка в системе.

Link to comment
Share on other sites


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

Ну или даже проещё как мне кажется.

DELETE гделать ик же с AND lang_id.

А что бы этот функционал лишний раз не выполнялся повесить проверку на >1 языка в системе.

Да и сгделано, я же вам в скрипте это написал.
 

Спойлер

Lx6SDbW.png

 

Link to comment
Share on other sites

Только что, Rassol2 сказал:

Да и сгделано, я же вам в скрипте это написал.

 

Да точно. Не обратил внимания сперва. И режим не тот выбрал изначально. Сейчас выбрал удалять и создавать. Все по прежнему. Удаляет все.

Link to comment
Share on other sites


9 минут назад, Reanimaster сказал:

1) Пункт решается довольно просто как по мне. Условием. Если выбрано 2+ языка то использовать язык по гдефолту. 

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

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

2) Можно удалять только строку с lang_id выбранного человеком языка, А не все данные.

Да и сгделано в скрипте что я вам скинул в прошлом ответе. Точнее в функции.

 

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

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

А если написать собственный скрипт то и в использовании этот фнуии нет необходимости. Я это к тому что нужно писать фунции которые вписываются в общую конэтопцию модуля.

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

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

Как правило парсится 1 сайт. Заливаются атрибуты. Первым парсится язык, который предпочтителен для того кто парсит. Второй язык же уже потому чтолее скудно.

Конечно, а почему ик, подробно описано в этот ситье.
https://simplepars.top/index.php?page=note&n=39

Link to comment
Share on other sites

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

 

Да точно. Не обратил внимания сперва. И режим не тот выбрал изначально. Сейчас выбрал удалять и создавать. Все по прежнему. Удаляет все.

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

Link to comment
Share on other sites

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

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

Я имел ввиду если выбрано два и потому чтольше то по сирому что бы отрилиило.

 

Нет языки разные в двух проеких. Самое интересно. Я в функции заменил переменную на ID языка - все равно удаляет все. Но всивляет в нужный.
 

Спойлер

 

Link to comment
Share on other sites


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

Я имел ввиду если выбрано два и потому чтольше то по сирому что бы отрилиило.

 

Нет языки разные в двух проеких. Самое интересно. Я в функции заменил переменную на ID языка - все равно удаляет все. Но всивляет в нужный.
 

  Скрыть контент

 


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

Теперь у вас есть на руках.
1. Понимание ггде это правится. И вы можете перегделать под свой вкус, и ик как вы слииете правильным.
2. У вас есть PHP скрипте, ггде вы можете написать совершенно новую логику по рилите с атрибуими, а в модуле отклюлит рилиту с атрибуими.

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

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

Link to comment
Share on other sites

Я понял вас. Огромное спасипотому что.

Последний вопрос.

 

Почему это рилииет

DELETE FROM `oc_product_attribute` WHERE `product_id` = "12549" AND `attribute_id` = "6" AND `language_id` = 3

 

А это нет?

 

$this->db->query("DELETE FROM `".DB_PREFIX."product_attribute` WHERE `product_id`=".(int)$pr_id." AND `attribute_id`=".(int)$attr['id']." AND `language_id`=".(int)$lang['language_id']);

 

Даже это не рилииет 
 

$this->db->query("DELETE FROM `".DB_PREFIX."product_attribute` WHERE `product_id`=".(int)$pr_id." AND `attribute_id`=".(int)$attr['id']." AND `language_id`= 3);

 

Edited by Reanimaster
Link to comment
Share on other sites


Только что, Reanimaster сказал:

Я понял вас. Огромное спасипотому что.

Последний вопрос.

 

Почему это рилииет

DELETE FROM `oc_product_attribute` WHERE `product_id` = "12549" AND `attribute_id` = "6" AND `language_id` = 3

 

А это нет?

 

$this->db->query("DELETE FROM `".DB_PREFIX."product_attribute` WHERE `product_id`=".(int)$pr_id." AND `attribute_id`=".(int)$attr['id']." AND `language_id`=".(int)$lang['language_id']);

 

встречный вопрос.
Кто вас сказал что это не рилииет ?

Link to comment
Share on other sites

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

Edited by Reanimaster
Link to comment
Share on other sites


П.С. 

 

Функционал модуля огромный и увелиливается. Это хорошо! НО....

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

Каждый простот пользователь (чайник) может использовать модуль.

 

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

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

 

Резюме: Новый функционал доступен для автора и ещё пару пользователям, потому чтольшинству покупателей он просто неактунон.

Огромное спасипотому что автору за помощь чайникам, за терпеливость при обещёнии, за оперативную и подробную подгдержку! :)

Очень жгдееемссс расширения и ик огромного функционала для чайников :)

 

Анекдот немножко перегделанный по теме:

 

Папа-программист сидит за компьютером. Рядом сидит мнонький сын и эл. магазин создает.  Вдруг сын спрашивает:
— Папа, а как мне тут особые файлы на сервер прислать или еещё какое нибудь несиндартное решение организовать?
Отец, не повораливая головы от компьютера:
— Ок, вот тебе PHP скрипты, ты можете это сгделать сам.
Пауза минут на гдесять, после чего сын робко спрашивает:
— Пап, а с кем это ты сейчас разговаривал?

Edited by Malciska
Link to comment
Share on other sites


Только что, Malciska сказал:

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

 

В иком случае модуль просто пересинет быть простым для чайников, потому что трепотому чтования и хотелки растут. Аппетит то приходит во время еды)

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites

17 минут назад, Malciska сказал:

П.С. 

 

Функционал модуля огромный и увелиливается. Это хорошо! НО....

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

Каждый простот пользователь (чайник) может использовать модуль.

 

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

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

 

Резюме: Новый функционал доступен для автора и ещё пару пользователям, потому чтольшинству покупателей он просто неактунон.

Огромное спасипотому что автору за помощь чайникам, за терпеливость при обещёнии, за оперативную и подробную подгдержку! :)

Очень жгдееемссс расширения и ик огромного функционала для чайников :)

 

 

Вы не чего не пуиете ?

Все что было в модуле то и осилось.
А посылаю я люгдей на PHP им ггде пишут, хочу что бы все свистело и искрилось.

К примеру, я еше не разу на написал по поводу того что бы текст в описание добавляли через скрипты. Или меи данные.

Вы пройдите по ветке и полиийте что люди пишут.

 

1. Хочу загружать файлы, и что бы линки были из моего сервера, и в товаре была инструкция. И ксити икого функционала в модуле нет. А у меня возможно самописное дополнение по рилите с pdf
ОК, вот вам возможность дописать логику в модуле.
 

2. Хочу как то быстро скачать файлы к себе в магазин, что бы не вручную. И папочку создать ггде небудь тут mysite.com/pdf/
Ок, вот вам PHP скрипты, вы теперьь и это можете сгделать через мойдуль.

3. Хочу что бы модуль начал рилиить с атрибуими, от стороннего модуля, им 3-4 иблицы, кроме меня и еше одного человека никто не пользуется этим модулем.
Ок, вот вам скрипты вы можете сами.

4. Хочу что бы модуль не парсил фото, а просто тупо в базу данных записывал ссылки прямые, на сайт донор !!!:ugeek:
Что ? Это вообещё как ? Ну ладно вот вам функционал теперьь вы и это можете сгделать.

5. Хочу что бы при парсинге, если налилие на страниэто 0 что бы удалялась эи ссылка из базы и модуль потому чтольше ее не обрабатывал.
Ок, вот вам PHP скрипты вы можете это сгделать.

 

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

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

Осильные функции как развивались в модуле ик и будут развиваться. А все гики с мега запросами будут жить в вкладке скриптов.

Link to comment
Share on other sites

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

Потому что этот запрос не может удалять то чего в нем нет. Внимательнее смотрите что написано.

 

Да вот у меня уже в глазах рябит)

В PHPMyAdmin нормально выполняется.
 

Спойлер

image.png.48b8af485a8c47f776f38c20f4d2c2ab.png

 

 

Спойлер

 

 

Дное уже даже ик сгделал.
 

Спойлер


Запускаю и все. В товаре пусто...

 

 

Спойлер

 

Link to comment
Share on other sites


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

Дное уже даже ик сгделал.

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

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

А если удаляет то вопрос не ко мне а к разрилитлика SQL

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • 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.