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

Recommended Posts

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

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


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

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

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


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

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

Спойлер

bHemfRP.png


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

 

Спойлер

QKFtQto.png


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

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

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


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

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

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

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

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

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

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

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

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


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

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

Спойлер

image.png.caac5d6332373d4d259c8c2c90b7bd62.png

 

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

 

Спойлер

image.thumb.png.6e9bbdd54a4a84fdcdfa1d7847064504.png

 

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

Спойлер

image.png.75bf7e6945366c45158ee04806bbc4c8.png

 

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

Спойлер

image.png.d44fc4be408605d03a77518cf1cb7524.png

 

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

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

 

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

 

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

Змінено користувачем Reanimaster
Надіслати
Поділитися на інших сайтах


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

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

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

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


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

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

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

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

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

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

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

Спойлер

image.png.17555d80f2d84ca85fd1d7462124a78f.png

 

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

 

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

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

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

 

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

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


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

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

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

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


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

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

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

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

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

Спойлер

Lx6SDbW.png

 

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

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

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

 

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

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


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

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

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

 

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

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

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

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

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

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

 

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

Спойлер

image.thumb.png.602784ce8d820a19bc564e9ca9e6ae9c.png

 

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


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

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

 

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

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

image.thumb.png.602784ce8d820a19bc564e9ca9e6ae9c.png

 


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

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

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

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

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

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

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

 

Почему это работает

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

 

Змінено користувачем Reanimaster
Надіслати
Поділитися на інших сайтах


Только что, 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']);

 

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

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

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

Змінено користувачем Reanimaster
Надіслати
Поділитися на інших сайтах


П.С. 

 

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

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

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

 

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

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

 

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

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

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

 

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

 

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

Змінено користувачем Malciska
Надіслати
Поділитися на інших сайтах


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

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

 

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

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


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

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

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

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

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

П.С. 

 

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

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

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

 

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

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

 

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

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

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

 

 

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

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

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

Спойлер

image.png.48b8af485a8c47f776f38c20f4d2c2ab.png

 

 

Спойлер

image.thumb.png.bc00cee301d83ff74727d8242c050291.png

 

 

Далее уже даже так сделал.
 

Спойлер

image.thumb.png.7a3db3a19614a8f6b1adbc1421764e04.png


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

 

 

Спойлер

image.thumb.png.c32e72446a214c88577c09589cd6d2ec.png

 

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


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

Далее уже даже так сделал.

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

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

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

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

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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