0

これは(非常に)ばかげた質問のように聞こえますが、オーチャードのコンテンツタイプに追加したばかりのテキストフィールドにアクセスする方法が見つかりません。コンテンツパーツに追加されたときにフィールドにアクセスする方法は知っていますが、コンテンツタイプ自体に直接追加されたときはわかりません。

コンテンツタイプはProductと呼ばれ、包含可能であり、リストに表示されています。通常の部分に加えて、「Image」という名前のMediaPickerフィールドと「About」という名前のHTMLフレーバーのTextフィールドの2つのカスタムフィールドを追加しました。それを含むリストをレンダリングするために使用しているコードは次のとおりです。

@using Orchard.DisplayManagement.Shapes;
@{
    var list = Model.List;
    var items = list.Items;
    var count = items.Count;
    var listTag = Tag(list, "ul");
    listTag.AddCssClass("historia");
    var index = 0;
}

<div class="produtos">
    @foreach (var item in items)
    {
        var itemTag = Tag(item, "div");
        itemTag.AddCssClass("item-" + index);
        @itemTag.StartElement;
        <h3>@item.ContentItem.TitlePart.Title</h3>
        <img src="@Href(item.Image.Url)" 
            class="@item.Image.Class"
            alt="@item.Image.AlternateText" 
            width="@item.Image.Width" 
            height="@item.Image.Height" 
            style="@item.Image.Style" />
        <p>@item.About.Text</p>
        @itemTag.EndElement;
        ++index;
    }
</div>
@Display(Model.List)
@Display(Model.Pager)

問題は、@ item.ImageがImageフィールドを生成せず、@item.Aboutが「About」テキストフィールドを生成しないことです。テキストフィールドにその値にアクセスするための.Textプロパティがあるかどうかさえわかりませんが、結局のところ、HTMLフレーバーを持つことができます...これがどのように行われるかを知るのに役立つソースコードの場所さえわかりません終わらせる!

@ item.ContentFields.About.Textや@item.ContentField.About.Text、@ item.Fields [0]、@ item.ContentItem.About.Text、@item.ContentItem.ContentFieldsなどのさまざまなアプローチを試しました。 About.Text(最後の2つは、ContentItemにこれらのフィールドがないことを通知する例外をスローします...)

コンテンツ部分にフィールドを追加し、この部分をコンテンツタイプに追加した場合、これを行うことができたはずです:@ item.ContentItem.TheNameOfTheContentPart.Image.Url .. ..

オーチャードで最も簡単なことをする方法がわからないので、私はますますイライラしています。この種の質問に対する答えを見つけるためにソースコードのどこを見ればよいかを知ることができる、そのエウレカの瞬間が必要です。

4

2 に答える 2

5

フィールドは常にパーツの下にあります。管理者からフィールドを追加すると、タイプと同じ名前のパーツが自動的に作成されます。

http://orchard.codeplex.com/discussions/396280

コンテンツタイプにフィールドを追加することはできません。常にコンテンツパーツに追加します。その部分がタイプと同じ名前である場合、それは素晴らしい魔法のことが起こるということです。

http://orchard.codeplex.com/discussions/397426

于 2012-10-13T17:51:08.780 に答える
0

値を置き換えて運を試さないでください。時間が無駄になり、実際の結果がほとんどまたはまったくなくなります。推奨される方法は、シェイプトレースを使用してこれを行うことです。インターネットでOrchardShapeTracingを検索すると、準備が整います。:)

于 2012-10-09T07:31:51.093 に答える