Zmienne w kodzie HTML


(start007) #1

W programie WORD jest coś takiego jak korespondencja seryjna. Czyli mamy napisany jakiś tekst i tylko w danym jego momencie możemy importować dane z pliku xml. To tak słowem wstępu.

Potrzebuję coś takiego do mojego szablonu allegro. Mam jeden szablon ale sprzedaję obuwie i do każdego muszę uzupełniać rozmiar kolor długość wkładki itd. Czy można zrobić coś na wzór wspomnianego wyżej przykładu w kodzie html zrobić?

Coś z lekcji informatyki kojarzę formularze z php ale nie wiem czy to dobry trop i na tym moje rozmyślenia się wyczerpują.

Mam nadzieję, że wystarczająco dobrze wyjaśniłem o co mi chodzi.

Potrzebuję uzupełniania pól:

  • marka, rozmiar, długość wkładki, materiał… no zmienne

Może tym samym sposobem mógłbym wklejać link do zdjęć.

Gdy robię to ręcznie to czasami zjadam część kodu i wiadomo… wszystko od nowa.


(Fizyda) #2

Pomysł masz dobry, ale nie wiem czy php do tego będzie najlepszy. Może zleć jakiemuś studentowi napisanie jakiejś aplikacji normalnej na komputer do uruchomienia, której nie będziesz potrzebował instalować dodatkowo serwera http i php albo przynajmniej php, a potem pamiętać to uruchomić przed użyciem.
Jeśli aplikacja ma działać tylko na windowsie to lepiej chyba zrobić generowanie takiego pliku html w C#.

Jakbyś był czymś takim zainteresowany możesz spróbować do mnie napisać może się jakoś dogadamy :).


(start007) #3

Tylko, że jak student mi to zrobi i nie wyjaśni i nie pozwoli na rozbudowę i edycję to jestem w kropce. Co jakiś czas szata jest zmieniana czyli kod się zmieni.


(Fizyda) #4

Ale parametry zostają takie same? Szata czyli plik html ulega zmianie, ale podmieniane rzeczy są stałe? Wspomniałeś też o linkach do zdjęć, dużo zależy w jaki sposób są one dodawane do takiego szablonu i czy ich kod html również się zmienia.

Jeśli parametry są stałe i niezmienne to wszystko jest do zrobienia.


(Pablo_Wawa) #5

Jeśli dane z bazy (do generowania plików stron) możesz pobierać przy pomocy PHP, to poniżej przykładowe rozwiązanie (bardzo proste - to tylko szkic proponowanego rozwiązania).

  1. Tworzysz sobie plik HTML z szablonem strony, zawierającym w swojej treści specjalnie oznaczone “zmienne” (ciągi znaków), które będziesz potem zamieniał seryjnie. Ja użyłem tu słów angielskich otoczonych znakiem “%”, przykładowy plik-szablon (o nazwie “template.html”):

  2. Następnie tworzysz skrypt w PHP, który będzie odczytywał ten plik szablonu strony, a następnie w pętli pobierał dane z bazy danych (np. MySQL) i zamieniał te “zmienne” w szablonie, a następnie zapisywał to do jakiegoś pliku (o ustalonej nazwie), np. tak:
    <?php
    $repaced=array('%TITLE%','%HEADER%','%HREF%','%LINK%','%PRICE%');
    $template=file_get_contents('template.html');

    $data=array(
    array(‘fname’=>‘pageX’,‘title’=>‘Tytuł strony X’,‘header’=>‘Nagłówek strony X’,‘href’=>‘http://www.dobreprogramy.pl’,‘link’=>‘DobreProgramy’,‘price’=>123.45),
    array(‘fname’=>‘pageY’,‘title’=>‘Tytuł strony Y’,‘header’=>‘Nagłówek strony Y’,‘href’=>‘http://programistrz.pl’,‘link’=>‘Pablo_Wawa’,‘price’=>666)
    );

    foreach ($data as $value)
    {
    $fname=$value[‘fname’].’.html’;
    $destination=array($value[‘title’],$value[‘header’],$value[‘href’],$value[‘link’],$value[‘price’]);
    $html=str_replace($repaced,$destination,$template);
    file_put_contents($fname,$html);
    }
    ?>

Gdzie tablica $data zawiera przykładową zawartość (dla dwóch stron) - oczywiście u siebie te dane będziesz pobierał z bazy danych (w pętli, która zastąpi obecną foreach). No i musisz wiedzieć, jak sobie na tej podstawie generować nazwy poszczególnych plików (stron produktów).
Zamiast “zmiennych” o nazwach %TITLE% możesz użyć innego, pasującego Tobie, standardu (np. {TITLE} czy !TITLE!).

PS. Dane do tworzenia szablonu nie musisz pobierać z bazy danych - równie dobrze może to być np. plik tekstowy, gdzie koleje wiersze reprezentują poszczególne produkty (strony), a dane są rozdzielone ustalonym znakiem (tabulacji, średnika, przecinka, itp.) i wtedy potrzebujesz tylko rozbić dane z takiego wiersza na kawałki za pomocą funkcji explode.