GridFieldを使用して、has_many
またはmany_many
を管理し、多数の画像を一度にアップロードするためのBulkEditingTools
の助けを借りて利用できます。私は、通常、他の情報と画像の関係を保持余分のDataObject作る
(翻訳字幕などの著作権情報を...)のような:
<?php
class GalleryPic extends DataObject
{
private static $db = array(
'Title' => 'Text',
'Description' => 'Text',
'Copyright' => 'Text',
'SortOrder' => 'Int'
);
private static $has_one = array(
'Attachment' => 'Image',
'ResourcePage' => 'Page'
);
public function getCMSFields()
{
$fields = new FieldList(
TextField::create('Title', 'Title'),
TextareaField::create('Description', 'Desc.'),
TextField::create('Copyright', 'Copyright/Source'),
$imageField = UploadField::create('Attachment')
);
$imageField->setAllowedFileCategories('image');
$imageField->setAllowedMaxFileNumber(1);
return $fields;
}
}
それから私は、任意のページへhas_many
プラグDataExtensionを持っています型やデータオブジェクト:
<?php
class PageGallery extends DataExtension
{
private static $has_many = array(
'Gallery' => 'GalleryPic'
);
function updateCMSFields(FieldList $fields)
{
$conf = GridFieldConfig_RecordEditor::create(10);
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
$conf->addComponent(new GridFieldGalleryTheme('Attachment'));
$conf->addComponent(new GridFieldBulkUpload());
//set upload folder if folderperroot extension is installed...
if ($this->owner->hasMethod('getRootFolderName')) {
$conf->getComponentByType('GridFieldBulkUpload')->setUfSetup('setFolderName', $this->owner->getRootFolderName());
}
$fields->addFieldToTab("Root.Bilder", Gridfield::create('Gallery', 'Gallery', $this->owner->Gallery(), $conf));
return $fields;
}
(例えばマイページと呼ばれるクラスに)設定YML APIを使用して、あなたのページにこれを追加します。
MyPage:
extensions:
- 'PageGallery'
そして、あなたはギャラリーのグリッドフィールドをCMSの別々のタブに入れます。
テンプレートの$Gallery
リレーションをループする方法を知っていると思います。
このモジュールは、上記の例の作業を取得するために作曲を使用してインストールする必要があります:あなたはbulkuploaderでGridfieldを使用することができます
出典
2016-07-09 07:02:32
wmk
内線番号https://github.com/colymba/GridFieldBulkEditingTools。ギャラリーのhttps://github.com/colymba/GridFieldGalleryThemeも大好きです。 – wmk
そのGridFieldにhas_manyまたはmany_many(画像)を追加できますか?私はリフレッシュ後にいつもcmsに空白のページを持っています。 – StefGuev