silverstripe / sitetreeimporter
将缩进格式的纯文本文件导入到 SilverStripe 站点树中
Requires
- silverstripe/framework: 2.4,~3.0
This package is auto-updated.
Last update: 2024-07-10 21:54:21 UTC
README
站点树导入模块
要求
- 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 模块。