Максималните възможности в PHP скриптове за SimplePars

В тази статия ще опитам да разкрия максималните възможности при написването на своя логика с PHP. Тази статия не е предназначена за тези, които са далеч от програмирането; точно за онези, които сами режират и могат да преработят парсера според своите нужди, но решават да спестят време и да използват вградените скриптове.

В PHP скриптовете се поддържа напълно достъп до всички функции на модула SimplePars. Също така и до всички вградени методи, достъпни от раздела “model” в OpenCart.

Пример Ако ви е необходимо да изпълнявате собствени SQL заявки, няма нужда да държите данните за връзка с базата в скрипта. Просто извиквайте вградения метод на OpenCart: $this->db->query(“Тук вашият заявка”); Ако използвате извличане на данни от базата данни, имайте предвид, че OpenCart връща обект, съдържащ три основни блока:

  1. Брой избрани редове.
  2. Един произволен ред.
  3. Всички редове, изпаднали в избора.

Например, ако изпращате заявка:

simplepars 48 1 - Максималните възможности в PHP скриптове за SimplePars

Отговор:

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
)
$script_data[‘browser’] – Многомерен масив, съдържащ всички настройки на заявките, които се използват по време на парсването.Пример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}Светодиоды в противотуманные фары
        )

)
Този масив съдържа подготвени данни за предаване на контрола за зареждане в интернет магазина.Внимание!!! Обърнете внимание на вложения масив $script_data[‘form’][script_gran]. Този масив съдържа ВСИЧКИ граници за парсване, които сте създали, с техните стойности!!! Например, ключ 7782 от този масив е същата граница, която вече познавате от основната функционалност на модула {gran_7782}.Преди парсването в CSV и след него (Данните след парсването в CSV са идентични).В този случай модулът ще предаде управлението на вашия скрипт след изпълнение на търсенето и замяната, но преди да започне да записва данните в CSV. Тук са достъпни допълнителни стойности като: $script_data[‘url’] – (строка) Съдържа линк към донорския сайт, от който в момента се обработват данните. $script_data[‘csv’] – Многомерен масив, който съдържа всички обработени данни след търсене и замяна и са готови за запис в CSV формат.

Пример

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" за връщане на данни, модулът се разбира автоматично с тях. Важно е да се грижите, че скриптовете винаги завършват коректно и не съдържат грешки, включително синтаксични. Успех!