2

Umbraco 5.1 API を使用すると、次のコードを使用して新しいコンテンツ タイプを作成できます (コンテンツ タブの下にコンテンツ ノードを作成するため)。

 // create content type
var typeBuilder = context.Hive.Cms().NewContentType("testType", "Test Type")
            .Define("value", "contentPicker", "Content")
            .Commit();

// create content node
var packageNode = context.Hive.Cms().NewRevision(packageNodeName, packageNodeName, "testType");
        packageNode.SetUploadedFile("value", postedFile);            
        packageNode.Publish();
        packageNode.Commit();

しかし、流暢な API を使用してメディア ノードを作成する方法はありますか? メディア タブ ツリーにカスタム タイプの新しいカスタム メディア ノードを作成する必要があります。以下のアプローチを試しましたが、どれもうまくいかないようです

1) context.Hive.Cms().NewRevision();
2) context.Hive.Cms<IMediaStore>().NewRevision();
3) builderStep.NewRevision<Media, IMediaStore>();
4) builderStep.NewRevision<TypedEntity, IMediaStore>();
4

1 に答える 1

0

これは機能しますが、このタイプを使用してメディアを手動で作成しようとすると、「名前を指定する必要があります」というエラーがスローされるため、結果のメディア タイプは完全ではありません。

CmsBuilderStep<IMediaStore> builderStep = new CmsBuilderStep<IMediaStore>(context.Hive);
var typeBuilder = builderStep.NewMediaType<EntitySchema, IMediaStore>("testType")                   
               .Define("package", "uploader", "General Properties")
               .Commit();

最後に、メディア タイプを手動で作成し、以下のコードを使用してコード経由でメディア アイテムを作成することにしました。

        // Creating a new Media item using the scorm package zip file.
        var packageNode = context.Hive.Cms<IContentStore>().NewRevision(packageNodeName, packageNodeName, "testType")
        .SetUploadedFile("package", postedFile)

        // set parent to media root folder - this is what makes it come under media tree
        .SetParent(FixedHiveIds.MediaVirtualRoot)
        .Publish()
        .Commit();
于 2012-05-09T09:05:01.800 に答える