2011-07-16 6 views
6

Mam następujący ciekły znaczników:Daj cieczowe matrycy <img> klasę w lokomotywie

{{ 'image.jpg' | theme_image_tag }} 

i renderuje jak,

<img src="/site.com/site/3424242/image.jpg" /> 

Jak dodać klasę lub cokolwiek opcję do niego? Chcę, aby brzmiał on następująco:

<img src="/site.com/site/3424242/image.jpg" class="thumbnail" /> 

Używam CMS Locomotive i cieczy, która z nim jest.

Odpowiedz

3

Chociaż the docs nie robią to jasne, można dodać klas do image_tag lub theme_image_tag filtrów, takich jak ten:

{{ "image.png" | image_tag: "class:image" }} 

Bardziej ogólnie, można dodać dowolne atrybuty HTML. Ciecz kod tak ...

{{ "image.png" | image_tag: "id:foo", "some_custom_attr:bar" }} 

będzie produkować HTML tak:

<img src="image.png" id="foo" some_custom_attr="bar"> 
7

W większości kontroli, należy rozważyć użycie theme_image_url zamiast theme_image_tag. Oto bardziej szczegółowy przykład, który powinien Ci się podobać.

<img src="{{ 'image.jpg' | theme_image_url }}" class="thumbnail" />

2

Jeśli chcesz dostosować płynu, można rozważyć edycję pliku html.rb zlokalizowany w lib/lokomotywy/ciecz/Filtry/html.rb.

def my_custom_tag (input,*args) 
     "<img src=\"#{theme_image_url(input)}\" class=\"#{args.first}\" />" 
    end 

Można nawet edytować aktualny filtr theme_image_tag.

1

Różnica między image_tag i theme_image_tag to taht image_tag da ci adres URL z danych, które przesyłasz do backendu, a theme_image_tag to ten, który dostaniesz z tematu.

oba przyjmują parametry.

{{ '/public/images/exemple.jpg' | theme_image_tag:'class: c1,c2'}} 

{% for blog_post in contents.blog_posts%} 
{{ blog_post.image.url | image_tag, 'alt:my beautyfull image', 'id:exemple'}} 
{% endfor %} 

okrzyki, Horion Grégory

0

Filtry wyjściowe biegnie od lewej do prawej, więc można też to zrobić:

{{ 'image.jpg' | theme_image_tag | replace_first' />',' class="thumbnail" />' }} 

Lokomotywa CMS może posiadać swoje własne filtry, ale kod o powinien działać uniwersalnie.

+0

To wydaje niepotrzebnie hacky gdy istnieją czyste rozwiązania dla tego problemu dokładnie zbudowany w ciekłym, jak opisane przez innych odpowiedzi tutaj. Zależy to również od 'image_tag' i podobnych filtrów generujących tag, który ma'/'przed'> '(niewymagane w HTML 5) i spację przed'/'(niewymagane z wyjątkiem [kompatybilność z Netscape 4 i starsze przeglądarki] (http://stackoverflow.com/q/462741/1709587)); przynajmniej ten ostatni z tych punktów wydaje się być szczegółem implementacji w Liquid, który twórcy nie będą myśleć o zmianie w przyszłości.Obawiałbym się, że poleganie na tym może być delikatne. –

0

Dla mnie, co następuje pracował

{% image "book.jpeg" alt="My book" class="book-123" %}