В тази статия ще опитам да разкрия максималните възможности при написването на своя логика с PHP. Тази статия не е предназначена за тези, които са далеч от програмирането; точно за онези, които сами режират и могат да преработят парсера според своите нужди, но решават да спестят време и да използват вградените скриптове.
В PHP скриптовете се поддържа напълно достъп до всички функции на модула SimplePars. Също така и до всички вградени методи, достъпни от раздела “model” в OpenCart.
Пример Ако ви е необходимо да изпълнявате собствени SQL заявки, няма нужда да държите данните за връзка с базата в скрипта. Просто извиквайте вградения метод на OpenCart: $this->db->query(“Тук вашият заявка”); Ако използвате извличане на данни от базата данни, имайте предвид, че OpenCart връща обект, съдържащ три основни блока:
- Брой избрани редове.
- Един произволен ред.
- Всички редове, изпаднали в избора.
Например, ако изпращате заявка:
Отговор:
stdClass Object
(
[num_rows] => 29
[row] => Array
(
[product_id] => 15182
[model] => lol
[sku] => 003527
)
[rows] => Array
(
[0] => Array
(
[product_id] => 15182
[model] => lol
[sku] => 003527
)
[1] => Array
(
[product_id] => 15181
[model] => lol
[sku] => 003689
)
[2] => Array
(
[product_id] => 15160
[model] => 15160
[sku] => RFPLBXEU06G
)
................
При обновление и вмъкване на нови данни, няма да има връщане на стойности. Това е единственото, върху което ще се спра.
В останалите случаи, ако четете тази статия, трябва да разбирате как работи OpenCart.
Какви данни модулът предава на скрипта и какви връща? Това е най-важната част от този функционал! Заради нея всичко е написано.
По време на изпълнението на скрипта, модулът получава различни набори от данни!!! Тези данни можете да използвате за написване на своя модулна логика, както и за тяхната модификация и връщане обратно на модула. Тоест, ако ви липсва възможност за търсене и замяна при обработката на границите, можете в своя собствен скрипт, използвайки цялата мощ на PHP, да обработите данните в границата на парсинга и да ги върнете на парсера. Той след това ще приложи получените данни точно там, където искате. !!!
В зависимост от мястото, на което се използва скрипта, наборът от данни, който се предава на модула, се променя. Всички данни се предават в многомерен масив с име $script_data. Обърнете внимание, че след изпълнението на работата модулът също ще се обърне към този масив и ще върне данните обратно за своята работа. Това означава, че ако искате да промените нещо в данните, просто ги извадете от този масив, ги променете и ги върнете на мястото. Този хук прехвърля всички данни от модула SimplePars във вашия скрипт и след това ги връща обратно за своята работа.
При изпълнение на скрипта по всяко време имате достъп до: $script_data[‘dn_id’] – (int) Числова стойност, която указва id на проекта, с който работите. $script_data[‘setting’] – Многомерен масив, съдържащ всички настройки на SimplePars, по-точно съдържанието на базата данни oc_pars_setting.
Пример:
Array
(
[dn_id] => 1
[pre_view_param] => 1
[pre_view_syntax] => 1
[dn_name] => svetavto.com.ua
[link_list] =>
[link_error] =>
[page_cou_link] => 100
[pars_stop] => 1
[pars_pause] => 0
[type_grab] => 1
[thread] => 1
[filter_round_param] =>
[filter_round_depth] =>
[filter_round_slash] => 0
[filter_round_domain] => 1
[filter_round_rules] =>
[filter_link_param] =>
[filter_link_depth] =>
[filter_link_slash] => 0
[filter_link_domain] => 1
[filter_link_rules] =>
[action] => 3
[sid] => sku
[grans_permit] => 0
[scripts_permit] => 1
[u_manufac] => 0
[u_des] => 0
[u_cat] => 0
[u_img] => 0
[u_attr] => 0
[u_opt] => 0
[u_made_meta] => 0
[u_up_url] => 0
[r_store] => Array
(
[0] => 0
[1] => 1
[2] => 2
)
[r_lang] => Array
(
[0] => 1
)
[r_model] => 2
[r_sku] => 0
[r_name] => 1
[r_made_url] => 2
[r_made_meta] => 1
[r_price] => 1
[r_price_spec] => 1
[r_price_spec_groups] => all
[r_price_spec_date_start] => 2019-10-08
[r_price_spec_date_end] => 2019-11-14
[r_cost] => 0
[r_quant] => 1
[r_product_status] => 1
[r_status_zero] => 7
[r_manufac] => 1
[r_manufac_made_url] => 2
[r_manufac_made_meta] => 1
[r_des] => 1
[r_des_dir] => 0
[r_cat] => 1
[r_cat_perent] => 2
[r_cat_made_url] => 2
[r_cat_made_meta] => 1
[r_img] => 1
[r_img_dir] => 1
[r_attr_group] => 3
[r_attr] => 1
[r_opt] => 0
[r_upc] => 0
[r_ean] => 0
[r_jan] => 0
[r_isbn] => 0
[r_mpn] => 0
[r_location] => 0
[r_minimum] => 0
[r_subtract] => 0
[r_length] => 0
[r_width] => 0
[r_height] => 0
[r_length_class_id] => 0
[r_weight] => 0
[r_weight_class_id] => 0
[r_sort_order] => 0
[r_status] => 0
[r_layout_pr] => 0
[r_tags] => 0
[r_hpm] => 1
[logs_reverse] => 0
[logs_mb] => 10000
[vers_op] => ocstore2
)
Array
(
[id] => 910
[dn_id] => 1
[proxy_use] => 0
[timeout] => 10
[connect_timeout] => 10
[protocol_version] => 2
[header_get] => 1
[followlocation] => 0
[cookie_use] => 1
[cookie_up] => 1
[cookie_session] => 1
[user_agent_use] => 1
[user_agent_change] => 1
[user_agent_list] => User-Agent: Mozilla/5.0 (Linux; Android 9; SM-G965F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36
[header_use] => 1
[header_change] => 1
[header_list] => Array
(
[0] => Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[1] => Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
[2] => Accept-Encoding: gzip, deflate
[3] => Referer: http://act.simplepars.top/
[cookies] => Cookie: PHPSESSID=k85mh8k2f2qe08ju3o8qu910k0; language=ru; currency=UAH; yams_lang=en; BITRIX_SM_GUEST_ID=25978438; BITRIX_SM_LAST_VISIT=24.06.2021+15%3A27%3A39; USER_COUNTRY=UA; USER_REGION_NAME=%25D0%259A%25D0%25B8%25D0%25B5%25D0%25B2; USER_ZIP=deleted;
[user_agent] => User-Agent: Mozilla/5.0 (Linux; Android 9; SM-G965F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36
)
[cache_page] => 0
[ch_connect_timeout] => 10
[ch_timeout] => 10
[ch_url] => https://svetavto.com.ua/xenon/ksenonovaya-lampa-clearlight-d2r-6000k-blue-vision-ultra.html
[ch_pattern] => 005370
[auth_use] => 0
[auth_url] => https://svetavto.com.ua/login/
[auth_data] => Array
(
[email] => support@simplepars.top
[password] => 111111
)
[auth_type] => 1
[auth_url_check] => https://svetavto.com.ua/led/panel_priborov/t5-w1-2w-3smd-3528-sinij-12v-c-p-15220.html
[auth_str] => Rassol2
[webp_conv] => 0
[cookies] => Cookie: PHPSESSID=k85mh8k2f2qe08ju3o8qu910k0; language=ru; currency=UAH; yams_lang=en; BITRIX_SM_GUEST_ID=25978438; BITRIX_SM_LAST_VISIT=24.06.2021+15%3A27%3A39; USER_COUNTRY=UA; USER_REGION_NAME=%25D0%259A%25D0%25B8%25D0%25B5%25D0%25B2; USER_ZIP=deleted;
)
При изпълнение на скрипта преди парсването на линкове.
Допълнителна стойност, достъпна при изпълнение на скрипта преди парсването на линкове. $script_data[‘urls’] – (масив) Едномерен масив, който съдържа линковете за парсване. Обикновено съдържа от един до пет стойности в зависимост от броя потоци. Има ключове от 0 до 4.
Преди парсването в интернет магазина и след него (Същият набор данни след парсването в интернет магазина)
В този случай модулът ще предаде управлението на вашия скрипт след изпълнение на търсенето и замяната, но преди да запише данните в продукта съобразно логиката на страницата за парсване в интернет магазина. Тук имате достъп до максимално количество данни.
$script_data[‘url’] – (строка) Съдържа линка към донорския сайт, от който в момента се обработват данните. $script_data[‘permit’] – Многомерен масив, който съдържа два блока:
add (добавяне) – Ако продуктът е разрешен за добавяне.
up (обновление) – Ако продуктът е разрешен за обновление.
Продуктът може да се обновява или добавя, в зависимост от стойността на “permit” в съответния блок. Стойността на “pr_id” съдържа идентификационния номер на продукта при обновление или ако скриптът се изпълнява след създаването на нов продукт.
В останалите случаи, там се съдържа стойност 0.
Пример
Array
(
[add] => Array
(
[permit] => 0
[pr_id] => 0
)
[up] => Array
(
[permit] => 1
[pr_id] => 15200
)
)
$script_data['form'] - Многомерен масив, който съдържа всички обработени данни след търсене и замяна и са готови за предаване на "Парсинг в ИМ" (интеграция в интернет магазина).
Пример
Array
(
[id] => 976
[dn_id] => 1
[model] => lol
[sku] => 003858
[name] => H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.)
[price] => 11550
[price_spec] =>
[cost] =>
[quant] =>
[quant_d] => 111
[des] =>
[des_d] =>
[des_dir] => description
[manufac] => Philips
[manufac_d] => 0
[cat] => Array
(
[0] => LED (Светодиоды)
[1] => Светодиоды в противотуманные фары
)
[cat_d] => 0
[img] => Array
(
[0] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632863_w640_h640_img_015_result-800x800-w-30-0-0.jpg
[1] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632870_w640_h640_img_016_result-800x800-w-30-0-0.jpg
[2] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632875_w640_h640_img_017_result-800x800-w-30-0-0.jpg
[3] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632884_w640_h640_img_020_result-800x800-w-30-0-0.jpg
)
[img_d] =>
[img_dir] => product
[img_name] =>
[attr] => Array
(
[1] => Array
(
[0] => Код товара:
[1] => 003858
)
[2] => Array
(
[0] => Производитель:
[1] => LED SOLUTION
)
[3] => Array
(
[0] => Цоколь
[1] => H11-H8
)
[4] => Array
(
[0] => Напряжение
[1] => 12V
)
[5] => Array
(
[0] => Тип св. элемента
[1] => SMD 3535
)
[6] => Array
(
[0] => Количество св. элементов
[1] => 21
)
[7] => Array
(
[0] => Обманка (Canbus)
[1] => Нет
)
[8] => Array
(
[0] => Драйвер (cтабилизатор напр.)
[1] => Нет
)
[9] => Array
(
[0] => Цвет
[1] => Белый
)
[10] => Array
(
[0] =>
[1] =>
)
)
[opt_name] => {|}0
[opt_value] =>
[opt_price] =>
[opt_quant] =>
[opt_quant_d] =>
[opt_imgs] =>
[opt_data] => {required_1}{price_prefix_+}{imgs_type_0}
[grans_permit_list] => Array
(
)
[upc] =>
[ean] =>
[jan] =>
[isbn] =>
[mpn] =>
[location] =>
[minimum] => 1
[subtract] => 1
[length] => 0.00
[width] => 0.00
[height] => 0.00
[length_class_id] => 1
[weight] => 0.00
[weight_class_id] => 1
[status] => 1
[layout_pr] => 0
[layout_cat] => 0
[tags] =>
[sort_order] => 0
[seo_url] => H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.)
[seo_h1] => H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.)
[seo_title] => Кипить в интернет магазине H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.)
[seo_desc] => Купить самый дорогой товар H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.) В нашем интернет магазине Лололо Гарант!
[seo_keyw] => 003858, 11550, LED (Светодиоды)Светодиоды в противотуманные фары
[cat_seo_url] => LED (Светодиоды)Светодиоды в противотуманные фары
[cat_seo_h1] => LED (Светодиоды)Светодиоды в противотуманные фары
[cat_seo_title] => LED (Светодиоды)Светодиоды в противотуманные фары
[cat_seo_desc] => описание категории LED (Светодиоды)Светодиоды в противотуманные фары
[cat_seo_keyw] => Теги категории LED (Светодиоды)Светодиоды в противотуманные фары
[manuf_seo_url] => Производитель
[manuf_seo_h1] => 12
[manuf_seo_title] => 13
[manuf_seo_desc] => 14
[manuf_seo_keyw] => 15
[hpm_sku] =>
[opts] => Array
(
)
[script_gran] => Array
(
[7781] => 003858
[7782] => H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.)
[7783] => 11550
[7784] =>
[7785] => H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.)
[7787] => Код товара:{csvnc}003858{csvnc}Производитель:{csvnc}LED SOLUTION{csvnc}Цоколь{csvnc}H11-H8{csvnc}Напряжение {csvnc}12V{csvnc}Тип св. элемента{csvnc}SMD 3535{csvnc}Количество св. элементов{csvnc}21{csvnc}Обманка (Canbus){csvnc}Нет{csvnc}Драйвер (cтабилизатор напр.){csvnc}Нет{csvnc}Цвет{csvnc}Белый{csvnc}
[7790] => itemscope itemtype="http://schema.org/BreadcrumbList">
Главная
LED (Светодиоды)
Светодиоды в противотуманные фары
H11-H8 (PGJ19-2) 21smd (3535) белый_12V_C-P.(21220) (шт.)
[7786] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632863_w640_h640_img_015_result-800x800-w-30-0-0.jpg
[7788] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632870_w640_h640_img_016_result-800x800-w-30-0-0.jpg{csvnc}https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632875_w640_h640_img_017_result-800x800-w-30-0-0.jpg{csvnc}https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21220/133632884_w640_h640_img_020_result-800x800-w-30-0-0.jpg
[7791] => LED (Светодиоды){csvnc}Светодиоды в противотуманные фары
)
)
Пример
Array
(
[title] => Array
(
[0] => Ссылка
[1] => Артикул
[2] => Навзание
[3] => Цена
[4] => Главное фото
[5] => Доп фото
[6] => Категории
)
[value] => Array
(
[0] => Array
(
[0] => https://svetavto.com.ua/led/protivitymanki/h11-h8-pgj19-2-7-5w-cob-belyj-12v-c-p-21219.html
[1] => 003845
[2] => H11-H8 (PGJ19-2) 7,5W COB белый_12V_C-P.(21219) (шт.)
[3] => 10749
[4] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21219/133632788_w640_h640_img_093_result-800x800-w-30-0-0.jpg
[5] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21219/133632791_w640_h640_img_094_result-800x800-w-30-0-0.jpg
[6] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21219/133632797_w640_h640_img_095_result-800x800-w-30-0-0.jpg
[7] => LED (Светодиоды)
[8] => Светодиоды в противотуманные фары
)
)
)
В блока "title" се предава редоследъкът на имената на колонките.
В блока “value” – това е многомерен масив, където първо ниво са редовете в CSV, а второ ниво са колонките.$script_data[‘script_gran’] – Масив, който съдържа всички граници за парсване, настроени в проекта. Всички граници след обработката на търсенето и замяната.Обърнете внимание, че ключовете в този масив съответстват на номерата на границите за парсване. Например, {gran_7782} = $script_data[‘script_gran’][7782].
Пример
Array
(
[7781] => 003129
[7782] => H3 (PK22s) 13smd (5050) белая_12V_C-P.(21020) (шт.)
[7783] => 1232
[7784] => Светодиодная (LED) лампочка с цоколем H3. Применение - противотуманная фара.
Характеристики: 13 светодиодов SMD5050, световой поток - 182Lm, 12V. Цвет: белый.
Преимущество светодиода: высокая яркость, низкое энергопотребление, длительный срок службы.
[7785] => H3 (PK22s) 13smd (5050) белая_12V_C-P.(21020) (шт.)
[7860] => https://svetavto.com.ua/led/protivitymanki/h3-pk22s-13smd-5050-belaya-12v-c-p-21020.html
[7786] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21020/133632642_w640_h640_img_011_result-800x800-w-30-0-0.jpg
[7788] => https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21020/133632640_w640_h640_img_001_result-800x800-w-30-0-0.jpg{csvnc}https://svetavto.com.ua/image/cache/data/led/0_led_diod_solu/21020/133632641_w640_h640_img_003_result-800x800-w-30-0-0.jpg
[7791] => LED (Светодиоды){csvnc}Светодиоды в противотуманные фары
)
Извод: Всички тези данни можете да използвате в своите скриптове, да ги модифицирате и връщате обратно на модула. Няма нужда да въвеждате "return" за връщане на данни, модулът се разбира автоматично с тях. Важно е да се грижите, че скриптовете винаги завършват коректно и не съдържат грешки, включително синтаксични. Успех!