2012-10-18 19 views
11

Chcę zmienić rozmiar moich statycznych plików z miniaturką sorl ale robi to działaJak miniaturować pliki statyczne?

Oto moje kody

{% if not new.photo %} 

{% with path="{{STATIC_URL}}/images/empty-news.jpg" %} 
{% thumbnail path "80x80" crop="center" as im %} 
<a href="#" class="image"><img alt="" src="{{im.url}}" class="frame2"></a> 
{% endthumbnail %} 
{% endwith %} 

{% else %} 
{% thumbnail new.photo "80x80" crop="center" as im %} 
<a href="{% url news_detail new.slug %}" class="image"> 
<img alt="" src="{{im.url}}" class="frame2"></a> 
{% endthumbnail %} 
{% endif %} 

Jeśli mam zdjęcie to pokazuje obraz ale gdy nie mam obrazu nie mogę użyć domyślnego obrazu, ponieważ miniatura nie działa

+0

Czy jesteś pewien, że 'ścieżka' zawiera poprawny link do obrazu? –

+0

Oto powody, dla których prostota miniaturek ogranicza się do 'MEDIA_ROOT' https://github.com/SmileyChris/easy-thumbnails/issues/210 –

Odpowiedz

3

Szczerze mówiąc ... to wygląda dobrze; co oznacza, że ​​prawdopodobnie w twoim setupie jest coś nie tak.

Możliwe błędne ustawienia: Jak definiujesz STATIC_URL w swoich ustawieniach? Jaka jest wartość DEBUG (upewnij się, że jest ustawiona na True, jeśli rozwijasz się lokalnie)? Jak zauważyła @goliney, twoja ścieżka może być popsuta. Spróbuj wyciągnąć bloki miniatur i ustaw src obrazu na {{ STATIC_URL }}/images/empty-news.jpg i sprawdź, czy działa przed próbą zrobienia miniaturek.

Zapomniałeś załadować miniaturki: Upewnij się umieścić {% load thumbnail %} w szablonie przed jakichkolwiek odniesień do bloku {% thumbnail %}.

+1

mój statyczny adres URL i ustawienia miniatur są w porządku. Oni pracują.Mogę miniaturować inne obrazy, które są dinamiczne, ale jeśli są statyczne, to nie działają. Również mój statyczny URL jest zdefiniowany poprawnie. – aysekucuk

2

Sam pracuję nad tym samym problemem. Wygląda na to, że jeśli chcesz używać STATIC_URL w swoich szablonach, musisz upewnić się, że ścieżka przekazana do znacznika miniaturek jest absolutna (traktując ścieżkę tak, jakby była zewnętrzna).

Podobno ścieżki względne działają dla obrazów w ramach MEDIA_ROOT, pozornie zaprojektowanych dla obrazów pochodzących z modeli.

W ramach testu spróbuj wpisać pełną ścieżkę http.

Patrz: http://sorl-thumbnail.readthedocs.org/en/latest/examples.html

3

Poniższe zadziała

{% with STATIC_URL|add:"/images/empty-news.jpg" as path %} 
    {% thumbnail path "80x80" crop="center" as im %} 
     <a href="#" class="image"> 
      <img alt="" src="{{im.url}}" class="frame2"></a> 
    {% endthumbnail %} 
{% endwith %} 
+0

Nie działa to dla mnie, ponieważ sorl nie zaakceptowałby względnego adresu URL. Dostosowałem to, aby zaakceptować absolutny URL (zobacz moją odpowiedź w innym miejscu na tej stronie). – seddonym

7

Ugly opcję, że pracował dla mnie, przechodząc na ścieżce, które normalnie przechodzą do static szablonu tagu (zauważ, że to zakłada, że http protokół, więc można go poprawić):

{% with 'http://'|add:request.get_host|add:STATIC_URL|add:image_path as path %} 
    {% thumbnail path "720x306" crop="center" as im %} 
     <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> 
    {% endthumbnail %} 
{% endwith %} 

Działa to przez budowanie absolutnej ścieżki do obraz statyczny.

0

Aby pokryć trochę bardziej uglyness Zrobiłem filtr niestandardowy, wykorzystując stałą w settings.py SITE_URL:

settings.py

[...] 
SITE_URL = "google.it" 
[...] 

templatetags/staticthumb.py

from django.conf import settings 

from django import template 

register = template.Library() 

@register.filter() 
def static_url(value): 
    return ''.join(["http://", settings.SITE_URL, settings.STATIC_URL, value]) 

Następnie użyć to w szablonie:

{% load thumbnail staticthumb %} 

{% with image_path|static_url as path %} 
    {% thumbnail path "720x306" crop="center" as im %} 
     <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> 
    {% endthumbnail %} 
{% endwith %} 
Powiązane problemy