فصل اول | قالب، ماژول و آموزش پرستاشاپ
سلام، اگر شما هم حجم سایت پرستاشاپیتون زیاده و بیشتر حجم مربوط به پوشه img در public_html هست (یعنی تعداد محصولات و عکسهاشون زیاده) و تصمیم به انتقال سرور سایت گرفتید و این موضوع حجم براتون چالشی شده، این پست شاید بهتون کمک کنه. خب همونطور که میدونید پرستاشاپ…
ماژول «پاکسازی تصاویر پرستاشاپ» - آزاد کردن فضای دیسک
با استفاده از این ماژول میتونید تصاویر بدون استفاده یا تکراری رو از سایتتون حذف کنید تا فضای دیسک آزاد بشه.
🤔 تصاویر بدون استفاده چه تصاویری هستند؟
1. نوع تصاویری که از منوی «مدیریت > طراحی > تنظیمات تصویر» حذف شده.
2. محصولاتی که حذف شدهاند ولی تصاویرشون به اشتباه باقی مونده.
3. تصاویر 2x، فرمتهای webp یا تصاویر واترمارک که استفاده نمیشن.
⚙️ این ماژول چه تصاویری رو پاک میکنه؟
- تصاویر محصولات، دستهبندیها، تولیدکنندگان، تأمینکنندگان، فروشگاهها و تصاویر موجود در پوشه /img/tmp/
- بندانگشتیهای مربوط به نوع تصاویر حذفشده
- بندانگشتیهای زبانهای حذفشده
- بندانگشتیهای تصاویر حذفشده
- بندانگشتیهای غیرضروری تولید شده توسط ماژول واترمارک
- فایلهایی که تصویر نیستند
- سایر فایلها مانند تصاویری که از طریق FTP آپلود شدهاند
🔥 خرید از طریق لینک زیر:
🔗 https://fasleaval.com/u/imgcleaner
📢 @fasleaval | فصل اول
با استفاده از این ماژول میتونید تصاویر بدون استفاده یا تکراری رو از سایتتون حذف کنید تا فضای دیسک آزاد بشه.
🤔 تصاویر بدون استفاده چه تصاویری هستند؟
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 ارزشِ مرجعِ کاتالوگ را همانطور که در زمان ثبت سفارش بوده، برای مقاصد ارجاع، گزارشگیری یا تحلیل سود حفظ میکند.
classes/order/OrderDetail.php
Lines 683-686
📢 @fasleaval | فصل اول
✅ 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 | فصل اول
پرستاشاپ 8.2.3 منتشر شد. این نسخه، یک انتشار وصلهای با محوریت امنیت برای شاخهی 8.2 است. هدف اصلی آن رسیدگی به یک آسیبپذیری شمارش ایمیل (email enumeration) در قابلیت بازیابی رمز عبور در بخش مدیریت (back office) است. تعداد اندکی از بهبودها و رفع باگهای کمریسک که پیشتر اعتبارسنجی شدهاند نیز در این نسخه گنجانده شدهاند.
اطلاعات بیشتر:
https://fasleaval.com/blog/8521/prestashop-8-2-3-available
📢 @fasleaval | فصل اول
دانلود آخرین نسخه پایدار پرستاشاپ
https://fasleaval.com/blog/download-prestashop
📢 @fasleaval | فصل اول
https://fasleaval.com/blog/download-prestashop
📢 @fasleaval | فصل اول
👍1
من چند سال پیش ماژول quantitydiscountpro رو معرفی کرده بود به عنوان یک ماژول خیلی کاربردی برای ایجاد انواع کدهای تخفیف سبد خرید و واقعا هم امکانات خیلی خوبی داشت.
اما بعد از یک مدت متوجه شدم که کدنویسی ماژول چندان بهینه نیست.
قصه از اونجا شروع شد که من یک قانون تخفیف سبد خرید درست کردم بدون اینکه کدی براش تعریف کنم تا به صورت خودکار روی سبدهای واجد شرایط اعمال بشه.
بعد یک روز وقتی قانون فعال بود وارد صفحه مشتری توی ادیمن شدم دیدم برای یک مشتری یک قانون اومده دهها کد تخفیف ایجاد کرده. بررسی کردم دیدم همواره فقط یکیشون فعاله و بقیه غیرفعال. بررسی که کردم دیدم با هر تغییر سبد خرید مشتری کد قبلی که بر اساس قانونی که تعریف کردم ساخته رو غیرفعال میکنه و یک کد جدید میسازه.
این باعث میشد در زمان هایی که سایت ترافیک بالایی داشت تعداد خیلی زیادی کد تخفیف غیرفعال در جدول cart_rule خود پرستاشاپ و جداول خودش ایجاد میکرد. تعداد رکوردهای یکی از جداول به چند میلیون رسیده بود.
ماژول روش هایی برای حذف این کدهای تخفیف داشت. درست یادم نیست ولی فکر کنم هر بار که یک صفحه ادمین رو لود میکردیم میرفت چند تا دونه رو پاک میکرد. صفحات ادمین هم مقدار کمی کند کرده بود.
بعد با توسعه دهنده اش که صحبت کردم گفت یه فایل clean.php توی روت ماژول هست که اون رو باید اجرا کنی تا بره این کدها رو پاک کنه.
وقتی اجرا کردم تایم اوت داد چون احتمالا پیش بینی این تعداد کد رونکرده بود. من بعد از چند سال داشتم clean میکردم و در نهایت نتونست کاری از پیش ببره.
بعد سعی کردیم این کد رو بهینه کنیم و هر بار ۴۰ تا از کدها رو پاک کنه که خیلی زیاد طول میکشید.
ماژول رو تلاش کردم غیرفعال کنم ولی به خاطر تلاشی که برای پاک کردن اثرش از دیتابیس میکرد هر بار به خطا میخورد.
یعنی به جایی رسیده بودم که نه میتونستم غیرفعالش کنم نه میتونستم ازش استفاده کنم درست و سایت رو خیلی سنگین میکرد به خصوص جداول سبد خرید رو که توی ترافیک بالا واقعا سبد خرید رو کند میکرد. حتی بعضی از قوانین هم نمیشد غیرفعال یا حتی تاریخش رو ویرایش کرد.
البته این مشکل فقط زمانی پیش میاد که برای قانون هیچ کدی تعریف نکنید که روی همه سبدها اعمال بشه.
در نهایت با کمک GPT تونستم این کد clean.php رو بهینه کنم و کل جداول رو تمیز کنم. جدولی که چند میلیون رکورد داشت رسید به چند هزار تا. در نهایت هم ماژول رو غیرفعال کردم.
خلاصه چون این ماژول رو خیلی معرفی کرده بودم، لازم بود این رو هم اعلام کنم که اگر کسی داره استفاده میکنه حواسش به این موضوع باشه.
📢 @fasleaval | فصل اول
اما بعد از یک مدت متوجه شدم که کدنویسی ماژول چندان بهینه نیست.
قصه از اونجا شروع شد که من یک قانون تخفیف سبد خرید درست کردم بدون اینکه کدی براش تعریف کنم تا به صورت خودکار روی سبدهای واجد شرایط اعمال بشه.
بعد یک روز وقتی قانون فعال بود وارد صفحه مشتری توی ادیمن شدم دیدم برای یک مشتری یک قانون اومده دهها کد تخفیف ایجاد کرده. بررسی کردم دیدم همواره فقط یکیشون فعاله و بقیه غیرفعال. بررسی که کردم دیدم با هر تغییر سبد خرید مشتری کد قبلی که بر اساس قانونی که تعریف کردم ساخته رو غیرفعال میکنه و یک کد جدید میسازه.
این باعث میشد در زمان هایی که سایت ترافیک بالایی داشت تعداد خیلی زیادی کد تخفیف غیرفعال در جدول cart_rule خود پرستاشاپ و جداول خودش ایجاد میکرد. تعداد رکوردهای یکی از جداول به چند میلیون رسیده بود.
ماژول روش هایی برای حذف این کدهای تخفیف داشت. درست یادم نیست ولی فکر کنم هر بار که یک صفحه ادمین رو لود میکردیم میرفت چند تا دونه رو پاک میکرد. صفحات ادمین هم مقدار کمی کند کرده بود.
بعد با توسعه دهنده اش که صحبت کردم گفت یه فایل clean.php توی روت ماژول هست که اون رو باید اجرا کنی تا بره این کدها رو پاک کنه.
وقتی اجرا کردم تایم اوت داد چون احتمالا پیش بینی این تعداد کد رونکرده بود. من بعد از چند سال داشتم clean میکردم و در نهایت نتونست کاری از پیش ببره.
بعد سعی کردیم این کد رو بهینه کنیم و هر بار ۴۰ تا از کدها رو پاک کنه که خیلی زیاد طول میکشید.
ماژول رو تلاش کردم غیرفعال کنم ولی به خاطر تلاشی که برای پاک کردن اثرش از دیتابیس میکرد هر بار به خطا میخورد.
یعنی به جایی رسیده بودم که نه میتونستم غیرفعالش کنم نه میتونستم ازش استفاده کنم درست و سایت رو خیلی سنگین میکرد به خصوص جداول سبد خرید رو که توی ترافیک بالا واقعا سبد خرید رو کند میکرد. حتی بعضی از قوانین هم نمیشد غیرفعال یا حتی تاریخش رو ویرایش کرد.
البته این مشکل فقط زمانی پیش میاد که برای قانون هیچ کدی تعریف نکنید که روی همه سبدها اعمال بشه.
در نهایت با کمک GPT تونستم این کد clean.php رو بهینه کنم و کل جداول رو تمیز کنم. جدولی که چند میلیون رکورد داشت رسید به چند هزار تا. در نهایت هم ماژول رو غیرفعال کردم.
خلاصه چون این ماژول رو خیلی معرفی کرده بودم، لازم بود این رو هم اعلام کنم که اگر کسی داره استفاده میکنه حواسش به این موضوع باشه.
📢 @fasleaval | فصل اول
❤2🙏1
Forwarded from AmirHRzd
فکر میکردم مشکل از آدمهاست.
اینکه دقت نمیکنند، مسئولیتپذیر نیستند، اشتباه میکنند و اگر قرار است کار درست پیش برود، باید خودم حواسم به همهچیز باشد.
مدتها اسم این رفتار را میگذاشتم «مسئولیتپذیری».
بعدتر فهمیدم بخش بزرگی از آن، کنترل کردن بود.
چند سال پیش با همین مسئله وارد یک دوره لیدرشیپ شدم؛ با این انتظار که چیزهایی درباره مدیریت آدمها و سازمان یاد بگیرم.
اما چیزی که بیشتر از همه جلوی چشمم قرار گرفت، خودم بود.
از آن تجربه یک سؤال برایم ماند که هنوز هم بارها به آن برمیگردم:
«از کجا مطمئنم چیزی که دارم میبینم، تمام حقیقت است؟»
درباره این تجربه، تأثیری که روی نگاهم به آدمها و اتفاقهای کاری گذاشت، و همینطور اینکه چرا امروز داوطلبانه در برگزاری دوره «چیرگی بر زندگی» همراهی میکنم، مفصلتر نوشتهام.
اگر مدیر هستید، تیم دارید، یا اصلاً مسئلهای در زندگی دارید که بارها برای تغییرش تلاش کردهاید و دوباره به همان نقطه برگشتهاید، احتمالاً این نوشته برایتان قابل تأمل است.
🔗 https://fasleaval.com/blog/8528/leadership-transformation-experience
📢 @amirHrzd
اینکه دقت نمیکنند، مسئولیتپذیر نیستند، اشتباه میکنند و اگر قرار است کار درست پیش برود، باید خودم حواسم به همهچیز باشد.
مدتها اسم این رفتار را میگذاشتم «مسئولیتپذیری».
بعدتر فهمیدم بخش بزرگی از آن، کنترل کردن بود.
چند سال پیش با همین مسئله وارد یک دوره لیدرشیپ شدم؛ با این انتظار که چیزهایی درباره مدیریت آدمها و سازمان یاد بگیرم.
اما چیزی که بیشتر از همه جلوی چشمم قرار گرفت، خودم بود.
از آن تجربه یک سؤال برایم ماند که هنوز هم بارها به آن برمیگردم:
«از کجا مطمئنم چیزی که دارم میبینم، تمام حقیقت است؟»
درباره این تجربه، تأثیری که روی نگاهم به آدمها و اتفاقهای کاری گذاشت، و همینطور اینکه چرا امروز داوطلبانه در برگزاری دوره «چیرگی بر زندگی» همراهی میکنم، مفصلتر نوشتهام.
اگر مدیر هستید، تیم دارید، یا اصلاً مسئلهای در زندگی دارید که بارها برای تغییرش تلاش کردهاید و دوباره به همان نقطه برگشتهاید، احتمالاً این نوشته برایتان قابل تأمل است.
🔗 https://fasleaval.com/blog/8528/leadership-transformation-experience
📢 @amirHrzd
❤5
سال گذشته (تقریبا چند روز بعد از جنگ) برای گروچا گیتهاب رو راه انداختم و کل پروژه گروچا رو آروم آروم بردم روی گیتهاب.
الان که بیش از یکسال از این اتفاق میگذره همهاش با خودم میگم که کاشکی زودتر میرفتم سراغش.
چند ماهی هم هست که Codex CLI رو روی یک سرور نصب کردم. سروری که سایت اصلی (به اصطلاح پروداکشن) روش نیست و گیتهاب گروچا هم روش هست و روی گیتهاب هم کلی اسکیل و ایجنت و... ایجاد کردیم و تقریبا کل کدنویسی و دیباگ و تحلیل و بررسی رو با کدکس انجام میدیم.
الان هم چند روزه که شروع کردیم به پیاده سازی پراویژنینگ و دیپلوی.
در این مسیر کلی چیز یادگرفتم و البته هنوز خیلی مبتدی هستم.
این پست رو بیشتر برای این نوشتم که یه مشکلی روی سایت وجود داشت که با وجود ماژول کش روی سایت، فقط برای حساب کاربری من صفحات سایت به شدت کند بود. برای بقیه ۷۰۰ میلی ثانیه باز میشد برای من ۱۲ ثانیه. خودم و یک متخصص چند وقتی روش کار کردیم ولی نتونستیم ریشه مشکل رو پیدا و حل کنیم.
امروز که دیگه این سرعت مانع سر راهم شده بود دیگه و داشت اذیت میکرد کدکس رو گذاشتم روی Ultra و دامپ دیتابیس هم بهش دادم و رفت و ۱۳ دقیقه بعد علت رو پیدا کرد. چند تا تست گفت انجام دادم و در نهایت مشکل با تعیین تاریخ پایان برای یک قیمت ویژه برای سبد خریدی که حذف شده بود حل شد.
الان که بیش از یکسال از این اتفاق میگذره همهاش با خودم میگم که کاشکی زودتر میرفتم سراغش.
چند ماهی هم هست که Codex CLI رو روی یک سرور نصب کردم. سروری که سایت اصلی (به اصطلاح پروداکشن) روش نیست و گیتهاب گروچا هم روش هست و روی گیتهاب هم کلی اسکیل و ایجنت و... ایجاد کردیم و تقریبا کل کدنویسی و دیباگ و تحلیل و بررسی رو با کدکس انجام میدیم.
الان هم چند روزه که شروع کردیم به پیاده سازی پراویژنینگ و دیپلوی.
در این مسیر کلی چیز یادگرفتم و البته هنوز خیلی مبتدی هستم.
این پست رو بیشتر برای این نوشتم که یه مشکلی روی سایت وجود داشت که با وجود ماژول کش روی سایت، فقط برای حساب کاربری من صفحات سایت به شدت کند بود. برای بقیه ۷۰۰ میلی ثانیه باز میشد برای من ۱۲ ثانیه. خودم و یک متخصص چند وقتی روش کار کردیم ولی نتونستیم ریشه مشکل رو پیدا و حل کنیم.
امروز که دیگه این سرعت مانع سر راهم شده بود دیگه و داشت اذیت میکرد کدکس رو گذاشتم روی Ultra و دامپ دیتابیس هم بهش دادم و رفت و ۱۳ دقیقه بعد علت رو پیدا کرد. چند تا تست گفت انجام دادم و در نهایت مشکل با تعیین تاریخ پایان برای یک قیمت ویژه برای سبد خریدی که حذف شده بود حل شد.
❤5
ما در گروچا یک سرویس ویرایش عکس با AI راهاندازی کردیم که از آدرس زیر در دسترسه
https://photora.gruccia.ir/
https://photora.gruccia.ir/
photora.gruccia.ir
Gruccia Backoffice
Gruccia Backoffice — مرکز عملیات و مدیریت پلتفرم گروچا
با کد معرف ahr-fsl ثبت نام کنید و بهم اطلاع بدید تا چند تا تست رایگان براتون فعال بشه.
@amirhosseinrzd
@amirhosseinrzd
عکس سمت چپ رو دادم بدون هیچ توضیحی فقط با استفاده از الگویی که تعریف کردیم و شما میتونید انتخاب کنید عکس سمت راست رو داد.
https://photora.gruccia.ir/
https://photora.gruccia.ir/
This media is not supported in your browser
VIEW IN TELEGRAM
ویدیو ادیت همین عکس بالا به همراه توضیح یک امکان رایگان برای «افزودن متن» روی عکس برای اینستاگرام یا حتی بنرهای سایت.
https://photora.gruccia.ir/
https://photora.gruccia.ir/
👍1
یک محیط ساده بدون پیچیدگی.
سر راست. سریع.
امیدوارم که استفاده کنید و مفید باشه براتون.
https://photora.gruccia.ir/
سر راست. سریع.
امیدوارم که استفاده کنید و مفید باشه براتون.
https://photora.gruccia.ir/
❤1
شاید برای شما هم پیش بیاد که دوست دارید یه چیزی رو روی یه دستگاه (تلفنهمراه، رایانه و...) کپی کنید و روی یه دستگاه دیگه پیست کنید.
این سایت رو باز میکنید. از سیستم فعلی کپی میکنید تو کادر.
یه کد میده.
تو سیستم دوم همین سایت رو باز میکنید و کدش رو میزنید و میتونید محتوای کپیشده رو بردارید.
https://copy-paste.online/
این سایت رو باز میکنید. از سیستم فعلی کپی میکنید تو کادر.
یه کد میده.
تو سیستم دوم همین سایت رو باز میکنید و کدش رو میزنید و میتونید محتوای کپیشده رو بردارید.
https://copy-paste.online/
❤2