Ostatnio wziąłem sie za postawienie sklepu (w 5 minut) z EscParters. Z tym, że tym razem nie zajęło mi to 4 minuty, ale trochę więcej. Gdyż zachciało mi się go upiększyć. Upiększyłem jeden… potem drugi… no i za drugim razem na kilka rzeczy nowych wpadłem 🙂 – oto co mi wyszło – księgarnia internetowa.
A zabrałem się za to tylko i wyłącznie z tego powodu że w ESCpartners, jeden z poleconych przeze mnie partnerów zaczął coś zarabiać 🙂
A teraz krok po kroku co zrobiłem by ten sklep jakoś wyglądał… (przyda się odrobina znajomości php)
1. Rzecz jasna na początku należy wgrać „czysty sklep” wedle instrukcji.
2. Teraz trzeba znaleźć edytor, który by obsługiwał kodowanie UTF-8 (gdyż w takim kodowaniu są te pliki), mój stary zajączek wysiadł przy tym zadaniu, znalazłem Notepad++
3. Kolejno wybrać trzeba, lub zrobić szablon. Może być rzecz jasna jakiś darmowy, w sumie rzecz biorąc każdy się nadaje 🙂 Ja zajrzałem na stronkę freecsstemplates.org – jak piszą darmowe szablony, w większości nawet do komercyjnego użytku, czyli coś dla mnie (trzeba tylko zachować linka do nich).
is a free, fully standards-compliant CSS template designed by Free CSS Templates. This free template is released under a Creative Commons Attributions 2.5 license, so you’re pretty much free to do whatever you want with it (even use it commercially) provided you keep the links in the footer intact. Have fun with it 🙂
Wybrałem sobie taką – simpletex
4. Szablon wybrany – sklep wgrany. W zainstalowanym rozpakowanym sklepie, zachowuje gdzieś na boku plik index.php (tak by móc podpatrzeć co w nim było). A zawartość pokrojonego szablonu (tak jak leci) kopiuje do tego samego katalogu, gdzie mam wgrany sklep, zamieniając plik index.html (bo taki jest najczęściej z szablonem dostarczony), na plik index.php.
5. Otwieram w edytorze oba pliki index.php (stary ze sklepu i nowy z szablonu). Teraz teoretycznie można skopiować poszczególne dane (wstawki php) ze sklepu do szablonu w odpowiednie miejsca (przed zawartością szablonu, w miejsce menu i tam gdzie okno – 'content’) i powinno na 90% działać.
tak całkiem dla laików:
1. wiersze: 1-5 kopiujemy na początek przed szablonem
2. wiersz 14 odpowiedzialny za jakiś skrypt java do formularza, kopiuje do head szablonu (ten drugi skrypt java – pde – zostawaim, jest on potrzebny do menu, a menu i tak będę zmieniał – jeśli nie masz zamiaru nic robić z menu skopiuj go też)
2. wiersze: 22-26 kopiujemy w miejsce menu w szablonie
3. wiersze: 32-146 kopiujemy w miejsce gdzie mają być pokazywane proukty
4. no i na koniec wiersz 151 kopiujemy na koniec całego pliku
Mogą się czasem zdarzyć problemy z wyświetlaniem jeśli w pliku odpowiedzialnym za style CSS jest zdefiniowany któryś ze znaczników użytych w sklepie. Dobrze jest więc przejrzeć możliwe podstrony, czy oby na pewno wszystko jest jak trzeba i w razie potrzeby pobawić sie definicją styli CSS.
6. Rozwiązanie z punktu 5 powinno działać, i teoretycznie można to tak zostawić i iść spać. Ja jednak odrobinę bardziej się potrudziłem. Zacznijmy od początkowej wstawki, mamy tam polecenie includowania pliku (require_once 'config.php’;) config.php, ok wszystko fajnie, ale w tym pliku mam także uruchomienie sesji wrr… wraz z uruchomieniem sesji, możemy spodziewać sie że wkrótce w google pojawią się linki do naszej strony z takim cudnym parametrem: &PHPSESSID=2a24597e6ea7535ad027930ee2c5b53c – czego zdaje się nie chcemy.
Poszukałem odrobinkę, na jednej ze stron ktoś polecił by przed definicją sesji wstawić coś takiego:
ini_set('session.use_trans_sid', false);
Tak więc wstawiamy to albo do pliku config.php przed zainicjowaniem sesji, albo do pliku index.php przed zaincludowaniem tego pliku.
7. Teraz wypadałoby ustawić odpowiedni znacznik meta i parametry keyword i description. Domyślny sklep nie oferuje nic w tym zakresie. Wstawiamy więc odpowiednie linijki do kodu html, mamy tym sposobem jednakowe znaczniki dla każdej podstrony sklepu. Można powiedzieć lepsze to niż nic.
Poszedłem jednak odrobinę dalej i ustawiłem osobny znacznik title dla każdej strony z pojedynczą książką (do innych raczej ciężko o dane). W tym celu ze skryptu (zawartości okna) usunąłem linijkę (by się nie powtarzać):
$item_info = $client->call('getItemById', array(PASS, (int) $_GET['id']));
A zamiast znacznika title wstawiłem coś takiego:
<?php
$title='';
if ($_GET['mode'] == 'pos') {
/* szczegolowe informacje o konkretnej pozycji */
$item_info = $client->call('getItemById', array(PASS, (int) $_GET['id']));
$title=$item_info['title'].' - ';
}
?>
<title><?php echo $title; ?>Księgarnia internetowa</title>
8. Teraz została zabawa z menu. O ile nie ograniczyliśmy naszej księgarni do jakiegoś niszowego produktu, możemy mieć mały problem z bardzo długim menu. Jeśli natomiast ograniczyliśmy się do jakiejś kategorii, możemy mieć problem z wyświetlaniem linków w menu. W każdym razie wszystko możemy modyfikować w dostarczonym pliku include/menu.php.
W moim przypadku, menu mam trochę przydługawe, postawiłem je więc skrócić. Znalazłem więc skrypt tworzący rozwijane menui go zainstalowałem odpowiednio modyfikując plik menu.php i index.php (tak jak piszą na stronie skryptu).
menu.zip – zmodyfikowany plik menu.php pod ten skrypt.
9. Teraz zabrałem sie za kosmetyczne sprawy strony startowej. Robię to modyfikując plik index.php te części odpowiedzialne za wyświetlanie bestsellerów, polecanych i nowości. Tutaj sprawa wiąże się z dopasowaniem ich do szablonu rzecz jasna można pozostawić tak jak nam dano, ale czy nie ładniej i zgrabniej to wygląda, jak sie to zrobi w ten sposób (porównaj z szablonem). Tu Ci wiele nie pomogę, musisz sprawdzić jak to zrobiono w oryginalnym szablonie i odpowiednio zaimplementować w pliku index.php wyciągając sposób wyświetlania z pliku include/item_short.php (zamiast include 'include/item_short.php’; – wstaw odpowiednie fragmenty z tego pliku, lub zrób swój plik z trochę innym wyświetlaniem dostosowany do szablonu np. item_short1.php)
Upiększanie innych podstron z danymi wyszukiwania, wyświetlaniem kategorii i pozycji robimy modyfikując odpowiednio pliki z katalogu include (minimalna znajomość php się przyda!)
10. Twórcy tego systemu dali nam do zabawy dokumentacje, na podstawie której możemy wyciągnąć dodatkowe dane… Przyznam szczerzę, że usilnie próbując coś na podstawie tej dokumentacji zrobić straciłem chyba ze 2 godziny, nie mając pojęcia co jest grane 🙂 Nie chciało mi sie nikomu głowy zawracać bo sobota wieczór była.
W końcu się zorientowałem, że w dokumentacji są małe błędy i jak jest tam napisane 'nazwa’, 'cena’ trzeba użyć odpowiednio 'price’ i 'name’ (na szczęście było już późno i odbyło się bez ofiar). W każdym razie jakimś cudem metodą prób i błędów zrobiłem listę płatności i transportu. (tabelka.zip)
Tak na przyszłość, gdybyś chciał skorzystać z przygotowanej w ESCartners dokumentacji, weź na nią poprawkę i skorzystaj z funkcji print_r, gdyby coś nie chciało działać.
11. Jeszcze jeden mały dodatek Ci zaproponuję do zrobienia. Wyświetlając pojedynczą pozycję książkową, dodałem do niej coś takiego jak książki o podobnej tematyce. Pomoże to zarówno klientom jak i pozycji w wyszukiwarkach. Domyślnie tego sklep nie oferuje, ale ja skorzystałem z funkcji wyszukiwania. I do pliku item_long.php na sam koniec doczepiłem mały skrypcik, wyszukujący podobne pozycje na podstawie tytułu książki.
doklejka.zip – wstaw zawartość tego pliku na koniec do pliku item_long.php
13. Resztę spraw pozostawiam tobie, dobrze będzie jeśli zrobisz cokolwiek unikalnego w Twoim sklepie 🙂 Warto również zainstalować jakies styatyski, np. Google Analitics.
14. Na koniec podziękuj Tomkowi, za ten ładny opis jeśli z niego skorzystałeś. Możesz to zrobić na kilka sposobów, wybierz jeden:
- Wstaw linka w Twoim nowym sklepie do jednej z jego stron.
- Zarejestruj się w linkme z polecenia Tomka i wstaw skrypt linkme na nowo postawiony sklep.
- Zarejestruj sięlinkornie z jego polecenia i wstaw skrypt na tak nowo stworzoną stronę.
Jak już ostatnio pisałem, taki sklep to jedna z lepszych metod na stworzenie strony z dużą ilością podstron, pod taki system, a kto wie może i coś zarobi – jeśli się nim odpowiednio zakręci:) Jak już dowiódł jeden z partnerów będący pode mną zarejestrowany w ESCpartners 🙂
Ha! To jest dokladnie to, czego sie nie moglem doprosic z ESCPartners (a wydaje mi sie ze to im powinno zalezec). Dzieki 🙂
Marku, im zależy i dlatego w ogóle udostępnili takie możliwości jak sklep, tylko (ufając w inteligencję partnerów) wyszli z założenia, że oni dają szkielet, a od partnerów już zależy co dalej, może to i dobre rozwiązanie, w końcu im więcej unikalnych stron z ich produktem tym lepiej dla nich,
swoją drogą instrukcja Tomka jest okey, i warto ją rozpropagować wśród partnerów
Moze i zalezy, ale wypadaloby choc odpisac na maila z zapytaniem czy jest dostepny juz opis dostosowywania ich kodu pod wlasne widzimisie. Wystarczylo odpisac „nie ma”.
poradnik świetny. poszedłem jednak pół kroku dalej – dopisałem 'przyjazne linki’ do sklepu – wyszukiwarki to lubią – można sprawdzić na skrzat.org
sagittariuspl – myślałem o tym, ale tp jak będę miał odrobinkę czasu. Popraw sobie niektóre znaki w linkach, takie jak np znak zapytania, bo nie wchodzi Ci wtedy na produkty.
PS: fajna nazwa pod taki sklep 😛 skrzat ten od robienia psot 🙂
Co do unilkalnych stron to fakt faktem… ale jak tak patrze opisy książek są często takie same w większości księgarni internetowych 🙂 Tak wiec dzięki partnerom zyskali to, że teraz większosc tych opisów bedzie tak czy inaczej prowadzić do nich 🙂
Aaa i do do sklepów to był tylko przykład 🙂 sam mam zamiar zabrać się za stworzenie kilku małych niszowych sklepików 🙂 z jedną kategorią np. książki o php, albo prezenty dla dziadków. Walczyć o pozycje z tysiącem innych księgarń ciężko 🙂 choć spróbuje, ale z niszowym tematem myślę będzie znacznie prościej.
dzięki za tą radę ze znakami. też to zauważyłem – jest np. problem też z '%’, ale robiłem na chybcika, bo są inne priorytety a chciałem coś posawić pod linkme
co do skrzata – to jest domena wielofunkcyjna pod wiele projektów – dziś na nią trafił sklep 🙂
okrajanie kategorii ma sens? w pewien sposób tracimy na możliwości jak największego zlecenia, bo jest mniej towarów
i tu się zgodzę z Tomkiem, pozycjonowanie niszowe (choć z mniejszą liczbą towarów) powinno być skuteczniejsze, łatwiej trafić do ludzi naprawdę zainteresowanych daną ofertą, mimo że będzie tych klientów dużo mniej
Już wcześniej dostroiłem swój sklep z pp Aragon/ESCPartners, ale przyznaję, że pomysł z punktu 11 bardzo mi się spodobał i natychmiast dopisałem ten kawałek kodu do sklepu. Super to chodzi i nie tylko jest użyteczne dla userów, to jeszcze wspomaga indeksowanie sklepu przez wyszukiwarki.
Dobra robota Tomku! 🙂
Oczywiście wiele niszowych sklepów łatwiej wypromować niż jeden „z mydłem i powidłem”.
skoro wszyscy juz się chwalą to ja też się pochwalę, zrobiłem sklepik według wskazówek Tomka, ale że nie mogłem się jakoś zdecydować na żaden szablon, więc zrobiłem własny na podstawie NiftyCube (zaleta – ładnie zaokrąglone rogi oparte na javascript, oraz dosyć czysty – mało go – kod, wady ciężko się otwiera – pewnie przez te kody javascript )
jak by ktoś był ciekawy to zapraszam na http://www.smiesznyprezent.stworz.pl
i jeszcze jedno, dlaczego nikt nie powiedział że przez funkcją header nic nie może być nawet pusta linia- na szczęscie doszedłem do tego po przeczytaniu na jednym forum (oczywiście to dygresja laika)
Ja proponuje jeśli ktoś wstawia pod zaplecze dodać jeszcze do belki z menu np.bestsellery i losowe książki lub coś innego wtedy będzie większe rozróżnienie a przecież nie wiele robooty.
Ja nie mogę tego uruchomić na localhoście.Całą konfigurację jakby chcieli to mogli by przenieść na siebie a tylko templatkę by czało zmieniać
Jestem nowym członkiem PP ESCPartners, kiedy tu trafiłem i zobaczyłem Wasze projekty postanowiłem nie odbiegać moim kiczowatym, pierwszym projektem sklepu od reszty Partnerów. Tak więc przedstawiam (prawie)finalny projekt mojego sklepu: http://www.ksiegarenka.net/
Prawie ponieważ jeszcze kombinuję z głównym banerkiem 🙂
Zauważyłem że każdy coś wnosi swoim komentarzem dla innych tak więc i ja postanowiłem coś wnieść. Mianowicie licznik odwiedzin, niby banalna sprawa ale fajnie mieć własny 🙂
Najpierw trzeba utworzyć bazę danych lub tylko tabelę jeżeli jakąś bazę już posiadamy, w MySql:
–Jezeli nie mamy bazy to wykonujemy całosc zapytania
–Baza danych: `ecpartners`
—
CREATE DATABASE `ecpartners` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci;
USE `ecpartners`;
— Jezeli mamy to tylko te czesc
–Struktura tabeli dla `vis_licznik`
—
DROP TABLE IF EXISTS `vis_licznik`;
CREATE TABLE IF NOT EXISTS `vis_licznik` (
`id` int(11) NOT NULL auto_increment,
`hits` varchar(15) collate utf8_unicode_ci NOT NULL default ”,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=35 ;
Po utworzeniu bazy wystarczy tylko pouzupełniać poniższy kod i wkleić go w całości w miejscu w którym chcemy wyświetlić licznik:
’); ?>
Licznik jest dobry ponieważ zlicza unikalne wejścia z IP klientów, czyli 1 klient jest 1 raz zapisany w bazie. Mam nadzieję że się komuś to przyda, skrypt można oczywiście dowolnie modyfikować 🙂
Pozdrawiam.
Przepraszam. w poprzedniej wiadomości coś wywaliło najważniejszą część licznika czyli skrypt odpowiedzialny za wyświetlanie się licznika.
Między znaczniki PHP należy wkleić:
$host = 'localhost’;
$user = 'nazwa_uzytkownika_bazy’;
$pass = 'haslo_do_bazy’;
$baza = 'nazwa_bazy_danych’;
$link = mysql_connect($host, $user, $pass);
mysql_select_db($baza, $link);
$IP = $_SERVER[’REMOTE_ADDR’];
$zap_1 = 'SELECT * FROM `vis_licznik` WHERE hits = „’.$IP.'”’;
$zap_2 = mysql_query($zap_1);
if(!mysql_num_rows($zap_2) == 1) {
$zap_3 = 'INSERT INTO `vis_licznik` VALUES („”, „’.$IP.'”)’;
mysql_query($zap_3) or die(mysql_error().’ ’.mysql_errno());
}
$zap_4 = 'SELECT * FROM `vis_licznik`’;
$zap_5 = mysql_query($zap_4);
$hits = mysql_num_rows($zap_5);
mysql_close($link);
echo(’Strone odwiedziło już ’.$hits.’ internautów!’);
Jeszcze mała modyfikacja, w pliku include/cart_show.php linijkę 38 można podmienić na:
<?php if (!empty($items)) { ?> <input type=”submit” name=”recount” value=”Przelicz zamówienie” /> <? if ($_GET[’mode’] == 'cart’) { ?>| <a href=”<? echo $_SESSION[’go_from’]; ? rel=”nofollow”>”>Kontynuuję zakupy</a> | <a href=”<? echo url_for(’index.php’, ’?mode=order’); ? rel=”nofollow”>”>Zamawiam</a><? } } ?>
Przy pustym koszyku, po wciśnieciu przycisku przelicz zamówienie =, na niektórych serwerach może pojawić się błąd.
Trochę posiedziałem nad sklepem i zrobiłem troszkę lepsze mety i title.
if ($_GET[’mode’] == 'pos’) {
/* szczegolowe informacje o konkretnej pozycji */
$item_info = $client->call(’getItemById’, array(PASS, (int) $_GET[’id’]));
echo ”.$item_info[„title”].’ – Księgarnia internetowa’;
echo ”;
echo ”;
}elseif($_GET[’mode’]==’search’ && isset($_GET[’search’])) {
echo ”.htmlentities($_GET[„search”]).’ – Wynik wyszukiwania – Księgarnia internetowa’;
echo ”;
echo ”;
}elseif($_GET[’mode’]==’cart’) {
echo ”;
echo ”;
}else{
echo 'Księgarnia internetowa’;
echo ”;
echo ”;
};
Oj źle się wklejiło więc wkleiłem na cPaste.com
http://cpaste.com/4367
Warto jeszcze w include/category_show.php zamienić żeby później pokazywało linki do kolejnych stron bo przecież tak zwykle się robi a programiści escpartners.pl zrobili że najpierw jest wybór podstron a potem treść.
w szukajce można sobie jeszcze dorobić pingowanie dzięki czemu szybciej będzie indeksować oraz więcej
Na http://cpaste.com/4367 w linji 5 jest błąd. Zamiast call powinno być __soapCall. Poprawiony kod wygląda tak: http://cpaste.com/4440
wszystko zależy której wersji używanie czy na php 4 czy php5.Moja akurat była na php 4 a twoja Arturze Łuszczeku zapewne na php5
jeszcze można sobie spróbować zrobić jakiś ogon przez wyszukiwarke.
Słowa pod ogon można uzyskać łapiąc je w wirtualnej polsce więc jakby ktoś chciał skrypcik do tego.
http://cpaste.com/4455