friendsofsilverstripe/inheritage-by-sitetree

此包已被 废弃 且不再维护。作者建议使用 https://github.com/bringyourownideas/inheritage-by-sitetree 包代替。

允许您从父页面继承信息

0.2.5 2018-04-20 10:18 UTC

This package is auto-updated.

Last update: 2023-04-05 05:22:37 UTC


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

安装

  1. 运行以下命令安装包

    # install the package
    composer require bringyourownideas/inheritage-by-sitetree;
    git add composer.json composer.lock;
    git commit -m 'MINOR: adding inheritage-by-sitetree';
    
  2. 设置您的扩展

    这可以通过 yml 配置文件(例如 mysite/_config/config.yml)完成

    Page:
      extensions:
        InheritageBySiteTreeExtension

    或者 通过检查 InheritageBySiteTreeExtension.php 并将模块的“非扩展”版本添加到您的 Page.php 文件中。第二种方法性能更好。

  3. 运行 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. 帮助您将项目想法变为现实。

bring your own ideas