silverstripe/sitetreeimporter

此包已被 废弃 并不再维护。作者建议使用 silverstripe/sitetreeimporter 包。
此包的最新版本(1.0.0)没有可用的许可证信息。

将缩进格式的纯文本文件导入到 SilverStripe 站点树中

1.0.0 2013-03-29 09:22 UTC

This package is auto-updated.

Last update: 2024-07-10 21:54:21 UTC


README

站点树导入模块

Build Status

要求

  • SilverStripe 4 或更高版本

安装

无需安装。

使用方法

根据下面出现的表单指示创建一个分页的文件。确保您使用的是制表符,而不是空格。访问 http://localhost/your-site-name/SiteTreeImporter?flush=1。在文件字段中选择您的分页文件,并根据需要勾选选项框

清除所有现有内容? - 这将在运行导入程序之前删除您网站上的所有内容。请谨慎使用!如果您不勾选此选项,则页面将添加到现有网站。

导入后发布所有内容? - 这将发布导入程序创建的每个页面。如果您不勾选此选项,则页面将仅保留为草稿。

格式

站点树导入模块允许您导入以下格式的分页文件,并将其作为站点树加载到您的 CMS 中。

Home
About
	Staff
		Sam
		Sig
Products
	Laptops
		Macbook
		Macbook Pro
	Phones
		iPhone

您可以选择在行的最后部分包含 JSON 编码的元数据,这将自动保存到 Page 对象的属性中。这可以用来确定 URL 路径或设置自定义标题。

Home
	About {"URLSegment": "about-us", "MetaDescription": "About our company"}
	Contact {"URLSegment": "contact-us"}

如何使用

重定向 URL

通常需要将现有的树导入到映射到新网站上不同 URL 的 URL。虽然您可以手动将它们分配给基于 .htaccess 的重定向,但我们发现将旧 URL 直接存储在 Page 对象中,并使用 SilverStripe 的路由来处理重定向很有用。

在此示例中,我们将使用 "redirected urls" 模块,它基于名为 RedirectedURL 的新数据类型进行路由。为了创建它,我们在 Page 类中添加了一个自定义设置器,如果导入的 JSON 数据中存在名为 LegacyURL 的键,则会自动调用它。

class Page extends SiteTree {
	public function setLegacyURL($url) {
		$url = Director::makeRelative($url);
		$urlBase = parse_url($url, PHP_URL_PATH);
		$urlQuerystring = parse_url($url, PHP_URL_QUERY);

		$urlObj = RedirectedURL::get()->filter(array(
			'FromBase' => $urlBase,
			'FromQuerystring' => $urlQuerystring
		))->First();
		if(!$urlObj) {
			 $urlObj = new RedirectedURL();
		}
		$urlObj->FromBase = $urlBase;
		$urlObj->FromQuerystring = $urlQuerystring;

		if(!$this->URLSegment) {
			$this->URLSegment = $this->generateURLSegment($this->Title);
		}
		$urlObj->To = $this->RelativeLink();

		$urlObj->write();
	}
}

现在您可以导入以下数据的树

Home
	About {"LegacyURL": "/old-about-location"}
	Contact {"LegacyURL": "/old-contact-location"}

相关

有关更复杂的导入器,该导入器基于爬取现有的 HTML 页面并使用 XPATH 提取内容,请参阅 static site connector 模块