سلام

هر روز که میگذره فروشگاههای بیشتری با پرستاشاپ راه اندازی میشه و به همین نسبت توسعه دهندگان بیشتری هم به این حوزه میپیوندند ، حقیقتا ما در پرستافا خیلی خوشحالیم و هر کمکی که بتونیم برای گسترش جامعه کاربری پرستاشاپ فارسی از مدیر فروشگاه تا توسعه دهنده و پشتیبان خواهیم کرد!

همونطور که میدونید از چند ماه گذشته که پرستافا با برند جدید ( از دی بی اس تم ) رسما نوید فصلی نو در پرستاشاپ رو داده بود، خوشبختانه در این بازه کوتاه تغییرات مفید و موثر بزرگی رقم خورده البته ما تنها نبودیم وپشتیبانان و توسعه دهندگان زیاد دیگری هم در این حوزه فعال شدند که امیدواریم هر روز با قدرت بیشتر و بهترین بتونن در این حوزه قدم های مثبتی رو بردارند!

ماه گذشته برای اولین بار در ایران بومی سازی پرستاشاپ توسط یک ماژول بومی ساز انجام شد که به واسطه این تحول بزرگ ، دیگر نیاز به نصب نسخه خاص فارسی نبوده وتنها با نصب ماژول پرستاپلاس برروی نسخه رسمی پرستاشاپ ، میتوان از مزایای پرستاشاپ فارسی استفاده نمود!

متاسفانه در حین توسعه پرستاشاپ و به خصوص توسعه پرستاپلاس متوجه شدیم راهکارهای نادرست متعددی در نسخه فارسی غیر رسمی استفاده شده ، به همین جهت وظیفه خودمون میدونیم تا این اطلاعات رو منتشر کنیم تا انشالله سایر توسعه دهندگان و همچنین استفاده کنندگان در این زمینه آگاهی پیدا نموده و این اشکالات رو برطرف نمایند.

اگر با پرستاپلاس آشنا نیستید ...

مزایای مهم بومی ساز پرستافا را مطالعه کند و پس از آن طبق آموزش ارتقا پرستاشاپ که به صورت ویدئویی و متنی آماده شده ، نحوه ارتقا پرستاشاپ را فرا گرفته و در نهایت نیز از صفحه دانلود پرستاشاپ فارسی آخرین نسخه پرستاپلاس (بومی ساز پرستافا) و نسخه ی توصیه شده پرستاشاپ را دانلود نمایید!

راهکارهای سازگاری با ماژولهای کد شده در پرستاشاپ

یکی از دغدغه مهم توسعه دهندگان در ایران و کشورهای مشابه ایران ( از نظر حق کپی رایت ) مسئله حفاظت از زحمات و تلاش های چندماه آنها است، طبیعتا در کشورهای توسعه یافته که حقوق کپی رایت به خوبی در آنها رعایت و قابل پیگرد است این موضوع دغدغه کمتری را دارد اما در ایران این موضوع مشکل بزرگی است که توسعه دهندگان باید برای حفظ حقوق خود از راهکاری جایگزین استفاده نمایند!

حفاظت از کدهای PHP

یکی از این راهکارها در زبان PHP استفاده از نرم افزارهای انکدر مانند سورس گاردین ، ioncube ، Zend Guard و غیره است!

به صورت پیشفرض پرستاشاپ از ماژولهای کد شده پشتیبانی نمیکند بنابر این تا به امروز در هسته پرستاشاپ تغییراتی صورت میگرفته که این سازگاری ایجاد شود!

چالش بزرگ در پرستاپلاس

در حین بومی سازی پرستاشاپ با پرستاپلاس بزرگترین چالش ما این بود که بدون تغییر در هسته پرستاشاپ دهها کار مورد نیاز را انجام دهیم ، شاید ماژول های عادی را به راحتی بتوان با امکان پیشفرض توسعه پرستاشاپ ، ایجاد نمود اما ماژول مهم و بزرگی مانند پرستاپلاس که وظیفه بومی سازی و هماهنگ سازی کامل پرستاشاپ را بر عهده دارد ، کار بزرگی و چالشی بزرگتر است!

چالشی که ما همیشه در تیم مان به دنبال آن بوده ایم و همه محصولاتمان چالش های بزرگ پرستاشاپ را برطرف نموده این بار نیز با چالشی بزرگ مواجه بودیم ، بومی سازی کامل پرستاشاپ بدون تغییر در هسته!

طی ماهها تلاش تیم توسعه پرستافا ما راهکارهای متفاوتی برای بومی سازی پرستاشاپ انجام دادیم تا بدون تغییر در هسته پرستاشاپ بتوان نسخه رسمی پرستاشاپ را برای زبان فارسی مورد استفاده نمود!

از قدیم گفته اند جوینده یابنده است! در نهایت توانستیم بومی سازی پرستاشاپ را با روش های نوین و با کمترین تغییر در هسته پرستاشاپ (میتوان گفت بدون تغییر ) انجام دهیم!

یک اورراید و یک تغییر در هسته برای سازگاری عقبرو

یک تغییر برای نمایش تاریخ که با امکان اورراید پرستاشاپ بدون تغییر در هسته انجام شد!

اما تغییر دوم که سازگاری با ماژولهای انکد شده فارسی بود البته این تغییر اجباری نبود اما برای اینکه با ماژول های منتشر شده قبلی سازگار باشد و استفاده کنندگان قبلی نسخه غیر رسمی پرستاشاپ با مشکلی مواجه نشوند آن را اعمال نمودیم !

که اصطلاحا در علم کامپیوتر و برنامه نویسی به آن سازگاری عقبرو ( Backward compatibility ) می گویند که علت انجام آن سازگاری با نسخه های پیشین و استفاده کنندگان قبلی است!

در این آموزش به توسعه دهنگان راهکار صحیح هماهنگ سازی ماژولهای کدشده با پرستاشاپ را بدون نگرانی نوع پرستاشاپ ( رسمی یا غیر رسمی ) خواهیم آموخت ، امیدواریم توسعه دهندگان و همکاران عزیز از این روش توصیه شده پرستافا برای انتشار ماژولهای خود استفاده نمایند.

راهکار سازگاری با ماژولهای کد شده به روش قدیمی و نادرست

تا به امروز برای سازگار نمودن پرستاشاپ با ماژولهای کد شده از روش زیر استفاده میشده است!

در هسته پرستاشاپ در فایل classes\module\module.php در خط (تقریبی) 1361 یعنی خط زیر :

حذف شده و خط زیر جایگزین آن میشد!

خط اصلی پرستاشاپ محتوای کدهای اجرایی PHP ماژول را از نظر گرامر بررسی میکند اما نسخه تغییر یافته صرفا بررسی میکنید محتوایی وجود دارد یا خیر.

اگر چه با این کار ماژولهای انکد شده هم با پرستاشاپ سازگار شده اما به دلیل حذف یک بررسی هسته پرستاشاپ ممکن است مشکلاتی را ایجاد نماید.

مشکلات تغییر هسته پرستاشاپ
  • اولین و مهمترین نکته این است که با این کار هسته پرستاشاگ تغییر کرده است و از استاندارد خارج شده!
  • نکته دوم در عمل حذف یک if  و ساختار بررسی از پرستاشاپ است.
  • احتمال افزایش خطاها و باگها به خصوص در صفحه ماژولها
  • عدم سازگاری ماژولها انکد شده با این روش با نسخه رسمی پرستاشاپ

به کمک راهکار فوق اگر چه مشکل عدم سازگاری برطرف شده اما این راهکار هوشمندانه و صحیح نبوده و علاوه بر نیاز به تغییر در هسته پرستاشاپ ، هیچ ماژول انکد شده ای با نسخه های رسمی پرستاشاپ 1.6 قابل استفاده نبوده اند!

راهکار صحیح سازگاری با ماژولهای انکد شده بدون تغییر در هسته!

همانطور که بیان شد تغییر در هسته با روش قبلی برای سازگاری با ماژولهای کد شده ، معایب بسیاری دارد ، هم امکان خطا و باگ را افزایش میدهد و هم اینکه نمیتوان توان در نسخه های رسمی پرستاشاپ از ماژولهای کد شده استفاده نمود و از آن مهم تر اینکه با ارتقا پرستاشاپ به نسخه های رسمی به طور کل ماژولهایی کد شده فروشگاه از کار خواهند افتاد!

برای رفع این مشکل طبق روش زیر عمل نمایید! ( با فرض اینکه ماژول ما نامش test است )

فایل اصلی ماژول را بدین شکل کد نویسی نمایید ( خالی از هر گونه کد )

حال یک پوشه جدید در شاخه اصلی ماژول به نام classes ایجاد مینماییم. ( البته پوشه classes پیشنهادی است ) و سپس یک فایل برای کلاس والد به نام testparent.php ایجاد مینماییم.

محتویات داخل این فایل دقیقا همان محتویات فایل اصلی ماژول خواهد بود!

همانطور که مشاهده نمودید ، فایل اصلی ماژول بدون کد بوده و فایل والد کدهای ماژول را شامل میشده است ، حال تنها کافی است در هنگام رمز نگاری فایلها PHP با نرم فزار انکدر ، همه فایلها به جز فایل اصلی ماژول را انکد نمایید!

 

با خیال راحت از بومی ساز پرستاپلاس استفاده نمایید!

اگر چه پرستاپلاس این مشکل و ناسازگاری را در هسته برطرف نموده و مدیران فروشگاهها بدون نگرانی از هر چیز میتوانند از این پرستاپلاس و بومی ساز پرستافا استفاده نمایند.

اما توصیه میکنیم تمامی توسعه دهندگان پرستاشاپ زین پس در صورت لزوم به انکد کردن ماژولهای خود از این روش توصیه شده توسط پرستافا استفاده نمایند. این روش نه تنها خللی در هسته پرستاشاپ ایجاد نمی نماید بلکه دیگر نیازی به تغییر در هسته پرستاشاپ نبوده و میتوان از این ماژولهای در هسته رسمی پرستاشاپ حتی بدون ماژول پرستاپلاس نیز استفاده نمود!

 

امیدواریم با این اطلاعیه و پیگیری های آتی این روش جایگزین روش های نادرست گردد!

با احترام و آرزوی موفقیت

تیم توسعه پرستافا