Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> If.. else w ALT na stronie
Neutralize
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.11.2014

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
packa
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 16.01.2014

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
Neutralize
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.11.2014

Ostrzeżenie: (0%)
-----


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..
Go to the top of the page
+Quote Post
packa
post
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 16.01.2014

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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.

Ten post edytował packa 21.11.2014, 12:26:24
Go to the top of the page
+Quote Post
Neutralize
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.11.2014

Ostrzeżenie: (0%)
-----


Wywala mi już przy deklaracji zmiennych. Chyba jednak to nie pójdzie, ale dzięki za chęci (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
zielu001
post
Post #6





Grupa: Zarejestrowani
Postów: 87
Pomógł: 3
Dołączył: 15.08.2009

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
Neutralize
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.11.2014

Ostrzeżenie: (0%)
-----


A skąd wtedy będzie pobierał te alty, gdzie mam je zdefiniować?
Go to the top of the page
+Quote Post
zielu001
post
Post #8





Grupa: Zarejestrowani
Postów: 87
Pomógł: 3
Dołączył: 15.08.2009

Ostrzeżenie: (0%)
-----


W bazie danych, row jest zapewne pobierane z bazy danych..
Wystarczy przy wysyłaniu obrazka dodać rekord alt.
Go to the top of the page
+Quote Post
Neutralize
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.11.2014

Ostrzeżenie: (0%)
-----


Tak myślałam, czyli bez wchodzenia w bazę danych za bardzo się nie da?
Go to the top of the page
+Quote Post
Monter08
post
Post #10





Grupa: Zarejestrowani
Postów: 237
Pomógł: 22
Dołączył: 16.09.2010
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Neutralize
post
Post #11





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.11.2014

Ostrzeżenie: (0%)
-----


Cytat(Monter08 @ 24.11.2014, 08:47:35 ) *


Wywala mi się na tym:

  1. alt="{$alt[$row@iteration-1]}"
Go to the top of the page
+Quote Post
Monter08
post
Post #12





Grupa: Zarejestrowani
Postów: 237
Pomógł: 22
Dołączył: 16.09.2010
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


jaką masz wersje smarty?
Go to the top of the page
+Quote Post
zielu001
post
Post #13





Grupa: Zarejestrowani
Postów: 87
Pomógł: 3
Dołączył: 15.08.2009

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Neutralize
post
Post #14





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.11.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 19:23