>
از Web API اصلی ناپ کامرس که در سایت ناپ شاپ ارائه می شود استفاده کنید
protected virtual async Task PrintProductsAsync(int vendorId, Language lang, Font titleFont, Document doc, Order order, Font font, Font attributesFont)
{
var productsHeader = new PdfPTable(1)
{
RunDirection = GetDirection(lang),
WidthPercentage = 100f
};
var cellProducts = await GetPdfCellAsync("PDFInvoice.Product(s)", lang, titleFont);
cellProducts.Border = Rectangle.NO_BORDER;
productsHeader.AddCell(cellProducts);
doc.Add(productsHeader);
doc.Add(new Paragraph(" "));
//a vendor should have access only to products
var orderItems = await _orderService.GetOrderItemsAsync(order.Id, vendorId: vendorId);
var count = 5 + (_catalogSettings.ShowSkuOnProductDetailsPage ? 1 : 0)
+ (_vendorSettings.ShowVendorOnOrderDetailsPage ? 1 : 0);
var productsTable = new PdfPTable(count)
{
RunDirection = GetDirection(lang),
WidthPercentage = 100f
};
var widths = new Dictionary<int, int[]>
{
{ 5, new[] { 20, 40, 15, 10, 15 } },
{ 6, new[] { 20, 35, 15, 10, 10, 10 } },
{ 7, new[] { 20, 30, 10, 10, 10, 10, 10 } }
};
productsTable.SetWidths(lang.Rtl ? widths[count].Reverse().ToArray() : widths[count]);
//product image
var cellProductItemPicture = await GetPdfCellAsync("PDFInvoice.ProductImage", lang, font);
cellProductItemPicture.BackgroundColor = BaseColor.LightGray;
cellProductItemPicture.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItemPicture);
//product name
var cellProductItem = await GetPdfCellAsync("PDFInvoice.ProductName", lang, font);
cellProductItem.BackgroundColor = BaseColor.LightGray;
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
//SKU
if (_catalogSettings.ShowSkuOnProductDetailsPage)
{
cellProductItem = await GetPdfCellAsync("PDFInvoice.SKU", lang, font);
cellProductItem.BackgroundColor = BaseColor.LightGray;
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
}
//Vendor name
if (_vendorSettings.ShowVendorOnOrderDetailsPage)
{
cellProductItem = await GetPdfCellAsync("PDFInvoice.VendorName", lang, font);
cellProductItem.BackgroundColor = BaseColor.LightGray;
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
}
//price
cellProductItem = await GetPdfCellAsync("PDFInvoice.ProductPrice", lang, font);
cellProductItem.BackgroundColor = BaseColor.LightGray;
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
//qty
cellProductItem = await GetPdfCellAsync("PDFInvoice.ProductQuantity", lang, font);
cellProductItem.BackgroundColor = BaseColor.LightGray;
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
//total
cellProductItem = await GetPdfCellAsync("PDFInvoice.ProductTotal", lang, font);
cellProductItem.BackgroundColor = BaseColor.LightGray;
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
var vendors = _vendorSettings.ShowVendorOnOrderDetailsPage ?
سلام
کد قابل اجرا در SQL Query:
DELETE Customer
FROM Customer
LEFT OUTER JOIN [Order] ON Customer.Id = [Order].CustomerId
WHERE ([Order].Id IS NULL) AND (Customer.Email IS NULL)
سلام
در ناپ کامرس پیش فرض وجود ندارد ولی در نسخه فروشگاهی پیشرفته ناپ شاپ وجود دارد.
این امکان بصورت پلاگین مجزا نیست و نیازمند خرید کل پکیج فروشگاهی ناپ شاپ است.
سلام
robots.custom.txt را به پوشه اصلی پروژه nopCommerce اضافه کنید و مسیرهای غیر مجاز را اضافه کنید که نیازی به دنبال کردن ندارند.
یا می توانید مسیرهای غیر مجاز خود را به سورس کد nopcommerce در اینجا اضافه کنید
@model VendorModel
@using Nop.Core.Domain.Seo
@inject Nop.Core.IWebHelper webHelper
@inject SeoSettings seoSettings
@using Nop.Services.Customers
@using Nop.Services.Vendors
@{
Layout = "_ColumnsTwo";
int vendorCustomerId = 0;
var iVendorService = Nop.Core.Infrastructure.EngineContext.Current.Resolve<IVendorService>();
var iCustomerSerivce = Nop.Core.Infrastructure.EngineContext.Current.Resolve<ICustomerService>();
var vendor = (await iVendorService.GetAllVendorsAsync()).Where(v => v.Name == Model.Name).FirstOrDefault();
if (vendor != null)
{
var customer = (await iCustomerSerivce.GetAllCustomersAsync()).Where(c => c.VendorId == vendor.Id).FirstOrDefault();
if (customer != null)
vendorCustomerId = customer.Id;
}
@if (vendorCustomerId != 0)
{
<a href="/sendpm/@vendorCustomerId">send message to this user</a>
}
نه این سورس کد است.
باید نسخه ساخته شده دایرکتوری Shipping.Fedex را در \Plugins قرار دهید
یا فایل Zip را با استفاده از تابع Upload Plugins در Admin آپلود کنید.
سلام.
آیا نسخه پلاگین برای v4.5 است؟
فایل plugins.json را در افزونه بررسی کنید.
باید"Supported Versions": [ "4.50" ] باشد.
اگر ورژن صحیح است، دکمه Reload list of Pluigns را امتحان کنید.
اگر جواب نداد، برنامه را Restart کنید.
سلام
شما سورس کد اصلی را تغییر نمی دهید
اما برای ایجاد پلاگین با استفاده از سورس کد به عنوان یک پروژه جداگانه، باید از ویژوال استودیو استفاده کنید
سپس راه حل را بسازید
سپس افزونه را نصب کنید
یا می توانید دکمه حذف را ایجاد کرده و از طریق ویجت در product box بارگذاری کنید. و آن دکمه را فقط در صورتی نمایش دهید که کاربر فعلی وارد شده فروشنده باشد و محصول از فروشنده دیگری نباشد.
سلام
شما نمی توانید آن را انجام دهید. شما باید Domain، SchemaMigration، BaseNameCompatibility خود را در داخل افزونه خود تعریف کنید. جدول جدیدی برای شما ایجاد می کند. با استفاده از فیلتر عمل می توانید داده های فرم اضافی را دریافت کرده و در جدول سفارشی خود قرار دهید. شما باید داده های سفارشی را از طریق مولفه view از طریق ویجت نشان دهید. روش دیگر می توانید از جدول ویژگی های عمومی برای ذخیره داده های سفارشی استفاده کنید.