3

別のページに使用するテンプレートでメザニン ページ ギャラリーのコンテンツにアクセスできますか?

たとえば、Django Admin で「メディア ライブラリ」に追加した画像のコレクションを表示するギャラリー ページがあります。ページは正常に機能し、ページ用に選択したすべての画像が表示されます。

ギャラリー ページ テンプレートには、次のような画像を表示するためのコードが含まれています。

{% with page.gallery.images.all as images %}
{% for image in images %}
<li>
    <a class="thumbnail" rel="#image-{{ image.id }}" title="{{ image.description }}" href="{{ MEDIA_URL }}{{ image.file }}">
        <img class="image-overlay-thumb" src="{{ MEDIA_URL }}{% thumbnail image.file 75 75 %}">
    </a>
    <div id="image-{{ image.id }}" class="image-overlay" style="display:none;">
        <a href="#" class="image-overlay-prev">&larr;</a>
        <a href="#" class="image-overlay-next">&rarr;</a>
        <img class="image-overlay-full" src="{{ MEDIA_URL }}{% thumbnail image.file 0 600 %}"><br>
        <p>{{ image.description }}<br>{{ forloop.counter }} / {{ images|length }}</p>
    </div>
</li>
{% endfor %}
{% endwith %}

ただし、別のページでは、jQuery スライドショーを実行するために使用するリスト内の同じ順序で、同じ画像を使用したいと考えています。

「{% with page.gallery.images.all as images %}」のようなテンプレート タグを使用して、必要なギャラリー画像がある特定のページを指すようにする方法はありますか?

あなたが提供できる洞察を前もって感謝します。

4

2 に答える 2

3

次のようなコンテキスト プロセッサを作成する必要があります。

def all_pages(request):
    from mezzanine.galleries.models import Gallery
    galleries = Gallery.objects.all()
    return {'pages': galleries}

次に、TEMPLATE_CONTEXT_PROCESSORS の settings.py に追加します。

TEMPLATE_CONTEXT_PROCESSORS += (
    'path.to.our.just.created.context_processor.all_pages',
)

次にテンプレートで:

{% load mezzanine_tags %}

<ul class="thumbnails gallery">
{% for page in pages %}
{% with page.gallery.images.all as images %}
{% for image in images %}
<li>
    <a class="thumbnail" rel="#image-{{ image.id }}" title="{{ image.description }}" href="{{ MEDIA_URL }}{{ image.file }}">
        <img class="image-overlay-thumb" src="{{ MEDIA_URL }}{% thumbnail image.file 75 75 %}">
    </a>
    <div id="image-{{ image.id }}" class="image-overlay" style="display:none;">
        <a href="#" class="image-overlay-prev">&larr;</a>
        <a href="#" class="image-overlay-next">&rarr;</a>
        <img class="image-overlay-full" src="{{ MEDIA_URL }}{% thumbnail image.file 0 600 %}"><br>
        <p>{{ image.description }}<br>{{ forloop.counter }} / {{ images|length }}</p>
    </div>
</li>
{% endfor %}
{% endwith %}
{% endfor %}
</ul>

私はメザニンにあまり詳しくありませんが、動作するはずです。コンテキストをビューまたは他の方法で渡し、操作することができます。

于 2013-05-16T05:13:21.447 に答える
2

次のように templatetag を使用することもできます。

@register.simple_tag
def show_gallery_by_slug(slug):
    from mezzanine.galleries.models import Gallery
    gallery = Gallery.objects.filter(slug=slug)
    template = get_template("pages/images.html")
    c = Context({"gallery": gallery})
    return template.render(c)

そしてテンプレートで

{% load yourtags %}

{% show_gallery_by_slug "galleryslugishere" %}

ギャラリーの画像用に表示するテンプレートも作成する必要があります..

于 2013-05-17T06:27:42.240 に答える