Pocztówki - wystarczy PHP i MySQL
Przepraszam, że już na początku muszę Cię rozczarować. Nie wystarczy 'goły' PHP (4). Potrzebujesz jeszcze php-GD2 i php-regex. (Najprawdopodobniej masz już wszystko na serwerze - jeśli nie, to skontaktuj się z administratorem, żeby zainstalował odpowiednie pakiety.)
Na początek: utwórz katalog o nazwie PostCard. Sciągnij pliki SVN-en ("svn co https://svn.heilsberg.org/reps/phPostcard phPostcard") albo innym programmem jak np rapidsvn z https://svn.heilsberg.org/reps/phPostcard i skopiuj je do tego katalogu (na serwerze). W nim znajdziesz najważniejsz plik "config.php". Wypełnij zmienne (i pamiętaj, że muszą być w cudzysłowiu i zakończone ';')>
$this->settings[dbserver] to serwer MySQLa
$this->settings[dbuser] użytkownik MySQLa
$this->settings[dbpass] = "hasło do MySQLa"(jak i późnejszej do administracji przez postcard-admin-frame.html)
$this->settings[db] = "nazwa bazy danych";
$this->settings[lang] = "skrót do języka" (zerknij do lang-xx.php, gdzie xx=to język)
$this->settings[FROM_email] = "webmaster@serwer" (istniejący adres np. webmastera - to będzie nadawca mailów)
$this->settings[primary_category] = "kategoria" (nazwa kategorii, która będzie pokazywana na starcie)
Skrypty testowałem na linuxowym serwerze z normalną domeną i podkatalogami. Niestety nie wiem, czy mechanizm wykrywający (pod-)katalog, w którym skrypty się znajdują, działa bez problemów. Jeśli nie (a to wiem: na stronach typu http://serwer/~ktos nie będzie on działać) należy wypełnić
$this->settings[PostCard_dir] = "PostCard"; ścieżką URLa do plików (np.: ~ktoś/PostCard lub katalog/PostCard).
Resztę zostawiamy bez zmian i przechodzimy do administracji: http://serwer/(podkatalog)/PostCard/postcard-admin-frame.html i logujemy się hasłem do bazy danych.
Klikamy na "create tables". Tabele powinny być utworzone bez problemów. (Nazwy tabel znajdziesz w config.php w zmiennych $this->settings[main_table], $this->settings[picture_table] i $this->settings[category_table]. Jesli je zmienisz możesz utworzyć tabele na nowo. Jeśli stworzysz kopię całego katalogu, zmienisz nazwy tabel i utworzysz nowe tabele masz drugą wersję, w której możesz dodawac obrazki i ustawienia niewidoczne w pierwszej).
Klinknij na "add image". Teraz możesz dodać obrazki i tworzyć lub wybierać kategorie, w których mają być widoczne. Nie zapomnij utorzyć kategorii podstawowej (którą podałeś w config.php w zmiennej $this->settings[primary_category] - inaczej formularz będzie startował bez wyboru obrazków!). Obrazki będą skalowane (pomniejszane) do wielkości podanych w config.php ($this->settings[img_width] - maksymalna szerokość oraz $this->settings[img_height] - maksymalna wysokość) a ich podglądy do wartości zmiennych ($this->settings[thumb_width] i $this->settings[thumb_height]) z tego samego pliku. W polu obok "Text for this picture:" podaj opis obrazka - pocztówki zawierają taki opis u góry po lewej (na drugiej stronie) - pojawi się on na stronie z tekstem jako takowy opis widoczku.
Kliknij teraz na "manage images" i zobaczysz ich automatycznie utworzony podgląd oraz opis i kategorię. Klikając na "(delete)" kasujesz je z bazy danych, plik podglądu jak i sam obrazek. Możesz tu również zmienić opis i kategorie obrazka. Czasem pojawi się pod tabelką czerwony napis - jest to ważna wskazówka, że masz puste kategorie lub brakuje kategorii podstawowej.
Teraz znaczki pocztowe! Nie polecam skanować znaczków poczty polskiej, bo nie masz do nich praw autorskich. Pozatym nadruk (stempel) z datą i miejscem wysłania (Twoja domena) serwer utworzy sam. Do tego potrzebny jest jedynie mały obrazek (nieco wystrzępiony kólkiem np. w gimpie) mający po lewej nieco wolnego miejsca o białym tle (chyba że będziesz urzywał innego tła). Może on być zapisany jako jpg, gif albo png. wrzyuć go przez ftp do podkatalogu (images/stamps [mam nadzieję, że nie zmieniłeś $this->settings[images_dir] = "images";$this->settings[thumbs_dir] = "preview" oraz $this->settings[stamps_dir] = "stamps"; w config.php]). Będą one stamtąd wczytywane i pokazywane bezpośrenio (żadnych kategorii, baz danych itp).
Interna wyglądu
Teraz możnaby się już tym bawić, ale nie dopasowaliśmy całości (jak obiecałem) do wzglądu Twojej strony. Problem polega na tym, że są dwa miejsca, w których należy dokonać zmian. Pierwsze to podkatalog "templates" z plikami i (drugie) ich odpowieniki w config.php (lub bezpośredio same klasy CSS w pliku stylów CSS). Możesz zmienić wygląd tych 'gołych' plików html dodając do <HEAD> swoje własne style lub / i dodać części swojej strony po <BODY> (u góry) i przed </BODY> (na dole). Możesz nawet dodać wlasną ramkę do tabeli (która realizuje pocztówkę) przez zmianę klas CSS ale NIE POLECAM tego.
Nie zmieniając ramek oszczędzisz sobie wiele roboty i czytania reszty tej strony (szczególnie jeśli zmieniłeś $this->settings[images_dir] albo $this->settings[thumbs_dir] w config.php)!
Wyżej wymienione podkładki (preview.template, formular.template i send.template) są wczytywane przez parsera i wszyskie {xxx} zamieniane są odpowiednio. Dla ramek (tabeli) oznacza to: {lo} to lewa/góra (w moim pliku stylów "pocztowka-styl-2.css" {podanym w config.php w zmiennej $this->settings[style_file]} klasa nayzwa się "postcard-left-up-corner"). Podobnie dzieje się z {o}=góra {ro}=prawa/góra {l}=lewa {r}=prawa {ru}=prawa/dół {u}=dół {lu}=lewa dół. (Tworząc własny plik stylów CSS wykożystaj więc moje klasy, jeśli Ci się moje ramki nie podobają.)
Poza tym w podględzie i prezentacji pocztówki (plik: preview.template) są następujące pola zastępowane:
W formularzu "formular.template" (strona z wyborem obrazków i polami do wypełnienia) następujące pola zostaną zmienione:
W "send.template" istnieje pole {return_message} - jest to wiadomość, że pocztówka została wysłana
Poza tym {title_style} to zawsze klasa CSS tytułu ($this->settings[p_title_style] w config.php), {style_sheet} to plik CSS ($this->settings[style_file] w config.php), {title} to tytuł wzięty z lang-xx.php ("Pocztówka z domeny xxx") a {charset} uzupełnia <HEAD> o odpowiednie kodowanie znaków dla języków.
Języki
Nie wspomnieliśmy jeszcze nic o językach. Znajdują się one w plikach lang-xx.php (gdzie xx to skrót języka np.: 'pl' to polski). Możesz dodać języki, jeśli przetłumaczysz taki plik i zapiszesz go w wyżej wymienionej formie. Pojawi się on automatycznie w polu wyboru języka!
A oto przykład. Jedynym problemem jest niemiecki opis obrazków mimo polskiej wersji językowej (tabela bzła przeznaczona dla niemieckiej wesjii). Ale nad tym problemem pracuję...