2017-03-06 4 views
1

したがって、各メニューアイテムにカスタムアイコンを追加しようとしていますが、タブを使用して最も簡単なメニューを使用し、各ページに「アイコン」という名前の添付ファイルフィールドを追加します。タブメニューの添付ファイルフィールドプロパティの取得

アイコンの添付フィールドのURLを呼び出す正しい方法は何ですか?

Here's it's最も簡単でビュー:

<ul class="b2b-menu"> 
      {% for tab in data.home._children %} 
       <li class="move-link"> 
        <a> 
        <img alt="Page Icon" src="{{ apos.attachments.url(attachment) }}" width="48" height="48" /> 
        <span>{{ tab.title }}</span> 
        </a> 
       </li> 
      {% endfor %} 
     </ul> 

Here's index.js:

module.exports = { 
     beforeConstruct: function(self, options) { 
      options.addFields = [{ 
        name: 'metaDescription', 
        label: 'Meta Description', 
        type: 'string' 
       }, 
       { 
        name: 'icon', 
        label: 'Icon', 
        type: 'attachment' 
       }] 
      } 
     }; 

私はtab.iconオブジェクトとして存在見ることができます。しかし、私はURLを取得する方法を見つけることができません。もののようなものではないようです。tab.icon._urlなど。

答えて

2

あなたはこのようにそれを行うことができます。

{% if tab.icon %} 
    <img src="{{ apos.attachments.url(tab.icon, { size: 'one-sixth' }) }}" /> 
{% endif %} 

ここtab変数は、すでにそれを紹介し、あなたのforループ、内部でこのコードを貼り付けている前提としています。

補助機能は添付ファイルとオプションオブジェクトを取り、URLを返します。これは、ローカルストレージ、S3などでuploadfsを使用しているかどうかに関係なく正しくなります。

画像の場合、sizeオプションを指定しないと、fullサイズになります。これは、帯域幅の問題を引き起こし、アポストロフィが合理的に拡大縮小されたサイズを提供しないと信じ込ませることにユーザーを混乱させる可能性があるオリジナルの偶発的な使用に対する保護です。オリジナルを使用するには(推奨しません)、sizeoriginalに設定してください。

他の種類の添付ファイル(たとえばapostrophe-files)では、ファイルに直接リンクすることが賢明な選択肢であるため、サイズオプションは必要ありません。

+0

このコードスニペットは歓迎されていますが、いくつかの助けを提供するかもしれませんが、* how *と* why * thisの[説明があれば大幅に改善される](// meta.stackexchange.com/q/114762)問題を解決します。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

+0

説明:タブそれは、オブジェクトを参照するforループの名前であり、アイコンはレンダリングする選択されたフィールドです。 – diramazioni

+0

私の最初の答えはあまりにも "タダ"でした。詳細が追加されました。 –

関連する問題