همهی چیزهایی که لازمه در مورد پرستاشاپ 1.7.0.0 بدونید
سخن مترجم: این مقاله ترجمه شدهی مقالهی Everything You Need To Know About PrestaShop 1.7.0.0 در وبلاگ توسعهدهندگان پرستاشاپ هست و از زبان تیم پرستاشاپ بیان شده.
توسط: Xavier Borderie
همهی چیزهایی که لازمه در مورد پرستاشاپ 1.7.0.0 بدونید… اما میترسید که مطرحشون کنید؛ به عبارت دیگه، سؤالات متداول (FAQ) پروژه پرستاشاپ 1.7
این سوالات متداول وضعیت فعلی پرستاشاپ نسخه 1.7 رو نشون میده
نسخه فعلی این سوالات متداول: 1.8
لیست سوالات:
- سوالات عمومی
- چه چیزهایی در پرستاشاپ 1.7 وجود داره؟
- آیا فروشندگان برای ساخت فروشگاهشون باید صبر کنن تا پرستاشاپ 1.7.0.0 منتشر بشه یا همین الآن با نسخه 1.6 فروشگاهشون رو بسازن؟
- آیا ارتقای پرستاشاپ از نسخههای قدیمی به نسخهی 1.7 کار آسونیه؟
- آیا کسایی که از پرستاشاپ 1.6 استفاده میکنن باید برای ارتقای فروشگاهشون به 1.7 پول و زمان صرف کنن؟
- نسخهی 1.7 چه مزایایی برای توسعهدهندهها داره؟
- چه سیستمی برای اجرای نسخهی 1.7 موردنیازه؟
- سورس کُد توسعهی پرستاشاپ 1.7 کجاست؟
- آیا همه میتونن نسخهی development که در GitHub موجوده رو نصب کنن؟
- از اونجاییکه همهچیز رو بازنویسی کردید، چرا نام این نسخه رو پرستاشاپ 2.0 نذاشتید؟
- معماری جدید
- تغییرات مربوط به قالب
- آیا تغییرات اعمالشده در سیستم قالب، تمام مواردی رو که در نسخهی 1.6 بوده نادیده میگیره؟
- قالب استارتر چیه؟
- آیا قالبهای 1.7 باید با Bootstrap ساخته بشن؟
- آیا قالب استارتر یا قالب پیشفرض از Bootstrap استفاده خواهند کرد؟
- چرا قالب پیشفرض نسخهی 1.7 برای کل سایت از یه فایل js و یه فایل theme.css استفاده میکنه؟
- نسخهی 1.7 چه تأثیری روی قالبهای نسخهی 1.6 داره؟
- آیا قالبها همچنان از Smarty استفاده میکنن یا به Twig (سیستم ساخت قالب Symfony) نیاز دارن؟
- داستان UI Kit چیه؟
- راهنمای طراحان برای نسخهی 1.7 کجاست؟
- تغییرات ماژول
- Symfony چه تأثیری بر مشارکتکنندگان در زمینهی ماژولها داره؟
- آیا ماژولهای 1.6 در پرستاشاپ 1.7 هم فعال خواهند بود؟
- آیا پرستاشاپ 1.7 داره از Smarty به Twig سوییچ میکنه؟
- آیا ماژولهای پرداخت هم تحت تأثیر قرار میگیرن؟
- آیا پرستاشاپ 1.7 کُدهای منسوخ، hook_alias و غیره رو حذف خواهد کرد؟
- آیا برای تغییر در سیستم override برنامهریزی وجود داره؟
- آیا توسعهدهندهها همچنان میتونن از overrideهای نسخهی 1.7 استفاده کنن؟
- آیا فهرستی از تمامی ماژولهایی که تحت تأثیر تغییرات ایجادشده روی صفحهی محصول BO قرار گرفتهاند وجود داره؟
- آیا فهرستی از تمامی ماژولهایی که تحت تأثیر تغییرات ایجادشده روی قالب استارتر قرار گرفتهاند وجود داره؟
- راهنمای توسعهدهندهی نسخهی 1.7 کجاست؟
سوالات عمومی
چه چیزهایی در پرستاشاپ 1.7 وجود داره؟
نسخهی 1.7.0.0 آخرین نسخهی اصلی منتشرشده بعد از نسخهی 1.6.1.0 محسوب میشه. هدف این نسخه اینه که ساخت فروشگاه و محصول رو ساده و مسیر موجود برای اولین فروش شما رو هموار کنه. این نسخه شامل چهار پروژهی اصلیه:
- روشی بهتر برای ساخت و نگهداری از قالب:
- یه قالب پیشفرض جدید (خوشسبک و بهینه)
- یه قالب استارتر (starter) برای اینکه به طراحها کمک کنه تا بتونن یه قالب فوقالعاده رو در نصف زمانی که با پرستاشاپ 6/1 طول میکشید طراحی کنن
- بهبود تجربه کاربر در بخش مدیریت (Back Office):
- راهنمای (Unboarding) جدید برای تازهکارها
- سادهسازی ایجاد محصول
- پیدا کردنِ راحت ماژولهای نصبشده و نصبنشده
- بهبود ساختارِ رابطِ منوی مدیریت که تمرکزش اینه که متداولترین کارها رو سریعتر انجام بده
- ساختار جدید و استفاده از فریمورک Symfony2
آیا فروشندگان برای ساخت فروشگاهشون باید صبر کنن تا پرستاشاپ 1.7.0.0 منتشر بشه یا همین الآن با نسخه 1.6 فروشگاهشون رو بسازن؟
نسخهی 1.6 در حال حاضر تنها گزینهی مطمئن شماست. این نسخه برای چند ماه بعد از انتشار نسخهی 1.7 هم نگهداری و پشتیبانی میشه بنابراین به شما زمان لازم رو میده تا از 1.6 به 1.7 کوچ کنید؛ البته وقتیکه فکر کنید برای این تغییر آماده هستید.
آیا ارتقای پرستاشاپ از نسخههای قدیمی به نسخهی 1.7 کار آسونیه؟
اگه بخوام خلاصه بگم: نه! راحت نیست. شما میتونید ارتقا رو انجام بدید اما خودتون رو آماده کنید چون باید خیلی از addonها (قالبها و ماژولها) رو سازگار یا جایگزین کنید.
حالا بریم سراغ جواب مفصلتر. پرستاشاپ 1.7.0.0 یه نسخهی اصلیه نه فقط به خاطر اینکه تغییرات مثبت و مفیدی داشته بلکه به این دلیل که به معنای واقعی SemVer هست: چون بعضی از backward compatiblityها رو میشکنه. اگه اینطور نبود احتمالاً اسم نسخه رو 1.6.2.0 میذاشتیم.
مثلاً قالبهای نسخهی 1.6 در نسخهی 1.7 اجرا نمیشن. این موضوع کاملاً قطعیه. ما نحوهی ساخت قالبها رو بازنویسی کردیم و طراحهای قالب از اینکه ببینن قالب استارتر جدید یه پایهی خیلی باثبات برای قالبهای اونها فراهم میکنه، خیلی خوشحال میشن. با استفاده از این پایه شما میتونید قالبهای جدید رو در نصف زمانی که برای ساخت قالب در نسخهی 1.6 زمان میذاشتید بسازید.
اما در مورد ماژولها. تمامی ماژولهای 1.6 که خوب برنامهنویسی شده باشن، با تغییرات کم یا بدون هیچ تغییری، در نسخهی 1.7 هم اجرا میشن به جز:
- اونهایی که در مورد قالب/بخش فروشگاهی (front office) هستن؛ چون ما نحوهی نوشتن قالب رو بازنویسی کردیم.
- اونهایی که در مورد صفحهی محصول هستن؛ چون DOM این صفحه تغییر کرده.
- اونهایی که در مورد صفحهی ماژولها هستن؛ مجدداً به خاطر اینکه DOM این صفحه تغییر کرده.
اینها یعنی اینکه برای کوچ کردن از نسخهی 1.6 به 1.7 شما (پشتیبان فنی شما) باید:
- قالب رو بازنویسی کنید و ایدهآل اینه که این کار رو با استفاده از قالب استارتر یا قالب پیشفرض انجام بدید.
- ماژولهای صفحهی محصول (CSS و JavaScript) رو سازگار کنید.
- ماژولهای صفحهی ماژول (CSS و JavaScript) رو سازگار کنید.
- تمامی ماژولهای دیگه رو امتحان کنید؛ همونطور که برای هر نسخهی جدید باید این کار رو انجام بدید.
درهرحال، توصیهی ما اینه که مطمئن بشید تمام ماژولهای شما در پرستاشاپ 1.7 بهدرستی کار میکنن.
آیا کسایی که از پرستاشاپ 1.6 استفاده میکنن باید برای ارتقای فروشگاهشون به 1.7 پول و زمان صرف کنن؟
ارتقا دادن به نسخه 1.7 کار راحتی نیست (بخش بالا رو بخونید). از اونجاییکه پرستاشاپ 1.6 محیط (ecosystem) غنی و پرباری داره، به فروشندگانی که تصمیم بگیرن فعلاً از همین نسخه استفاده کنن کاملاً حق میدیم؛ حداقل تا وقتیکه تمام ماژولهای نسخهی قدیمی با نسخهی جدید سازگار بشن.
علاوه بر این، آپدیتهای امنیتی برای نسخهی 1.6 برای چند ماه آینده هم منتشر میشه، پس عجلهای نیست. بهعنوان یه توسعهدهنده، باید در مورد ساختن/آپدیت کردن ماژولها و قالبها کمی عجله کنید: فرصتهای خیلی زیادی رو میشه در محیط پرستاشاپ 1.7 پیدا کرد!
پس ما شما رو مجبور نمیکنیم که ارتقا بدید؛ اما برای فروشگاههای جدید، استفاده از نسخهی 1.7 میتونه نتایج خیلی خوبی به همراه داشته باشه!
برای فروشندهها:
- رابط کاربری (UI) جدید و ساختار بهینهسازی شدهی منو موجب میشه که روند امور روزانه بهتر انجام بشه،
- صفحهی محصول مجدداً مورد بررسی و طراحی قرار گرفته
- همینطور صفحهی ماژولها
- یه قالب پیشفرض فوقالعاده برای شروع
برای توسعهدهندهها:
- قالب استارتر موجب شده تا ساخت قالبهای جدید خیلی آسونتر بشه،
- سیستم ویجت، namespaceهای PHP و سایر ظرافتهای PHP 5.4 (در کنار عملکردهای اونها)
- قابلیت استفاده از کل مجموعهی Symfony برای رفع نیازهای ماژول
- و…
نسخهی 1.7 چه مزایایی برای توسعهدهندهها داره؟
برای توسعهدهندههای ماژول، بیشتر ویژگیهای در حال حاضر پنهان هستن و قابلدسترس نیستن؛ اما اگه قصد دارید همین الآن یه پروژه پرستاشاپ رو شروع کنید، حتماً باید از نسخهی 1.7 استفاده کنید. کاملاً واضحه که الآن نسخهی 1.7 کمتر از نسخهی 1.6 امتحان شده اما خیلی زود این موضوع تغییر پیدا میکنه؛ این اتفاق به لطف بازخوردهای شما ممکن میشه.
اگه طراحهای قالب نیاز دارن که طرح خاصی رو برای مشتریشون انجام بدن، استفاده از نسخهی 1.7 موجب میشه که در وقتشون صرفهجویی کنن.
چه سیستمی برای اجرای نسخهی 1.7 موردنیازه؟
هیچچیز هنوز قطعی نیست (و قبل از ارائه اولین نسخهی بتا، بنچمارکهای درستی نمیتونیم داشته باشیم) اما میتونیم مطمئن باشیم که حداقل سیستم موردنیاز همونیه که برای Symfony 2.8 نیاز بود. همچنین در ژوئن 2015 هم اعلام کردیم که پرستاشاپ در حال انتقال به PHP 5.4 هست.
در مورد ظرفیت سرور هم فعلاً میتونیم بگیم که «هر چه بیشتر بهتر» اما در هر شرایطی، ظرفیت موردنیاز بیشتر از اون چیزیه که در نسخهی 1.6 داشتیم.
سورس کُد توسعهی پرستاشاپ 1.7 کجاست؟
بیشترِ کارِ نسخهی 1.7 داره در شاخهی «توسعه»ی PrestaShop GitHub انجام میشه
میتونید همین الآن اون رو دانلود و تست کنید و بازخوردش رو بهمون بدید!
آیا همه میتونن نسخهی development که در GitHub موجوده رو نصب کنن؟
بخش «نصب» (installation) موجود در فایل README.md رو بخونید.
بهطور خلاصه، شما باید Composer (و شاید npm و Grunt) رو نصب و استفاده کنید تا بتونید پروژه رو در یک فایل قابل نصب و ساده گردآوری کنید. Webpack یکی دیگه از ابزارهایی که برای توسعهی نسخهی 1.7 مورد استفاده قرار میگیره.
این امر فقط برای نسخهی development هست. هرگونه نسخهی development که بهصورت عمومی منتشر بشه، طوری بستهبندی میشه که هر کاربری بتونه نرمافزار رو آپلود و نصب کنه، درست مثل نسخههای قبلی.
از اونجاییکه همهچیز رو بازنویسی کردید، چرا نام این نسخه رو پرستاشاپ 2.0 نذاشتید؟
اول از همه بگم ما همه چیز رو بازنویسی نکردیم! درواقع، اگه این کار رو میکردیم، نام نسخه همون 2.0 میشد 🙂
پرستاشاپ 1.7 تکامل یافتهی نسخهی 1.6.1.0 هست که یه معماری جدید رو معرفی کرده تا codebase ماژولارتر، قویتر و آزمودنیتر باشه. استفاده از فریمورک Symfony 2.8 باعث شده که نسخهی 1.7 فراتر از نسخهی قبلی عمل کنه.
بااینحال، همه چیز با استفاده از Sympony بازنویسی نشده! فقط برای چند صفحه این اتفاق افتاده (صفحهی محصول و صفحهی ماژولها) و اونها همچنان با ماژولهای قدیمیتر از نسخهی 1.7 بهخوبی کار میکنن؛ البته لازمه که در طراحی، سازگاریهایی رو انجام داد، همونطور که در نسخههای اصلی پرستاشاپ قبل هم این چنین بود. فقط در این نسخه، ما یه UI Kit فراهم کردیم تا به توسعهدهنده کمک کنه برای اسکرینهای (screen) ماژولشون یه سبک پایدار داشته باشن.
از اونجایی که این یه نسخهی اصلیه و یه بازنویسی کامل نیست، ما از نحوهی نسخهگذاریای که در ژوئن 2015 اقتباس کرده بودیم، پیروی کردیم که بر اساس مشخصات SemVer بنا شده است.
معماری جدید
دلیل معرفی Symfony چیه؟
ایدهی اصلی پشت پروژه پرستاشاپ 1.7 اینه که میخواهیم کُد ما قویتر، ماژولارتر و کاملاً قابل آزمایش باشه. معماری نسخهی 1.6 که از نسخهی 1.5 و سالها توسعهی پرستاشاپ به ارث رسیده، جوانسازی نشده و داره پیر میشه.
استفاده از یه فریمورک پرطرفدار متنباز و اثباتشده به ما این اجازه رو میده که با کارآمدی بالاتر و درعینحال بهرهبردن از استحکام یه فریمورکی که در سطح جهانی شناختهشده است، روی کد اصلی کسبوکارمون تمرکز کنیم (مدیریت سبد خرید، سازماندهی سفارشها، محاسبه قیمتها و مالیاتها، تولید پیشفاکتورها و …).
استفاده از Symfony همچنین باعث میشه که منحنی یادگیری برای توسعهدهندگان PHP که با پرستاشاپ آشنایی ندارن کوچکتر بشه و جامعهی توسعهدهندگان ما رو از این هم گستردهتر کنه.
Symfony کجا معرفی میشه؟
این معماری جدید فعلاً فقط در بخش مدیریت (back office) مورد استفاده قرار میگیره و برای گام اول (نسخهی 1.7.0.0) عمدتاً برای دو تا از صفحات بخش مدیریت: صفحهی محصول (و کاتالوگ محصول) و صفحه ماژولها.
بقیهی بخشهای مدیریت همچنان از معماری بهجامانده از نسخههای 1.5 الی 1.6 استفاده خواهند کرد؛ اما درنهایت تمامی اونها، در نسخههای بعدی پرستاشاپ به معماری جدید تغییر پیدا میکنن.
درحالیکه ما صفحات بخش مدیریت رو در چند نسخه از پرستاشاپ به معماری جدید تغییر میدیم، هر دو معماری در کنار یکدیگر حضور خواهند داشت؛ بنابراین، میتونید انتظار داشته باشید که نسخههای بعدی هم همین مسیر رو طی کرده و صفحات بیشتری از بخش مدیریت رو به symfony تبدیل کنن.
حالا چرا Symfony 2 و Symfony 3 نه؟
Symfony از نسخهی 2.8 شروع شد، بدون اینکه کُد تطبیقی بازگشتی (backward-compatibilitycode) وجود داشته باشه؛ بنابراین، هر زمانی که Symfony 3 منتشر بشه، پرستاشاپ 1.7 باید بتونه با اون کار کنه اما در حال حاضر هدف ما LTS کنونی موجود در Symfony 2.8.6 هست. ممکنه در نسخهی بعدی پرستاشاپ از Symfony 3 استفاده کنیم.
تغییرات مربوط به قالب
آیا تغییرات اعمالشده در سیستم قالب، تمام مواردی رو که در نسخهی 1.6 بوده نادیده میگیره؟
اگه راستش رو بخواید، آره. چارهای نیست. ما برنامههای مخصوصی را برای قالب استارتر داریم (به بخشهای پایینتر مراجعه کنید) و نمیخوایم طراحی خوب نرمافزار رو قربونی backward compatibility کنیم.
قالب استارتر چیه؟
ما قالب استارتر رو قالب حداقلی پرستاشاپ 1.7 میدونیم: این قالب از نظر ویژگیها کامله اما استایلی (style) خاصی نداره.
اما یه کمصبر کنید… هیچ استایلی نداره؟! مطمئناً نباید اون طوری که هست ازش استفاده کرد اما باید برای یه طراح خیلی مناسب و ایدهآل باشه: تبدیل قالب استارتر به یه قالب واقعی و آمادهی تولید خیلی آسونتر و سریعتر از قبل خواهد بود.
آیا قالبهای 1.7 باید با Bootstrap ساخته بشن؟
بستگی به موقعیت داره.
اگه دارید یه فروشگاه جدید با قالب و ماژولهای سفارشی میسازید، میتونید از هر چیزی که نیازتون رو برطرف کنه استفاده کنید.
اگه دارید قالب رو برای این میسازید که در Prestashop Addons marketplace به فروش برسونید، باید از Bootstrap استفاده کنید.
چرا برای Addonها استفاده از Bootstrap رو اجباری کردیم؟
ما کاملاً به این امر آگاهی داریم که محیط پرستاشاپ هم برای قالبها و هم برای ماژولها به فریمورک Bootstrap متکی بوده و نمیخوایم که این انتظار رو با منتشر کردن پرستاشاپ 1.7 از بین ببریم. ما میخوایم اطمینان حاصل کنیم که کاربرانی که از انجمن قالب یا ماژول میخرن، بتونن برای همیشه روی سازگاری اونها حساب کنن: ما دوست نداریم که فروشندگان ما نگران این باشن که آیا ماژولی که برای فروشگاهشون انتخاب کردن در قالب اونها اجرا میشه یا نه.
قالبها و ماژولهای بخش فروشگاهی (front office) که از Addons marketplace گرفته شدن باید از ابتدا به خوبی کار کنن و بنابراین باید از فریمورک CSS یکسانی استفاده کنن.
دلیل اینکه PrestaShop Addons marketplace فقط قالبهایی از نسخهی 1.7 رو قبول میکنه که از Bootstrap استفاده کرده باشن همینه. تأییدکننده (validator) قالبها هم بر همین اساس بهروزرسانی میشه.
آیا قالب استارتر یا قالب پیشفرض از Bootstrap استفاده خواهند کرد؟
ما در قالب استارتر هیچچیزی رو تحمیل نکردیم بنابراین نیازی به Bootstrap نیست. راحت باشید!
همونطورکه قبلاً هم گفتیم، Addons marketplace فقط قالبهایی رو قبول میکنه که متکی بر Bootstrap باشن، بنابراین اگه هدفتون اینه که چیزی که ساختهاید رو در Addons به فروش برسونید، بهتره که از Bootstrap استفاده کنید.
قالب پیشفرض که بر اساس بنیانهای قالب استارتر بنا شده، از Bootstrap 4 استفاده خواهد کرد.
شاید براتون سؤال پیش بیاد که چرا قالب استارتر بهصورت پیشفرض با استفاده از Bootstrap نوشته نشده. دلیلش اینه که این دو قالب اهداف متفاوتی دارن.
قالب استارتر برای توسعهدهندهها، آژانسها و همهی کسانی ساختهشده که قصد دارن یه فروشگاه پرستاشاپ رو از صفر احداث کنن. اونها میتونن فریمورکی که میخوان رو انتخاب کنن و نباید احساس کنن که انتخابهای ما اونها رو محدود کرده. اونها میتونن Bootstrap رو به قالب استارتر اضافه کنن اما وقتی میتونن این انتخاب رو انجام بدن که دارن یه قالب رو برای مشتری تنظیم میکنن؛ بنابراین، مخاطبهای قالب استارتر خیلی وسیعتر از مخاطبهای بخش Addons هستند.
قالب پیشفرض بیشتر از همه برای فروشندگان ساختهشده و باید در جامعهی کنونی ما که خیلی به Bootstrap وابسته است، کار کنه. در PrestaShop Addons marketplace ماژولهای زیادی بر پایهی Bootstrap وجود داره (چونکه اونها از قبل طوری ساختهشدن که با قالب پیشفرض 1.6 که بر پایه Bootstrap هست، به خوبی کار کنن) و بنابراین علاقهی جامعهی ما اینه که مطمئن بشیم ماژولها و قالبهایی که از طریق Addons به فروش میرسن در انتخاب فریمورک CSS باثبات عمل کنن؛ بنابراین، Bootstrap در Addons وجود داره و قابلاستفاده است.
چرا قالب پیشفرض نسخهی 1.7 برای کل سایت از یه فایل theme.js و یه فایل theme.css استفاده میکنه؟
پرستاشاپ قبلاً برای هر صفحه، فایلهای زیادی رو به مرورگر ارسال میکرد: global.js, jquery.js, jquery-plugin-foobar.js و غیره؛ و بعد، هر صفحهای برای خودش فایلهای Javascript مخصوصی داشت: product.js, cms.js, category.js و غیره؛ و درنهایت، ماژولها JS خودشون رو اضافه میکردن. این بهمریختگی خیلی بیهوده بود: حدود 30 فایل اصلی JS و یک فایل به ازای هر ماژول.
در نسخهی 1.7، ما تمامی این فایلها رو با استفاده از Webpack در یه فایلِ خلاصهشدهی theme.js تلفیق کردیم. بعد، ماژولها آزادن که فایلهای خودشون رو (بعد از یه فایل JS اصلی، بهجای 30 تا) اضافه کنن. از اون به بعد، کَش (cache) مرورگر کارش رو انجام میده.
درنهایت، هم قالب پیشفرض theme.css و هم فایل theme.js نبست به موارد مشابه نسخهی 1.6 (حتی نسبت به فایلهای کوچکشدهی اونها) خیلی کوچکتر هستن.
پس فایلهای قالب JS/CSS هم کمتر (queryهای HTTP کمتر) و هم کوچکتر هستند. بله!
نسخهی 1.7 چه تأثیری روی قالبهای نسخهی 1.6 داره؟
از اونجاییکه نحوهی ساخت قالبها بهطور کامل تغییر کرده، نیازه که قالبها مجدداً نوشته بشن.
آیا قالبها همچنان از Smarty استفاده میکنن یا به Twig (سیستم ساخت قالب Symfony) نیاز دارن؟
قالب استارتر و پیشفرض نسخهی 1.7 از Smarty استفاده میکنن؛ اما برخلاف سیستم قالب نسخههای 1.5 تا 1.6، پرستاشاپ 1.7 از Smarty بهعنوان موتوری برای ساخت قالب استفاده میکنه و نه بهعنوان زبان برنامهنویسی؛ بنابراین، توسعهدهندهها و طراحها باید قدر این تغییر رو بدونن 🙂
بیشترین کار انجامشده روی قالب پیشفرض جدید و سیستم قالب 1.7 این بوده که منطق کسبوکار رو از قالبها و همچنین از کنترلکنندهها (controller) بیرون بکشن. این کار موجب میشه که بنیانِ خیلی بهتری نسبت به سیستم 1.6 برای پیشرفتهای بیشتر داشته باشیم.
داستان UI Kit چیه؟
راستی، چیزی دربارهی UI Kit 1.7 شنیدید؟ عالیه!
ما یه UI Kit کاملی رو برای بخش مدیریت پرستاشاپ 1.7 ایجاد کردیم و اون رو در اختیار عموم قرار دادیم تا طراحها و توسعهدهندهها بتونن رابطهایی (interfaces) رو بسازن که از لحاظ استایل با رابط مدیریتی سازگار باشه.
اسناد مرجع مربوط به اون رو میتونید از اینجا چک کنید:
http://build.prestashop.com/prestashop-ui-kit
کُد مربوط به اون رو هم از اینجا چک کنید:
https://github.com/PrestaShop/prestashop-ui-kit
توجه داشته باشید که این کار در حال انجام هست و نباید تا انتشار نهایی نسخهی 1.7 فکر کنیم که تغییری در اون اعمال نمیشه. فعلاً فقط در صفحههای بخش مدیریت جدید فعال هست؛ یعنی صفحهی محصول و صفحهی ماژول.
راهنمای طراحان برای نسخهی 1.7 کجاست؟
روی راهنمای طراحان (Designer documentation) داره کار میشه. چون تا زمانی که نسخهی بتا آماده بشه روی نحوهی عملکرد قالبها کار خواهیم کرد، راهنمای طراحان تا قبل از اینکه API کاملاً ثابت نشه، منتشر نخواهد شد. سایت آنلاین هست و شما میتونید مشارکت کنید!
در این بین، توصیهی ما اینه که کُد قالب پیشفرض جدید رو با دقت بررسی کنید (قالب Classic)
تغییرات ماژول
Symfony چه تأثیری بر مشارکتکنندگان در زمینهی ماژولها داره؟
تأثیر مستقیم این قضیه خیلی محدوده چونکه Symfony فقط برای بعضی از ویژگیهای خاص بخش مدیریت مورد استفاده قرار میگیره؛ یعنی فقط هسته (Core) پرستاشاپ به این ویژگی دسترسی داره.
ماژولهایی که هدفشون صفحهی محصول یا صفحهی ماژولها باشه کمی تحت تأثیر قرار میگیرن اما این تاثیرها به Symfony ارتباطی نداره. شما میتونید Smarty یا موتور ساخت قالب Twig رو برای ماژولهایی استفاده کنید که برای صفحات بازنویسیشده هدفگذاری شدند (hookها در محیط قدیمی اجرا و بعد برای استفاده در Symfony بازیابی شدن)، اما کُد اصلی ماژول باید یکسان باقی بمونه.
ماژولهایی که هدفشون قالب هست نیاز دارن تا با نحوهی جدید عملکردقالبها در نسخهی 1.7 سازگار بشن.
آیا ماژولهای 1.6 در پرستاشاپ 1.7 هم فعال خواهند بود؟
بیشتر ماژولهایی که برای پرستاشاپ 1.6 ساخته شدهاند در نسخهی 1.7 هم میتونن فعال باشن (بهغیراز ماژولهای مربوط به پرداخت که تغییر API کوچکی در اونها اتفاق افتاده؛ به دو قسمت پایینتر مراجعه کنید). احتمالاً باید روی کُد ظاهری اونها مجدداً کار بشه (بسته به ماژول، این کار میتونه زیاد یا کم باشه) تا ظاهر خوبی به خودشون بگیرن.
میتونید اینطوری فکر کنید که اگه ما فقط صفحهی محصول رو در یه نسخهی اصلی معمولی به طرح/CSS جدید بازنویسی میکردیم، همین عوارض جانبی رو داشت؛ کُد JavaScript و CSS باید به همین ترتیب سازگار میشدن.
سایت اسناد آنلاینه و شما میتونید مشارکت کنید!
آیا پرستاشاپ 1.7 داره از Smarty به Twig سوییچ میکنه؟
در پرستاشاپ 1.5 تا 1.6، یه موتور پیشفرض برای ساخت قالب وجود داشت: Smarty.
در حال حاضر و در نسخهی 1.7 دو موتور برای ساخت قالب وجود دارن: Smarty و Twig که بر پایهی Symfony است.
نحوهی استفادهی این دو موتور اینطوریه:
- قالبهای بخش فروشگاهی (front office) با Smarty نوشته میشن،
- صفحات جدید بخش مدیریت با Twig نوشته میشن،
- صفحات قدیمی همچنان با Smarty نوشته میشن.
ماژولها رو میشه با هر کدوم از موتورهای قالبی که دوست دارید استفاده کنید (PHP خالص، Smarty، Twig، Jade و …) همونطور که در نسخهی 1.6 هم این امکان وجود داشت؛ اگرچه، موتور پیشفرض قالب Smarty هست و استفاده از یه موتور دیگه مستلزم اینه که توسعهدهنده کار بیشتری روش انجام بده (مثلاً 5 خط کُد براش بنویسه).
بنابراین توسعهدهندههای ماژول میتونن در هر صفحهای از هر کدوم از دو موتوری که بهصورت پیشفرض در پرستاشاپ 1.7 قرار گرفته (Smarty و Twig) استفاده کنن (چه این صفحه قدیمی باشه و چه بر اساس Symfony نوشته شده باشه) اما همهچیز به قدرت سازگارسازی برمیگرده.
بنابراین، ماژولهایی که هدفشون صفحهی محصول هست همچنان میتونن از Smarty استفاده کنن. اگرچه، اونها باید کُد CSS و JavaScript خودشون رو بهروزرسانی کنند چون طراحی بخش مدیریت تغییر کرده. دلیل اینکه Prestashop UI Kit رو ساختیم همینه؛ که بر اساس Bootstrap 4 فعالیت میکنه. ازش استفاده کنید و در امان خواهید بود.
آیا ماژولهای پرداخت هم تحت تأثیر قرار میگیرن؟
ما در API مربوط به پرداخت تغییراتی رو اعمال کردیم؛ توضیحات و یه نمونه در Build قابل دسترسیه: این مقاله رو ببینید.
میتونید یه نمونه از ماژولهای پرداختی رو از اینجا مشاهده کنید:
https://github.com/PrestaShop/paymentexample
آیا پرستاشاپ 1.7 کُدهای منسوخ، hook_alias و غیره رو حذف خواهد کرد؟
بله خیلی از کُدهای منسوخ (deprecated) در حال حذف شدن هستن. تا زمانیکه جزئیات بیشتری منتشر بشه میتونید در بحث مربوطه Gitter شرکت کنید!
اگه میخواید نسبت به کارای انجامشده اطلاعی داشته باشید، به این مقاله سری بزنید.
آیا برای تغییر در سیستم override برنامهریزی وجود داره؟
پرستاشاپ 1.7 استفاده از namespaces رو با معماری جدیدی که داره معرفی میکنه و خیلی زود هر چیزی که namespaces داشته باشه رو نمیشه override کرد.
بااینحال، هنوز هم میشه معماری قدیمی رو override کرد اما بهطورکلی، ما override کردن کُدها رو توصیه نمیکنیم. بهتر اینه که اونها رو extend کرد.
همچنین، در حال حاضر، overrideها در صفحاتی که بر پایه Symfony هستند ممنوعه (در صفحههای محصول و ماژول).
داشتن سیستم overrideها خوبه اما مشکل اینجاست که این یه سیستم extension کنترلنشده است. ما داریم روی یه فرآیندی کار میکنیم که با دقت برنامهریزی شده و به توسعهدهندهها این امکان رو میده که کُد پرستاشاپ رو خیلی تر و تمیزتر از قبل گسترش بدن. در آیندهی نزدیک دربارهی این موضوع در همین بلاگ مطلب مینویسیم اما میشه اون رو اینطوری خلاصه کرد که تیم توسعهدهنده نیازهای شما رو برای overrideها در نسخهی بعدی پرستاشاپ تلفیق خواهد کرد؛ تقریباً مثل کاری که polyfills برای ویژگیهای HTML5 انجام میده 🙂 خلاصه، شما به ما میگید که چی میخواید و در همین حین که ما اون ویژگی رو در نسخهی بعد اضافه میکنیم، میتونید از یه override استفاده کنید.
مجدداً باید بگیم که سیستم override کنار گذاشته نمیشه، شما همچنان میتونید به راحتی پرستاشاپ رو گسترش بدید. ما فقط داریم نحوهی انجام این کار رو تغییر میدیم: بهجای اینکه هر توسعهدهنده مجموعهای مجزا از overrideها رو داشته باشه، ما توسعهدهندهای رو میخوایم که به یه override نیاز داشته باشه و دربارهی اون به ما اطلاعات بده تا در نسخهی بعدی پرستاشاپ مستقیماً اون رو به کار بگیریم.
آیا توسعهدهندهها همچنان میتونن از overrideهای نسخهی 1.7 استفاده کنن؟
بله overrideها مثل همیشه روی تمامی classهایی که namespace ندارن کار خواهد کرد (بنابراین شما همچنان میتونید محصول، آدرس و غیره رو override کنید).
حالا بحثهایی دربارهی یه نقطهی مبهم مطرح شده که ترس بیدلیلی رو اشاعه داده. در حال حاضر، وقتی یه کامپوننت (component) Symfony از یه کامپوننت قدیمی استفاده کنه (بخونید: کلاسی بدون namespace)، بله؛ باعث میشه که overrideها نادیده گرفته بشن (مثال: ProductCore در data provider مورد استفاده قرار میگیره و overrideها رو دور میزنه و محصول (Product) باید اینجا استفاده بشه تا overrideها طبق انتظارات عمل کنن). این یه اشتباهه و رفع کردنش کار سختی نیست و بهزودی برطرف میشه.
مسلماً ما میدونیم که overrideها خیلی محبوبیت دارن چون در پرستاشاپ بهاندازه کافی hook وجود نداره؛ اما بهجای کار کردن روی کُد override، چرا پیشنهاد نمیدید که یه hook اضافه کنیم که کل جامعه بتونن از اون استفاده کنن؟ این یه پروژهی متن بازه، جلو برید و یه درخواست جدید رو در GitHub ثبت کنید، مثل Prestarocket که چند روز پیش این کار رو انجام داد:
https://github.com/PrestaShop/PrestaShop/pull/4907
ایدهی نسخهی 1.7 اینه که همچنان بتونید از overrideها استفاده کنید اما دوست داریم بدونیم که شما چه موقع به اون یا hook نیاز دارید تا شاید در نسخههای اصلی یا فرعی آینده اون رو اضافه کنیم!
ایدههاتون رو با ما در میون بذارید!
Overrideها یه جواب اشتباه به یه مشکل واقعیه اما این مشکلها به این زودیها رفع نمیشه چون بخش اعظمی از محیط ما به اونها بستگی داره.
اما متکی بودن صرف به overrideها موجب میشه تا معماری پرستاشاپ نتونه تکامل پیدا کنه. مسلماً هر کسی میتونه گوشهای از کار خودش رو گسترش بده اما اگه بتونیم hookهایی اضافه کنیم که نیازهای همه رو برطرف کنن، برای کل جامعهی ما بهتر خواهد بود.
اگه باهم دیگه کار کنیم میتونیم codebase رو آسونتر و با روشهای بهتری گسترش بدیم.
آیا فهرستی از تمامی ماژولهایی که تحت تأثیر تغییرات ایجادشده روی صفحهی محصول BO قرار گرفتهاند وجود داره؟
یه parser مخصوص طراحی کردیم که تمامی ماژولهای موجود در کاتالوگ Addons پرستاشاپ رو تحلیل کرده تا ماژولهایی رو که ممکنه طبق انتظار کار نکنن شناسایی کنیم. نتایج این تحلیل در یه مقالهی دیگه منتشر میشه؛ خیلی زود!
آیا فهرستی از تمامی ماژولهایی که تحت تأثیر تغییرات ایجادشده روی قالب استارتر قرار گرفتهاند وجود داره؟
تمامی ماژولهای نسخهی 1.6 که هدفشون قالب بوده احتمالاً با این تغییرات (به درجات مختلفی) تحت تأثیر قرار میگیرن و نیاز دارن که با نسخهی 1.7 سازگار بشن. از موقعی که ماژول شما قالب رو هدف بگیره، باید بهروزرسانی بشه.
بهزودی یه راهنما منتشر میکنیم تا به شما بگه که وقتی دارین ماژولتون رو بهروزرسانی میکنین باید دنبال چه چیزی بگردین.
راهنمای توسعهدهندهی نسخهی 1.7 کجاست؟
روی راهنمای توسعهدهنده داره کار میشه. سایت مستندسازی آنلاینه و شما میتونید مشارکت کنید! خلاصهای از نکات مربوطه در مقالهای با عنوان «تغییرات توسعهای ماژول در پرستاشاپ 1.7.0.0» که در Build منتشرشده قابل دسترسیه!
در همین حین به شما توصیه میکنیم که این کُد رو که مخصوص ماژول نسخهی 1.7 هست بررسی کنید: https://github.com/PrestaShop/paymentexample
سپاس بیکران
ای کاش یه آموزش ارتقا از 1.6 به 1.7 میزاشتید
هر موقع امکان پذیر باشه حتما میذاریم. فعلا اصلا توصیه نمیشه ارتقا.
انتقال محصولات از 1.6 به 1.7 ممکنه؟
بله ولی فعلا زوده و بهتره که این کار رو نکنید.
براش ماژول پولی وجود داره که فکر کنم ۶۰ یا ۹۰ یورو پولش باشه.