Umbraco: اضافه کردن رشته های پرس و جو سفارشی برای GetCropUrl()

من باید از Imgix برای ارائه تصاویر از Umbraco استفاده کنم. بسیاری از پارامترهای خارج از جعبه با اجرای فعلی Umbraco v13 (ImageSharp) عالی کار می کردند، مانند width
و height
، اما حالت برش کاملاً وجود نداشت.
به اندازه کافی ساده است، فقط اضافه کنید fit=crop
به رشته پرس و جو اما چگونه آن را به عنوان یک پارامتر پیش فرض به رشته کوئری تولید شده از GetCropUrl() اضافه کنیم؟ مطمئنا شما می توانید با استفاده از آن تابع پارامترهای اختیاری اضافه کنید، اما اگر یک سایت از قبل موجود دارید، انجام آن و تغییر آن در همه جا امکان پذیر نیست.
راه حل من این بود که پیاده سازی IImageUrlGenerator، ImageSharpImageUrlGenerator را عوض کنم.
با گرفتن یک کپی از آن و قرار دادن آن در پروژه خود شروع کنید، سپس مقدار رشته کوئری را تغییر دهید. مانند:
using System.Globalization;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Web;
using SixLabors.ImageSharp.Web.Middleware;
using SixLabors.ImageSharp.Web.Processors;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Media;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Imaging.ImageSharp.ImageProcessors;
using static Umbraco.Cms.Core.Models.ImageUrlGenerationOptions;
namespace Your.Namespace
{
public class CustomImageSharpImageUrlGenerator : IImageUrlGenerator
{
... the rest of the original class implementation here...
///
public string? GetImageUrl(ImageUrlGenerationOptions? options)
{
// ... original function definition here
// Add a custom query string
queryString.Add("fit", "crop");
return QueryHelpers.AddQueryString(options.ImageUrl, queryString);
}
}
}
و اکنون باید پیاده سازی فعلی را با پیاده سازی خود جایگزین کنیم. این آهنگ به عنوان تک آهنگ در آهنگساز Umbraco ثبت شده است، بنابراین بیایید آن را در آهنگساز خودمان مرتب کنیم:
public class ImagingComposer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.Services.Replace(
ServiceDescriptor.Singleton()
);
}
}
و بس! از قسمت جلویی بازدید کنید و جدید خود را خواهید دید مناسب param، مانند این:
https://localhost:44832/media/c0klecps/image.jpeg?width=1500&height=1100&v=1db5078d578e850&fit=crop&format=webp
کد نویسی مبارک!