فصل اول | قالب، ماژول و آموزش پرستاشاپ
649 subscribers
299 photos
28 videos
9 files
406 links
کانال رسمی فصل اول

https://fasleaval.com

هدف گروه فصل اول آموزش‌ و راهنمایی کارآفرینان، استارت‌-آپ‌ها و مدیران و ایجاد محیطی برای تبادل تجربیات و دیدگاه‌ها به قصد رشد کسب و کارهاست.

پشتیبانی:
@fasleaval_support
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ پروسه آسان و سریع آپدیت ماژول المنت فلو (سایت ساز) با چند کلیک

نسخه 1.4.4 ماژول که جدیدترین نسخه ماژول هست در تاریخ 8 آبان منتشر شده و هم اکنون در حساب کاربری فصل اول قابل دانلود است.


💎 خرید ماژول المنت فلو (سایت ساز):
https://fasleaval.com/220-prestashop-sitebuilder-module


📢 @fasleaval | فصل اول
👍5
🍉 جشنواره یلدا فصل اول شروع شد.

به مدت ۳ روز می‌تونید قدرتمندترین قالب و ماژول‌های پرستاشاپ با لایسنس اصلی Sunnytoo رو با 🔥دلار ۶۰ هزار تومانی - قیمت ۴ ماه پیش🔥 تهیه کنید!

👇 مشاهده و خرید:
https://fasleaval.com/u/yalda


📢 @fasleaval | فصل اول
3
🚨 هشدار حمله SQL Injection

در اطلاعیه امنیتی پرستاشاپ که امروز منتشر شد، مشخص شد که حملات اخیر به فروشگاه‌های پرستاشاپ با استفاده از آسیب‌پذیری‌های SQL Injection در ماژول‌های شخص ثالث انجام شده و منجر به تزریق کدهای مخرب به دیتابیس و سرقت اطلاعات حساس مشتریان شده است.

این آسیب‌پذیری‌ها در هسته پرستاشاپ وجود ندارند، بلکه ناشی از ماژول‌های قدیمی و به‌روزرسانی‌نشده هستند.


چگونه بررسی کنیم که فروشگاه تحت تأثیر قرار گرفته؟
مقدار PS_SHOP_NAME را در دیتابیس چک کنید. اگر کد جاوا اسکریپت یا محتوای مشکوک وجود داشت، ممکن است فروشگاه شما تحت تأثیر باشد.


آپدیت ماژول ps_contactinfo
برای پیشگیری، تیم پرستاشاپ نسخه جدید ماژول ps_contactinfo را منتشر کرده و توصیه می‌کند فروشگاه‌ها را به‌روز نگه دارید.


بهترین روش‌ها برای ایمن‌سازی فروشگاه پرستاشاپ
- به‌روزرسانی مداوم فروشگاه:
استفاده از آخرین نسخه پایدار هسته پرستاشاپ.
به‌روزرسانی منظم ماژول‌های بومی و شخص ثالث.

- استفاده از پیشوند دیتابیس سفارشی:
در هنگام نصب پرستاشاپ، از پیشوند پیش‌فرض ps_ استفاده نکنید.

- استفاده از فایروال (WAF):
فایروال وب اپلیکیشن از فروشگاه در برابر درخواست‌های مخرب مانند SQL Injection محافظت می‌کند.

- پشتیبان‌گیری منظم:
ایجاد نسخه‌های پشتیبان از دیتابیس و فایل‌ها برای کاهش زمان ازکارافتادگی در صورت حمله.

- پیگیری هشدارهای امنیتی:
دنبال کردن به‌روزرسانی‌های امنیتی در گیت‌هاب و Friends-Of-Presta


📚 اطلاعات بیشتر:
https://build.prestashop-project.org/news/2025/sql-injection-attacks-alert-and-security-enhancements-for-prestashop/


📢 @fasleaval | فصل اول
👍5
📺 هم اکنون می‌توانید Live Update پروژه پرستاشاپ را به صورت زنده از طریق لینک زیر تماشا کنید:
https://www.youtube.com/watch?v=JljSmYH-vdg


📢 @fasleaval | فصل اول
👍6
⚙️ پرستاشاپ 8.2.1 با یک ویژگی جدید برای توسعه دهندگان و رفع چندین باگ، منتشر شد!


ویژگی فیلتر کردن ماژول‌ها در فرانت آفیس:
قبلاً متد Hook::getHookModuleExecList فقط بر اساس نام هوک تعیین می‌کرد که کدام ماژول‌ها اجرا شوند. اما حالا توسعه‌دهندگان ماژول می‌توانند این فیلتر را با معیارهای دلخواه خود تنظیم کنند.

این ویژگی جدید برای توسعه‌دهندگان مفید است چون باعث می‌شود کمتر از override استفاده کنند و می‌توانند راحت‌تر تعیین کنند که چه ماژول‌هایی در یک هوک خاص اجرا شوند.

باگ‌های برطرف شده در این نسخه:
- حل مشکل تنظیم ریدایرکت محصول در بخش مدیریت
- رفع خطای در Product.php
- حل مشکل دانلود اشتباه CSV هنگام جستجوی محصول با شناسه
- حل مشکل نمایش دکمه «افزودن به سبد خرید» برای محصولات بدون قیمت


اطلاعات بیشتر در مورد این نسخه در بلاگ فصل اول:
💻 https://fasleaval.com/blog/8484/prestashop-8-2-1-available


📢 @fasleaval | فصل اول
👍5
🌺🍃 ضمن تبریک سال نو، در این پست می‌تونید لیست تعطیلی‌های رسمی سال ۱۴۰۴ رو مشاهده کنید و در صورتی که از ماژول زمان تحویل سفارشات استفاده می‌کنید از این لیست استفاده کنید.

سال نو مبارک! 🎉

👇 فایل اکسل را می‌تونید در پیام بعد دانلود کنید.

📢 @fasleaval | فصل اول
🙏5
سلام،
اگر شما هم حجم سایت پرستاشاپی‌تون زیاده و بیشتر حجم مربوط به پوشه img در public_html هست (یعنی تعداد محصولات و عکس‌هاشون زیاده) و تصمیم به انتقال سرور سایت گرفتید و این موضوع حجم براتون چالشی شده، این پست شاید بهتون کمک کنه.

خب همونطور که میدونید پرستاشاپ در بخش طراحی > تنظیمات تصاویر یه سری «بند انگشتی» یا thumbnail‌ داره که با آپلود هر عکسی برای محصول میاد به تعداد بند انگشتی ها یه کپی از اون عکس با ابعاد جدید میسازه.

حالا ما در زمان جنگ که ارتباط به سرورهای خارج ایران قطع شده بود و سرعت هم به شدت محدود بود به روشی می‌تونستیم فایل فول بک آپ سایت رو دانلود کنیم و بعد دستی آپلود کنیم ولی با حجم مثلا ۷۰ گیگ سرعت دانلود و آپلود طوری بود که شاید ۱۰ روز طول میکشید.

ناگهان به ذهنمون رسید که خب اگر بیاییم همه بند انگشتی‌ها رو به جز یکی حذف کنیم چی؟ یعنی انگار هر محصول فقط یک بند انگشتی بسازه (تست کردیم که اگر اصلا نسازه هم میشه یا نه که خطا میداد و ما وقت و حوصله بررسی اون خطاها رو نداشتیم). تست کردیم و کار کرد. اینطوری حجم پوشه img از ۷۰ گیگ رسید به ۱۵ گیگ. یعنی ۷۸.۵ درصد کاهش در حجم. خودمون که خوشحال بودیم، شما رو نمی‌دونم.

در نهایت بک‌آپ رو گرفتیم. فایل‌های بک‌آپ رو split کردیم به فایل‌های ۵۰۰مگابایتی. دانلود کردیم (با یه سری ژانگولر بازی که در پست جداگونه‌ای میگیم). آپلود کردیم در سرور ایران. merge کردیم و سایت بالا اومد. بعد رفتیم همه بند انگشتی ها رو دوباره ساختیم در تنظیمات تصاویر و زدیم بازسازی تصاویر انجام بشه.

این وسط از دو تا ماژول برای پاک کردن عکس‌های مربوط به بند انگشتی‌های حذف شده و بعد هم برای بازسازی اون تعداد بالای تصویر استفاده کردیم که حالا در پست‌های بعدی هر کدوم رو توضیح می‌دیم.

📢 @fasleaval | فصل اول
👍21
فصل اول | قالب، ماژول و آموزش پرستاشاپ
سلام، اگر شما هم حجم سایت پرستاشاپی‌تون زیاده و بیشتر حجم مربوط به پوشه img در public_html هست (یعنی تعداد محصولات و عکس‌هاشون زیاده) و تصمیم به انتقال سرور سایت گرفتید و این موضوع حجم براتون چالشی شده، این پست شاید بهتون کمک کنه. خب همونطور که میدونید پرستاشاپ…
ماژول «پاکسازی تصاویر پرستاشاپ» - آزاد کردن فضای دیسک

با استفاده از این ماژول می‌تونید تصاویر بدون استفاده یا تکراری رو از سایتتون حذف کنید تا فضای دیسک آزاد بشه.

🤔 تصاویر بدون استفاده چه تصاویری هستند؟
1. نوع تصاویری که از منوی «مدیریت > طراحی > تنظیمات تصویر» حذف شده.
2. محصولاتی که حذف شده‌اند ولی تصاویرشون به اشتباه باقی مونده.
3. تصاویر 2x، فرمت‌های webp یا تصاویر واترمارک که استفاده نمی‌شن.

⚙️ این ماژول چه تصاویری رو پاک می‌کنه؟
- تصاویر محصولات، دسته‌بندی‌ها، تولیدکنندگان، تأمین‌کنندگان، فروشگاه‌ها و تصاویر موجود در پوشه /img/tmp/
- بندانگشتی‌های مربوط به نوع تصاویر حذف‌شده
- بندانگشتی‌های زبان‌های حذف‌شده
- بندانگشتی‌های تصاویر حذف‌شده
- بندانگشتی‌های غیرضروری تولید شده توسط ماژول واترمارک
- فایل‌هایی که تصویر نیستند
- سایر فایل‌ها مانند تصاویری که از طریق FTP آپلود شده‌اند

🔥 خرید از طریق لینک زیر:
🔗 https://fasleaval.com/u/imgcleaner

📢 @fasleaval | فصل اول
2👍2
تفاوت و شباهت فیلدهای purchase_supplier_price و original_wholesale_price در جدول ps_order_detail

purchase_supplier_price
مبلغِ واحدی است که واقعاً برای محصول سفارش‌داده‌شده به تأمین‌کننده پرداخت شده. هنگام ایجاد سفارش ابتدا با قیمت عمده‌فروشی خودِ محصول مقداردهی می‌شود؛ اما اگر برای آن محصول/ترکیب، قیمتِ مخصوصِ تأمین‌کننده وجود داشته باشد، همان مقدار جایگزین می‌شود. این فیلد منعکس‌کنندهٔ قیمت تأمین‌کننده است و در محاسبات تبدیل ارز سفارش هم شرکت می‌کند.

original_wholesale_price
قیمت عمده‌فروشیِ پایهٔ محصول را ذخیره می‌کند؛ همان قیمتی که در کاتالوگ تعریف شده بود در لحظه‌ای که سطر سفارش اضافه شد. این مقدار درست قبل از ذخیره شدن جزئیات سفارش، با فراخوانی getWholeSalePrice() تنظیم می‌شود؛ تابعی که بدون توجه به قیمت‌های تأمین‌کننده، قیمت عمده‌فروشی محصول یا ترکیب را برمی‌گرداند.

جمع‌بندی شباهت/تفاوت
هر دو فیلد، اطلاعات هزینهٔ واحد برای سطر سفارش را نگه می‌دارند؛ با این تفاوت که purchase_supplier_price بازتاب‌دهندهٔ قیمتِ تأمین‌کننده (به‌همراه تبدیل‌های ارزی) است، در حالی‌که original_wholesale_price ارزشِ مرجعِ کاتالوگ را همان‌طور که در زمان ثبت سفارش بوده، برای مقاصد ارجاع، گزارش‌گیری یا تحلیل سود حفظ می‌کند.

$this->purchase_supplier_price = (float) $product['wholesale_price'];
if ($product['id_supplier'] > 0 && ($supplier_price = ProductSupplier::getProductPrice((int) $product['id_supplier'], $product['id_product'], $product['id_product_attribute'], true)) > 0) {
$this->purchase_supplier_price = (float) $supplier_price;
}

classes/order/OrderDetail.php
Lines 683-686

📢 @fasleaval | فصل اول
3
نسخه PrestaShop 8.2.3 منتشر شد [۱۳ شهریور ۱۴۰۴].

پرستاشاپ 8.2.3 منتشر شد. این نسخه، یک انتشار وصله‌ای با محوریت امنیت برای شاخه‌ی 8.2 است. هدف اصلی آن رسیدگی به یک آسیب‌پذیری شمارش ایمیل (email enumeration) در قابلیت بازیابی رمز عبور در بخش مدیریت (back office) است. تعداد اندکی از بهبودها و رفع باگ‌های کم‌ریسک که پیش‌تر اعتبارسنجی شده‌اند نیز در این نسخه گنجانده شده‌اند.

اطلاعات بیشتر:
https://fasleaval.com/blog/8521/prestashop-8-2-3-available

📢 @fasleaval | فصل اول
من چند سال پیش ماژول quantitydiscountpro رو معرفی کرده بود به عنوان یک ماژول خیلی کاربردی برای ایجاد انواع کدهای تخفیف سبد خرید و واقعا هم امکانات خیلی خوبی داشت.

اما بعد از یک مدت متوجه شدم که کدنویسی ماژول چندان بهینه نیست.

قصه از اونجا شروع شد که من یک قانون تخفیف سبد خرید درست کردم بدون اینکه کدی براش تعریف کنم تا به صورت خودکار روی سبدهای واجد شرایط اعمال بشه.

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

این باعث میشد در زمان هایی که سایت ترافیک بالایی داشت تعداد خیلی زیادی کد تخفیف غیرفعال در جدول cart_rule خود پرستاشاپ و جداول خودش ایجاد میکرد. تعداد رکوردهای یکی از جداول به چند میلیون رسیده بود.

ماژول روش هایی برای حذف این کدهای تخفیف داشت. درست یادم نیست ولی فکر کنم هر بار که یک صفحه ادمین رو لود میکردیم میرفت چند تا دونه رو پاک میکرد. صفحات ادمین هم مقدار کمی کند کرده بود.

بعد با توسعه دهنده اش که صحبت کردم گفت یه فایل clean.php توی روت ماژول هست که اون رو باید اجرا کنی تا بره این کدها رو پاک کنه.

وقتی اجرا کردم تایم اوت داد چون احتمالا پیش بینی این تعداد کد رونکرده بود. من بعد از چند سال داشتم clean میکردم و در نهایت نتونست کاری از پیش ببره.

بعد سعی کردیم این کد رو بهینه کنیم و هر بار ۴۰ تا از کدها رو پاک کنه که خیلی زیاد طول میکشید.

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

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

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

در نهایت با کمک GPT تونستم این کد clean.php رو بهینه کنم و کل جداول رو تمیز کنم. جدولی که چند میلیون رکورد داشت رسید به چند هزار تا. در نهایت هم ماژول رو غیرفعال کردم.

خلاصه چون این ماژول رو خیلی معرفی کرده بودم، لازم بود این رو هم اعلام کنم که اگر کسی داره استفاده میکنه حواسش به این موضوع باشه.

📢 @fasleaval | فصل اول
2🙏1