Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: If.. else w ALT na stronie
Forum PHP.pl > Forum > PHP
Neutralize
Witam

Mam problem z dopisaniem kodu do już istniejącego. Mam taki kod:

  1. <div data-lightbox class="galeria">
  2. {foreach from=$foty item=row}
  3. {if $row.fota}
  4. <img src="./fota/firmowe/{$row.fota}">
  5. {/if}
  6. {/foreach}
  7. </div>


Teraz chciałabym do tego dopisać jeszcze alt do każdego zdjęcia. Jak dodam to wyżej w ten sposób:

  1. <img src="./fota/firmowe/{$row.fota}" alt="Opis">


To do każdego zdjęcia na stronie dorzuci mi ten sam alt, a chciałabym zrobić tak, żeby dla każdego był inny. Próbowałam tak:

  1. $i=1;
  2. <div data-lightbox class="galeria">
  3. {foreach from=$foty item=row}
  4. {if $row.fota}
  5. $i++;
  6. if ($i==1)
  7. {
  8. $alt = "sadsadsad";
  9. }
  10. <img src="./fota/firmowe/{$row.fota}">
  11. {/if}
  12. {/foreach}
  13. </div>


Ale nie działa. Próbowałam zamiast $i dać $fota. Próbowałam po {/foreach}. Nic mi nie działa. Czy ktoś wie jak to zrobić i byłby w stanie mi pomóc?
packa
To są smarty?

  1. if ($i==1)
  2. {
  3. $alt = "sadsadsad";
  4. }


To jest na pewno dobra składnia? No i w linii 10 nie masz żadnego znacznika alt...
Poza tym trochę mieszasz chyba style tutaj...
  1. $alt = "sadsadsad";

o tak po prostu tworzysz sobie zmienną w widoku? Bez żadnych znaczników języka?
No i nawet gdyby to miało tak działać to $alt będzie tylko dla pierwszego przejścia pętli... Później jest undefined...
Neutralize
No tak, powinno być jeszcze i++. Nie wiem jak to zrobić, dlatego napisałam tutaj.. Kod który wstawiłam nie działa, jest zły, nie mam innego pomysłu..
packa
Hmmm jeżeli to są smarty to może spróbuj coś w ten deseń (dawno nic nie robiłem w smarty i nie mam za bardzo jak tego sprawdzić ale chyba jakoś tak to się robiło smile.gif)


  1. {assign "i" "0"} //deklaracje nowych zmiennych
  2. {assign "alt" ""}
  3. <div data-lightbox class="galeria">
  4. {foreach from=$foty item=row}
  5. {if $row.fota}
  6. {$i = $i + 1} //inkremetacja - wcześniej wchodziło Ci w tym miejscu od razu na 2;
  7. {if $i eq 1}
  8. {$alt = "sadsadsad"}
  9. {/if}
  10. <img src="./fota/firmowe/{$row.fota}" alt="{$alt}">
  11. {/if}
  12. {/foreach}
  13. </div>


Swoją drogą będzie w foreachu cały czas robił if i == 1 to alt = taki if i == 2 to alt taki? Trochę zaśmiecające widok i wręcz niepoprawne. Ciągniesz te foty z bazy? Może lepiej tam dodać nową kolumnę alt i wtedy z niej wczytywać po prostu...


//szybka edycja
W sumie przy każdym rozpoczęciu pętli powinieneś czyścić zawartość alt - bo w tym co napisałem wyżej to wpisze Ci starą wartość jeżeli nie wejdzie do ifa.
Neutralize
Wywala mi już przy deklaracji zmiennych. Chyba jednak to nie pójdzie, ale dzięki za chęci smile.gif
zielu001
  1. <div data-lightbox class="galeria">
  2. {foreach from=$foty item=row}
  3. {if $row.fota}
  4. <img src="./fota/firmowe/{$row.fota}" alt="{$row.alt}">
  5. {/if}
  6. {/foreach}
  7. </div>


A nie o takie coś ci chodzi? Nie rozumiem po co warunki itp
Neutralize
A skąd wtedy będzie pobierał te alty, gdzie mam je zdefiniować?
zielu001
W bazie danych, row jest zapewne pobierane z bazy danych..
Wystarczy przy wysyłaniu obrazka dodać rekord alt.
Neutralize
Tak myślałam, czyli bez wchodzenia w bazę danych za bardzo się nie da?
Monter08
Jak już musisz to tak brzydko zrobić to spróbuj tak:
  1. {assign var='alt' value=['freebsd','windows','macosx','linux']}
  2. <div data-lightbox class="galeria">
  3. {foreach from=$foty item=row}
  4. <img src="./fota/firmowe/{$row.fota}" alt="{$alt[$row@iteration-1]}">
  5. {/foreach}
  6. </div>

w pierwszej linijce deklarujesz sobie po kolei wszystkie alty.
Neutralize
Cytat(Monter08 @ 24.11.2014, 08:47:35 ) *


Wywala mi się na tym:

  1. alt="{$alt[$row@iteration-1]}"
Monter08
jaką masz wersje smarty?
zielu001
Z tego co rozumiem to ma być jakaś mała galeria? Chyba, że zamierzasz dla każdego obrazka pisać ręcznie w kodzie ALT, a i tak możesz tego nie zsynchronizować.
Edycja jednej dwóch linijek kodu i dodanie do pola do tabeli w bazie.. chociażby przez PHP..

Podasz mi powód dlaczego robisz na opak?
Neutralize
Tak, to ma być mała galeria. Chciałam właśnie do każdego obrazka przypisać ALT, jest ich niewiele. Robię na opak bo nie mam dostępu do bazy danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.