1

singletonセットを使用してページタイプに画像を追加しようとしていますslideshow widgetType

インターフェイスは正常に動作しています (画像をアップロードでき、アップロードを設定変数に制限します) が、テンプレート内のオブジェクトにアクセスできません

ページ テンプレートで以下のスクリプトを使用してページ オブジェクトをログに記録しています。スライドショー ウィジェットだけでなく、他のすべてのカスタム フィールドは正常に動作します。

var data = {{ page | json }};
console.log(data);

これがapp.jsに設定されているものです

project: {
  extend: 'apostrophe-fancy-page',
  name: 'project',
  label: 'Project',
  addFields: [
    {
      name: 'thumb',
      label: 'Thumbnail',
      type: 'singleton',
      widgetType: 'slideshow',
      options: {
        limit: 1
      }
    }
  ]
}

何かアドバイス?

4

1 に答える 1

0

うーん。指定はありませんが、関連ページ情報としてアクセスできる別のページ (page.ancestors や page.children など) のテンプレートからサムネイルにアクセスしようとしているのではないかと思います。シングルトンがページ自体のテンプレートでレンダリングされている場合、これで問題はありません。

関連ページ情報に関する問題は、パフォーマンス上の理由から、アポストロフィがそれらの配列に含める情報の量を制限することです。

ただし、より多くの情報が必要であることを指定できます。これは、プロジェクトの 1 つのファイルのpagesプロパティの例です。app.js

pages: {
  // other config like page types goes here, then...
  ancestorOptions: {
    children: true,
    areas: [ 'thumbnail' ]
  },
  descendantOptions: {
    depth: 2,
    areas: [ 'thumbnail' ]
  }
}

ここでは、次を有効にしています。

  • アコーディオン nav.childrenの の各祖先の配列を含めますpage.ancestors
  • thumbnail祖先ごとに呼び出される領域を含める
  • thumbnail現在のページの各子に対して呼び出される領域を含めます ( page.children)
  • page.children[0].childrenドロップダウン ナビゲーションの孫も含める

より多くのデータをロードすると、支払う代償はもう少し多くの時間です。これは、多くのデータが必要であるが、何千ものページをフェッチして、さらに多くのデータをフェッチしてすべてのウィジェットを「ハイドレート」したくない場合に適した妥協のセットアップです。

私が間違っていて、ページ自体のページ テンプレートでこれを行っていて、それでも機能しない場合は、いくつかの例を提供してください。それらを確認できます。

(私は Apostrophe の主任開発者の 1 人です。この質問をすぐに見られなかったことをお詫びします。StackOverflow はそのための適切な場所であり、2.0 安定版がリリースされたので、今後さらに詳しく監視します。)

于 2016-09-10T14:59:17.903 に答える