Добавить пункт меню CMS с полями в Silverstripe 3.6 - PullRequest
0 голосов
/ 25 мая 2018

Еще новичок в Сильверстрипе.Я экспериментирую с CMS, и я хотел бы создать новое меню CMS с текстовыми полями в нем.Мне удалось добавить пункт меню CMS с полем сетки в нем для добавления объектов данных, но мне нужно, чтобы текстовые поля были непосредственно внутри пункта меню CMS без создания объекта данных (аналогично меню «Настройки», как показано на рисунке ниже)

Может ли кто-нибудь подсказать мне, что мне нужно расширить и как это настроить?Большое спасибо заранее.

1 Ответ

0 голосов
/ 26 мая 2018

Вы можете расширить раздел настроек.В следующем примере добавляется вкладка с именем Социальные сети в разделе настроек и 2 поля FacebookURL и TwitterURL .Вы можете изменить это на любые поля / вкладки, которые вы хотите.

** mysite / _config / extensions.yml

---
Name: mysiteextensions
After: 'framework/*','cms/*'
---

SiteConfig:
  extensions:
    - SiteConfigDecorator

mysite / code / extensions / SiteConfigDecorator

<?php
class SiteConfigDecorator extends DataExtension {

    private static $db = array(
        'FacebookURL' => 'Varchar(200)',
        'TwitterURL' => 'Varchar(200)'
    );

    private static $has_one = array(
        'FooterQuoteButtonPage' => 'SiteTree'
    );

    public function updateCMSFields(FieldList $fields) {
        $fields->addFieldToTab('Root.SocialMedia', TextField::create('FacebookURL', 'Facebook URL'));
        $fields->addFieldToTab('Root.SocialMedia', TextField::create('TwitterURL', 'Twitter URL'));

    }

    function __construct() {
        parent::__construct();
    }

}

Для доступа к этим полям в шаблонах вы используете $ SiteConfig.FIELDNAME .В этом случае это будет $ SiteConfig.FacebookURL и $ SiteConfig.TwitterURL

...