← bütün yazılar

Nº02 // YAZILAR

Şərti məntiq — pulsuz

Keçən ay bir neçə həftə ərzində bir WooCommerce plagini qurdum, və verdiyim ən vacib qərar kodda deyildi. Qiymət səhifəsində idi. Bütün rəqiblərin pul aldığı yeganə funksiyanı — şərti məntiqi — götürüb pulsuz səviyyəyə qoydum.

Deyim ki, bu əliaçıqlıq deyil. Bu, bazara giriş üçün vurulan pazdır.

“Məhsul parametrləri” ümumiyyətlə nədir

WooCommerce məhsul satır. Amma bir çox real məhsul tək, sabit bir şey deyil. Üzərinə ad yazılan bir köynək. Üzərində mesaj və çatdırılma tarixi olan bir tort. Ağacı, ölçüsü və kabel dəliyi seçim olan, sifarişlə hazırlanan bir masa. İstəyə bağlı beş dollarlıq hediyyə bükümü olan bir hediyyə.

WooCommerce təkbaşına bu əlavə sahələri məhsula təmiz şəkildə əlavə etməyin və onlara görə pul almağın yolunu vermir. Buna görə də bütöv bir plagin kateqoriyası var — “əlavə məhsul parametrləri”, “məhsul əlavələri” — məhsul səhifəsinə sahələr bənd edir: mətn xanaları, açılan siyahılar, qeyd qutuları, rəqəm sahələri, əlavə haqlar. Mənim plaginim, CoreLabs Product Options for WooCommerce, onlardan biridir. wordpress.org-da pulsuzdur, ayrıca satdığım ödənişli bir Pro əlavəsi ilə.

Şərti məntiq, sadə dillə

Sahə sayın üç-dördü keçən kimi məhsul səhifən çirkinləşir. Müştəri hələ “qravüra əlavə et” qeydini işarələməyib, amma sən ona “qravüra mətni” xanasını göstərirsən. Rəqəmsal yükləmə üçün çatdırılma tarixi soruşursan.

Şərti məntiq bunun həllidir: bir sahəni başqa sahənin dəyərinə görə göstərən, gizlədən və ya məcburi edən qaydalar.

Budur. Bu, düşünülmüş bir söhbət kimi hiss olunan formla, bütün mümkün sualları hər müştərinin üzünə birdən tökən form arasındakı fərqdir. Real mağaza işlədən hər kəs bilir ki, bu dəbdəbə funksiyası deyil. Bu, əsas funksiyadır.

Niyə hamısı onu kilidləyir — və mən niyə imtina etdim

Bu kateqoriyada narahatedici bir naxış var: sahə tipləri pulsuzdur, qiymətləndirmə pulsuzdur, sonra isə şərti məntiq pul divarının arxasında qalır. Klassik freemium tələsi. İnsanlara form qurmaq üçün kifayət qədər şey ver, sonra o form işlək olmalı olan an pulu al.

Vəsvəsəni başa düşürəm. Şərti məntiq “buna pul verməyə hazıram” refleksini ən aydın doğuran funksiyadır, ona görə də çəkiləcək açıq qol odur. WooCommerce-in öz funksiya-sorğu lövhəsində məhz bunun üçün 2019-dan bəri açıq bir sorğu var, insanlar səs verir. Tələbat şübhə altında deyil. Mən məhz buna görə onu kilidləməyi düşmənçə hesab edirəm. Sən əlavə bir şeyə görə pul almırsan; sadə versiyanı mənalı edən şeyə görə pul alırsan.

Ona görə bilərəkdən belə bir mərc qoydum:

Pulsuz səviyyə: tək-şərtli məntiq — bir sahəni yalnız bir başqa sahəyə görə göstər / gizlət / məcburi et, is (“dir”) və is not (“deyil”) operatorları ilə. Bu, real mağazaların böyük əksəriyyətini əhatə edir. Hediyyə-bükümü-mesajı-göstərir halı. Fərdi-ölçü halı. Rəqəmsal-deyil halı.

Pro səviyyə: həqiqətən qabaqcıl əlavələr — VƏ/VƏYA ilə çoxşərtli qaydalar, daha çox operator (contains, böyükdür, kiçikdir), üstəgəl real mühəndislik tələb edən şeylər: vahid-başına və faizlə qiymətləndirmə, rəng nümunələri, tarix sahələri.

Çəkdiyim xətt budur: pulsuz sənə işləyən bir form verir; Pro sənə ağıllı bir form verir. Heç kəs dörd-sahəli bir məhsul səhifəsini normal etmək üçün pul ödəməməlidir. İnsanlar isə rəqiblərinin edə bilmədiyi bir şeyə görə pul ödəyəcəklər.

Bu yalnız etika deyil. Bu, yayılmadır. wordpress.org bir axtarış sistemidir. Problemi həqiqətən həll edən pulsuz plagin quraşdırmalar, rəylər və etibar qazanır — qapalı bir marketpleysdə satış edərkən heç vaxt sahib olmadığım organik kanal. Şikəst edilmiş pulsuz plagin isə “faydalı hissə pulludur” deyən bir-ulduzlu rəylər qazanır. Pulsuz şərti məntiq alacağım ən ucuz marketinqdir.

Sənətkarlıq: bir beyin, iki dil

Şərti məntiqin maraqlı mühəndislik problemi budur ki, eyni qaydalar tamamilə fərqli iki yerdə işləməlidir.

WordPress PHP platformasıdır, WooCommerce də onun üzərində qurulub; həqiqət orada yaşayır. Müştəri səbətə əlavə edəndə server hər qaydanı yenidən qiymətləndirməlidir — brauzerə etibar edə bilməzsən, çünki müştərinin heç görmədiyi gizli “məcburi” sahə sifarişi bloklamamalıdır, gizli ödənişli əlavə isə hesaba yazılmamalıdır. Yəni səbət və pul üçün həqiqətin mənbəyi PHP-dir.

Amma müştəri qaydaları brauzerdə, anında, kliklədikcə yaşayır. Bu, JavaScript-dir. “Hediyyə bükümü”nü işarələyəndə mesaj xanası indi görünməlidir, səhifə yeniləndikdən sonra yox.

Tələ aşkardır: eyni məntiqin iki tətbiqi bir-birindən uzaqlaşır və sən səhifənin göstərdiyi, serverin isə göz ardı etdiyi bir sahə ilə bir səhv buraxarsan. Mənim həllim qiymətləndiricini iki dəfə ifadə olunan tək bir müqavilə kimi görməkdir. PHP-də bir ConditionalLogic sinfi və JS-də onun güzgüsü var, və onlar hər iki test dəstinin oxuduğu, giriş/çıxış hallarından ibarət paylaşılan bir fixture faylı ilə bir-birinə bağlanıb. Əgər PHP ilə JS bir cavab üzərində razılaşmasalar, testlər qırmızı yanır. Fixture spesifikasiyadır.

Səssizcə qürur duyduğum hissə tranzitivlikdir. Qaydalar zəncir qura bilər: C sahəsi B-dən, B isə A-dan asılıdır. A-nı gizlətsən, B yox olur, deməli C də yox olmalıdır — hətta C-nin öz qaydası tək-başına oxunanda hələ “keçər”sə belə. Ona görə hər sahəni tək qiymətləndirmək əvəzinə, bütöv qrup üzrə bir aktiv-xəritə həll edirəm: bir sahə yalnız öz qaydası keçirsə göstərdiyi hər sahə də aktivdirsə aktivdir. Bu, səhv konfiqurasiya olunmuş bir dövrün səhifəni dondurmaması üçün dövr-qıfılı olan kiçik rekursiv həll edicidir. Həm PHP, həm də JS bunu eyni fixturlara qarşı eyni cür edir.

A: “Qravüra əlavə olunsun?”   → qeyd qutusu
B: “Qravüra mətni”            → A Bəlidirsə göstər
C: “Şrift”                    → B boş deyilsə göstər

A-nı işarədən çıxart, üçü də yığılır — səhifədə də, səbətdə də, eyni cür.

Klassik və Block, çünki platforma tərpəndi

WordPress klassik redaktordan Block redaktoruna uzun bir köçüşün ortasındadır, WooCommerce də səbət və ödənişi özüylə çəkib aparır. Yalnız bu dünyalardan birində işləyən bir məhsul-parametrləri plagini yarım plagindir. Ona görə qaydalar tələbkarın klassik məhsul səhifəsində, ya da blok əsaslı səhifədə qurmasından və mağazanın köhnə səbətdən, yoxsa yeni blok səbətdən istifadə etməsindən asılı olmayaraq düzgün göstərilməlidir. Bu, pul ala biləcəyim bir funksiya deyil; sahib olmadığım bir platformada ciddi bir vətəndaş olmağın qiymətidir. Buna əsasən qururam, çünki otağın qaydalarını WooCommerce və WordPress müəyyən edir — mənim işim onların daxilində yaxşı davranmaqdır.

Altındakı model

Bütöv sistem freemiumdur: ön qapı kimi wordpress.org-da pulsuz plagin, qabaqcıl iş üçün öz kanallarımla satdığım ödənişli Pro əlavəsi. Pulsuz versiya həqiqətən tamdır — mağaza sahibi mənə bir qəpik vermədən real, şərti, qiymətli bir məhsul formu çıxara bilər. Pro isə tək bir qıfılı çevirən təmiz bir əlavədir; pulsuz kod bazasında onu gözləyən genişlənmə nöqtələri var ki, ikisi ayrı-ayrı budaqlanmaq əvəzinə sinxron qalsın.

Əgər bu, başlıq funksiyasını hədiyyə edərək masada pul qoyduğum kimi səslənirsə — yox, qoymuram. Bir plaginin ömrünün başlanğıcında əhəmiyyətli olan yeganə şeyi alıram: onu quraşdıran, saxlayan və kiməsə deyən insanları. Etibarı pula çevirə bilərsən. Amma səni aldadıcı adlandıran bir-ulduzlu rəyi pula çevirə bilməzsən.

Şərti məntiq — pulsuz. Verə biləcəyim ən ucuz vəd, rəqibin uyğunlaşdırması üçün isə ən bahalı olanı.