friendsofsilverstripe / inheritage-by-sitetree
0.2.5
2018-04-20 10:18 UTC
Requires
- silverstripe/cms: ^3.0
- silverstripe/framework: ^3.0
Replaces
README
允许您从父页面继承任何属性(任何级别)。查看 使用示例 了解其工作方式。
功能
-
从直接或间接父页面加载信息。
-
这仅对 db 字段进行了测试。Has_one 或 has_many 尚未确认。
使用
以下示例展示了两个在信息架构中具有固定位置的页面类型的可能用例,它们使用继承将“颜色”字段传递到子着陆页。
<?php /** * In the SiteTree this page will be directly under the homepage. * * URL structure /landing */ class LandingPage extends Page { /** * @var array */ $db = [ 'Color' => 'Varchar', ]; } class LandingPage_Controller extends Page_Controller { /* ... */ }
<?php /** * In the SiteTree this page will be directly under the landing page. * * URL structure /landing/sublanding */ class SubLandingPage extends Page { /* ... */ } class SubLandingPage_Controller extends Page_Controller { /* ... */ }
在 SubLandingPage.ss 中,您现在可以这样做
<div>
<% cached 'color', $Top.ID, $Top.LastEdited %>
$GetFromParentPage(Color)
<% end_cached %>
</div>
以检索在父页面上设置的 Color 值。请确保您为任何调用应用了适当的缓存。
要求和安装
要求
- SilverStripe 框架和 CMS ^3.0
安装
-
运行以下命令安装包
# install the package composer require bringyourownideas/inheritage-by-sitetree; git add composer.json composer.lock; git commit -m 'MINOR: adding inheritage-by-sitetree';
-
设置您的扩展
这可以通过 yml 配置文件(例如 mysite/_config/config.yml)完成
Page: extensions: InheritageBySiteTreeExtension
或者 通过检查 InheritageBySiteTreeExtension.php 并将模块的“非扩展”版本添加到您的 Page.php 文件中。第二种方法性能更好。
-
运行 dev/build 加载扩展
# run dev/build to load extension php ./framework/cli-script.php dev/build
其他:未来想法/开发、问题,贡献,许可
此项目由 bring your own ideas Ltd. 支持。Bring Your Own Ideas Ltd. 帮助您将项目想法变为现实。