clyons-eis/silverstripe-metadataobject

为自定义 DataObjects 提供基本 MetaData;声明默认函数并在需要时重写

安装: 351

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 1

开放问题: 3

类型:silverstripe-module

dev-master 2015-04-07 20:00 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:04:24 UTC


README

##要求

  • Silverstripe 3.1+

##安装

  • 安装到 silverstripe 根目录
  • dev/build?flush=1

##介绍 MetaDataObject 允许您将基本 MetaData 应用到任何 DataObject,包括 MetaTitle、MetaDescription、og:title、og:description 和 og:image。可以声明默认函数以提供动态回退数据。还提供了每个字段的 CMS 界面,在“Meta”标签页中允许重写。如果设置了字段数据,则始终优先使用该数据。

##用法 将扩展应用到您的自定义 DataObject 类。

CustomDataObject:
  extensions:
    - 'MetaDataObject'

可选 - 为每个装饰的自定义 DataObject 上的每个可用元属性提供回退方法

	public function getDefaultMetaTitle()
	{
		return ...;
	}
	public function getDefaultOGTitle()
	{
		return ...;
	}
	public function getDefaultMetaDescription()
	{
		return ...;
	}
	public function getDefaultOGDescription()
	{
		return ...;
	}
	public function getDefaultOGImage()
	{
		return ...;
	}

在您的控制器操作中,通过调用自定义类中所需对象的 DataObjectMeta 来检索元数据

	public function view() {
		$item = $this->getItem();
        ...
		$meta = $item->DataObjectMeta();
		return array_merge(
			$meta,
			array(
               'OtherData' => $OtherData
			)
		);
	}

您的模板应设置以单独显示字段,而不是如本例所示的 SS/Simple 合并的 MetaTags。建议提供标题和 og:title 标签的回退。

    <title><% if $MetaTitle %>$MetaTitle<% else %>$Title<% end_if %> - $SiteConfig.Title</title>
    <meta name="description" content="$MetaDescription.ATT" />
    <meta property="og:site_name" content="$SiteConfig.Title.ATT" />
    <meta property="og:type" content="website" />
    <% if $OGTitle %><meta property="og:title" content="$OGTitle.ATT" /><% else %><meta property="og:title" content="$Title.ATT" /><% end_if %>
    <meta property="og:description" content="$OGDescription.ATT" />
    <meta property="og:url" content="$AbsoluteLink.ATT" />
	<% if $OGImage %><meta property="og:image" content="<% with $OGImage.SetSize(500,500) %>$AbsoluteURL.ATT<% end_with %>" /><% end_if %>

##关于 此模块的目标是轻量级且灵活,适用于各种控制器路由情况。有意不包含控制器操作集成。要查看将 DataObjects 作为页面处理的更全面功能的模块,请参阅 https://github.com/arambalakjian/DataObject-as-Page

##贡献 欢迎通过拉取请求和问题使此模块更加灵活和强大。