WordPress theme structure

Salam. Deməli saytda 2 versiyanı mobile və desktop üçün ayrı ayrı temalar istifadə etmək istəyirəm. Bunun üçün kiçik bir plugin yazdım sayta daxil olanda user hemen plugin detect edib uygun temanı real time olaraq aktiv edir.
Problem isə odur ki mən istəmirəm ki eyni kodları hər iki temanın functions.php sindən təkrar işlədim. Bunun üçün hansısa həll varmı? register post type taxanomy bu tip kodlarin her iki temanin functions inda isletmek istemirem.
Ağləma gələn variant var ki həmən kodları da plugin kimi yazıb aktiv etmək olar. 1 plugin hər iki temada işləyəcək. ama məsələn kimse əli dəysə və ya bilərəkdən həmən plugin i deaktiv etsə artiq error cixacaq.
Elə etmək olarmı ki temada requrie qoya bilərəm ki necəsə filan plugin deaktivdirsə sayt alert versin temanı aktiv etməzdən əvvəl plugin aktiv olmalıdır.

Digər bir variant isə vvordpress də tema xaricində öz kodlarımı hər hansı lib və ya kodu standard olaraq harada yerləşdirməliyəm ki onu istınilən temada istifadə edə bilim. Daha dəqiq desəm tutaq ki saytda 2 və ya daha artıq tema var və mənim functions da olacaq kodlarımdan bıziləri beten temalarda istfadə olunur. həmən o kodları temadan kənar harada yerləşdirə bilərəm ki istınilən temanın functions inda istifadə edə bilim.
Təşəkkür edirəm


Yadda saxlama
Kateqoriya: Sual . , , , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (6 cavab var)

(12:58, 21/08/2015 ) #57737

Demeli bele bir meqama rast geldim. men dizayni deyisende dediyim kimi kicik plugin ile deyisirem. pluginde userin device ni yoxladiqdan sonra uygun olaraq 2 tema desktop ve ya mobile arasinda uygun temani bu kodla aktiv edirem.

add_filter('stylesheet', function() { return 'mobile'; });
add_filter('template', function() { return 'mobile'; });

eger admin panelden desktop theme secilibse ve men bu yuxardaki kodlarla mobile theme ni aktiv ediremse
her 2 add_filter ile stylesheet ve template. bu zaman tema tamamile aktiv olur mobil tema.

yox eger temani tekce add_filter(‘stylesheet’, function() { return ‘mobile’; }); ile aktiv ediremse o zaman ise desktop temanin functions.php si de cagrilir ve mobile theme de normal olaraq yuklenir.
sadece olaraq funksiyalari owerride elemir. gerek ki mobile ve desktop functions.php icinde eyniadli funksialar olmaya.
bir eterefden bu cox eladi demek olar ki sirf mene lazim olan bir weydi, qalir bir mesele ki bu yolla men deyen ki isetmek olar? duzgundur isletmek bu yolla? ve tekce functions.php ni merge edir goresen yoxsa diger her hansisa fayllari da?

eger yalniz temalar icinde olan functions.php leri merge etse o zaman tam men isteyendir.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:06, 21/08/2015 ) #57738

Dediklərinizin hər birinin həlli var. Amma ümumi konsept tamamilə yanlışdır deyə bu həllərə gərək yoxdur.
Qayda 1: Tema 1 dənə olmalıdır, mütləq və mütləq.
Mobile və desktop məsələsi temanın daxilində həll olmalıdır. Detektor qoy init-dən əvvəl detekt etsin, sonra ona uyğun lib-lər, template load olsun. Yəni yol init-dən əvvəl ayrılsın, amma temanın daxilində.
Qayda 2: plugin və theme xaricində heç bir lib, funksiya saxlanılmamalıdır heç bir halda.
Lib-i temanın daxilində rahat saxlamaq olar.
Əsas məntiq olaraq ona fokuslanmaq lazım ki: kod parçalarınız ON-DEMAND işləsin. Yəni nə lazımdır o çağırılsın. Bunu struktur olaraq həll etdikdən sonra heç bir problem qalmır

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (13:49, 21/08/2015 ) #57739

    1 tema ile lap ela olar hell etmek, Zehmet deyilse dediyiniz 1 tema ile hell etmek ucun struktur, detect nece hansi faylda olmalidi bu kimi seyler haqinda qisaca melumat verersinizse ve ya hansisa bir source. esas function.php fayllarinin nece cagrilmasi ve diger index single page_template fayllarinin nece olacagi maraqlidi.
    bele etsem sizce duzgun olar? tema qovlugu icinde 2 qovluq yaratsam biri mobile digeri desktop. heresinin icinde eyni fayllar olsa ozlerine uygun. temanin oz qovlugu icindeki tutaq ki index.php de yoxlayib mobile ve ya desktop qovluqdaki indexi include etmek. hemcinin page.php single.php de bu kimi.

    wp-content/themes/test
    wp-content/themes/test/mobile
    wp-content/themes/test/desktop

    wp-content/themes/test/index.php faylinde yazlniz
    if(is_mobile())
    include ‘wp-content/themes/test/mobile/index.php’;
    else
    include ‘wp-content/themes/test/desktop/index.php’;

    diger butun fayllar da bele.

    basqa daha optimal varianti varmi?

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

      (15:03, 21/08/2015 ) #57742

      Olar elə. Çoxdur həllər.
      Məsələn elə ən sadəsi if(is_mobile()) else şərtinin template faylların hər birinin içində olması və müvafiq alt-template faylı yükləməsi.
      Bu metodla olanda index, page, single və.s.-in içində yuxarıdakı if else ilə müvafiq papkadan müvafiq faylı çağırırsız, lazım olan librarylerin yüklənməsini isə functions.php-də yenə də eyni tip if else ilə edirsiz. Functions.php faylı index, single, page və.s. olmasından asılı olmayaraq həmişə birinci run olur. Deməli kitabxana və altyapı işlərini onun içində etməliyik, sonra da wordpress özü url-ə uyğun avtomatik template-i çağırır, tutalım səhifə açılır və page.php yüklənir. Bu zaman da sizdə page.php-in içində əlavə heç bir kod yoxdur, yalnız if require desktop else require mobile sətri var.
      Beləliklə məsələ həll olur.

      Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(16:12, 21/08/2015 ) #57743

Aha. tam anladim bu dediklerinizi. Bes page template leri nece? onlar da ele page template ni yaradib tutaq ki Test adli page template var o page template in de icinde yene if edib uygun mobile veya desktop page template i include etmek?

Ama dediyiniz kimi bu da professional hell deyil de ? hele ki bele edim sonraliqca daha da tekmillesdirerem

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (10:18, 22/08/2015 ) #57755

    Aha hər bir template-in içində eyni if else yazmaq bir az düz çıxmır, SOLID prinsipinə də zidd kimi görünür. Amma sonralar optimizə edə bilərsiz. Ki mərkəzi detector olsun functions.php faylında, o yönləndirsin hər şeyi necə lazımdır mobilə və ya desktopa.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Software Developer cavab verdi - Qırılmış nömrə nə vaxt tam bağlanır (4 saat əvvəl)

Emil Imanov cavab verdi - Rus dilindən mətni tərcümə etmək (7 saat əvvəl)

Software Developer cavab verdi - Payoneer kartdan pul çıxartdıqda vergi (2 gün əvvəl)

Software Developer cavab verdi - Wise vasitəsilə bank kartına pul köçürmə (6 gün əvvəl)

Software Developer cavab verdi - Rus dilindən mətni tərcümə etmək (6 gün əvvəl)

Cənab cavab verdi - Almanca söz bazası yığmaq (9 gün əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (10 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (10 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (10 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (10 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (10 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (12 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (12 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (22 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (23 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23237 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024