对于Sitecore“媒体库”中的项目:
MediaItem mediaItem = Sitecore.Context.Database.GetItem("{E47591D0-48D2-4543-80E4-3836B02AA1A8}");
以上项目是图片“ Tulips.jpg”。
如何从后面的代码检查上面的内容实际上是图片/图像?
一旦有了MediaItem
对象,就可以这样做:
MediaItem mediaItem = ...
bool isPicture = mediaItem.MimeType.StartsWith("image/");
这是有效的,因为图像的MIME types是这样形成的:image/...
。例如:
Dmytro Shevchenko建议的替代方法是使用Sitecore的API检查Template
的MediaItem
,其中包含与进行字符串比较相对的图像。
[当图像上传到MediaLibrary
时,将存储versioned
或unversioned
模板以及Image
或jpeg
。
因此要检查mediaItem
是否是图像,您可以执行以下操作;
public ID ImageUnversioned = new ID("{F1828A2C-7E5D-4BBD-98CA-320474871548}");
public ID JpegUnversioned = new ID("{DAF085E8-602E-43A6-8299-038FF171349F}");
public ID ImageVersioned = new ID("{C97BA923-8009-4858-BDD5-D8BE5FCCECF7}");
public ID JpegVersioned = new ID("{EB3FB96C-D56B-4AC9-97F8-F07B24BB9BF7}");
public bool IsImage(Item mediaItem)
{
return mediaItem.TemplateID.Equals(ImageUnversioned)
|| mediaItem.TemplateID.Equals(JpegUnversioned)
|| mediaItem.TemplateID.Equals(ImageVersioned)
|| mediaItem.TemplateID.Equals(JpegVersioned);
}
然后按如下所示简单地传递mediaItem
;
bool isImageOrPicture = IsImage(mediaItem);
Dmytro Shevchenko非常适合递归检查项目的所有基本模板,因为Jpeg
模板是从Image
模板衍生而来的。这样实现:
using Sitecore;
using Sitecore.Data.Items;
...
public static bool IsImage(Item item)
{
if (item.TemplateID == TemplateIDs.VersionedImage
|| item.TemplateID == TemplateIDs.UnversionedImage)
{
return true;
}
foreach (TemplateItem baseTemplate in item.Template.BaseTemplates)
{
if (IsImage(baseTemplate))
{
return true;
}
}
return false;
}
Sitecore在Sitecore Item类IsMediaItem]上有一个助手
Sitecore.Context.Item.Paths.IsMediaItem
此代码检查项目是否具有包含“ sitecore / Media library”的路径
您可以在将项目转换为媒体项目之前对其进行检查。