ala Maciej Kalkowski: E-Commerce tools - Magento
 

E-commerce Tools (Fundamentals of Magento Development)

Termin zajęć:
  • ustalony indywidualnie - USOS mail
Rodzaj zajęć:
  • wykład i ćwiczenia
Warunek zaliczenia wykładu:
  • Co najmniej 50% punktĂłw.
Warunek zaliczenia ćwiczeń:
  • Co najmniej 50% punktĂłw.
Ocena wykład:
Ocena ćwiczenia:
  • Zrealizowanie zadań z ćwiczeń - 100%

Classes

  • Lesson 1 () (22.05.2015, 13:45-)
    Zadania na zajęcia:
    • Przydatne narzędzia:
    • Zainstaluj serwer Apache, PHP5, mysql (zostaniesz zapytany o haslo do mysql - zapamietaj je):
      	root@debian1:~# apt-get install apache2 php5 mysql-server php5-mysql php5-curl php5-gd php-pear
      	
      	root@debian1:~# vi /etc/apache2/sites-available/100-magento.local.conf
      	
      Do tego pliku wpisz:
      	<VirtualHost *:80>
              	ServerAdmin kalkos@domena.pl
              	ServerName magento.local
              	DocumentRoot /var/www/magento.local/public
              	LogLevel warn
              	ErrorLog /var/log/apache2/magento.local.error.log
              	CustomLog /var/log/apache2/magento.local.access.log combined
      	</VirtualHost>
      	
      Utwóz katalog i ustaw właściciela
      	root@debian1:~# mkdir -p /var/www/magento.local/public
      	root@debian1:~# chown www-data.www-data -R /var/www/magento.local/
      	root@debian1:~# a2ensite 100-magento.local.conf
      	Enabling site 100-magento.local.
      	To activate the new configuration, you need to run:
        		service apache2 reload
      	root@debian1:~# /etc/init.d/apache2 reload
      	[ ok ] Reloading apache2 configuration (via systemctl): apache2.service.
      	root@debian1:~# /etc/init.d/apache2 reload
      	
      Dopisz do /etc/hosts:
      	127.0.0.1       magento.local
      	
    • Pobierz Magento i plik Sample Data
      Uwaga:
      Wymagane założenie konta w Magento. Wybierz wersję 1.9.1 lub nowszą z 1.9.x. Plik SAmple data powinien być dobrany do wersji Magento (jest niezbędny do załadowania przykładowych danych do sklepu).
    • Pobraną paczkę naleĹźy rozpakować:
      	root@debian1:/etc/apache2/sites-enabled# cd
      	root@debian1:~# cd /var/www/magento.local/public/
      	root@debian1:/var/www/magento.local/public# tar zxvf ~kalkos/magento-1.9.1.1.tar-2015-04-30-12-56-57.gz
      	root@debian1:/var/www/magento.local/public# cd magento/
      	root@debian1:/var/www/magento.local/public/magento# chown www-data.www-data -R ./
      	root@debian1:/var/www/magento.local/public/magento# ls -al
      	total 724
      	drwxr-x--- 13 www-data www-data   4096 Apr 29 10:25 .
      	drwxr-xr-x  3 www-data www-data   4096 May 21 23:20 ..
      	-rw-r-----  1 www-data www-data   2812 Apr 28 15:08 api.php
      	drwxr-x---  6 www-data www-data   4096 Apr 29 09:07 app
      	-rw-r-----  1 www-data www-data   2806 Apr 28 15:08 cron.php
      	-rwxr-x--x  1 www-data www-data    717 Apr 28 13:15 cron.sh
      	drwxr-x---  7 www-data www-data   4096 Apr 28 13:15 downloader
      	drwxr-x---  3 www-data www-data   4096 Apr 28 13:15 errors
      	-rw-r-----  1 www-data www-data   1150 Apr 28 13:03 favicon.ico
      	-rw-r-----  1 www-data www-data   5953 Apr 28 15:08 get.php
      	-rw-r-----  1 www-data www-data   5667 Apr 28 13:03 .htaccess
      	-rw-r-----  1 www-data www-data   4568 Apr 28 13:03 .htaccess.sample
      	drwxr-x---  2 www-data www-data   4096 Apr 28 13:03 includes
      	-rw-r-----  1 www-data www-data   2617 Apr 28 15:08 index.php
      	-rw-r-----  1 www-data www-data   2341 Apr 28 15:08 index.php.sample
      	-rw-r-----  1 www-data www-data   6416 Apr 28 15:08 install.php
      	drwxr-x--- 12 www-data www-data   4096 Apr 28 13:15 js
      	drwxr-x--- 14 www-data www-data   4096 Apr 28 13:15 lib
      	-rw-r-----  1 www-data www-data  10421 Apr 28 13:03 LICENSE_AFL.txt
      	-rw-r-----  1 www-data www-data  10679 Apr 28 13:03 LICENSE.html
      	-rw-r-----  1 www-data www-data  10410 Apr 28 13:03 LICENSE.txt
      	-rwxr-x--x  1 www-data www-data   1319 Apr 28 13:15 mage
      	drwxr-x---  6 www-data www-data   4096 Apr 28 13:03 media
      	-rw-r-----  1 www-data www-data    886 Apr 28 13:03 php.ini.sample
      	drwxr-x---  2 www-data www-data   4096 Apr 28 13:15 pkginfo
      	-rw-r-----  1 www-data www-data 585086 Apr 28 13:15 RELEASE_NOTES.txt
      	drwxr-x---  2 www-data www-data   4096 Apr 28 13:15 shell
      	drwxr-x---  5 www-data www-data   4096 Apr 28 13:03 skin
      	drwxr-x---  3 www-data www-data   4096 Apr 29 10:25 var
      	root@debian1:/var/www/magento.local/public/magento#
      	
      Instalacja PHPMyAdmin:
      	root@debian1:~# apt-get install phpmyadmin
      	Reading package lists... Done
      	(...)
      	
      Założenie bazy dla magento (uwaga - w produkcyjnych środowiskach nie należy wykorzystywać użytkownika root):
      	root@debian1:~# mysql -u root -p
      	Enter password:
      	Welcome to the MySQL monitor.  Commands end with ; or \g.
      	Your MySQL connection id is 52
      	Server version: 5.5.42-1 (Debian)
      	
      	Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
      	
      	Oracle is a registered trademark of Oracle Corporation and/or its
      	affiliates. Other names may be trademarks of their respective
      	owners.
      	
      	Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      	
      	mysql> CREATE DATABASE magento;
      	Query OK, 1 row affected (0.00 sec)
      
      	mysql> Bye
      	root@debian1:~#
      	
      Wgranie przykładowych danych:
      		root@debian1:~# gunzip magento-sample-data-1.9.1.0.tar-2015-02-11-08-18-26.gz
       		root@debian1:~# tar xvf ./magento-sample-data-1.9.1.0.tar-2015-02-11-08-18-26
      		root@debian1:/home/kalkos# mysql -u root -p magento < magento-sample-data-1.9.1.0/magento_sample_data_for_1.9.1.0.sql
      		Enter password:
      		root@debian1:~# (cd ./magento-sample-data-1.9.1.0; tar cvf - ./skin ./media ) | ( cd /var/www/magento.local/public/magento/; tar xv)
      		root@debian1:~# cd /var/www
      		root@debian1:/var/www# chown www-data.www-data ./magento.local/ -R
      		root@debian1:/var/www#
      	
      OD teraz mozna testowac: http://magento.local
      • locale ustaw na Polski, kliknij Continue
      • Podaj lokalizacje bazy (uzytkownik root, zapamietane haslo do mysql)
      • Podaj swoje dane oraz wskaz dane do logowania
      • W ostatnim kroku podajemy statystyczne dane - mozna go pominac lub podac dowolne dane
      • Przechodzimy do front-end lub back-end
    • Parametry naszego Magento:
      • Adres sklepu: http://magento.local
      • Adres panelu admina: http://magento.local
      • Nazwa bazy: magento
      • Adres IP: 127.0.0.1 lub jeśli chcemy dostać się spoza VM - sprawdzamy przy pomocy polecenia "ip a", a wpis do pliku hosts naleĹźy wykonać na maszynie z przeglądarką www (Dla Windows: C:\Windows\System32\drivers\etc\hosts z uprawnieniami admina)
      • Adres phpMyAdmin: http://localhost/phpmyadmin/
    • Dodanie modulu rewrite, w celu poprawnego wyświetlania podstron:
      	root@debian1:/etc/apache2/sites-available# a2enmod rewrite
      	Enabling module rewrite.
      	To activate the new configuration, you need to run:
        	  service apache2 restart
      	root@debian1:/etc/apache2/sites-available# /etc/init.d/apache2 reload
      	Reloading apache2 configuration (via systemctl): apache2.service.
      	root@debian1:/etc/apache2/sites-available#
      
      	
      Dodaj do pliku /etc/apache2/sites-available/100-magento.local.conf dodaj informacje o rewrite do katalogu:
      	<VirtualHost *:80>
              ServerAdmin kalkos@domena.pl
              ServerName magento.local
              DocumentRoot /var/www/magento.local/public/
              LogLevel warn
              ErrorLog /var/log/apache2/magento.local.error.log
              CustomLog /var/log/apache2/magento.local.access.log combined
              <Directory /var/www/magento.local>
                      Options FollowSymLinks
                      AllowOverride all
                      RewriteEngine On
              </Directory>
      	</VirtualHost>
      	
      i wykonaj restart usługi:
      	root@debian1:~# /etc/init.d/apache2 reload
      	Reloading apache2 configuration (via systemctl): apache2.service.
      	root@debian1:~#
      	
  • Lesson 2 () (27.05.2015, 16:00)
    Zadania na zajęcia:
    • Zainstaluj git:
      	 root@debian1:~/# apt-get install git
      	
      Instsalacja wiz:
      root@debian1:~/# git clone https://github.com/classyllama/Wiz.git
      Cloning into 'Wiz'...
      remote: Counting objects: 572, done.
      remote: Total 572 (delta 0), reused 0 (delta 0), pack-reused 572
      Receiving objects: 100% (572/572), 187.07 KiB | 121.00 KiB/s, done.
      Resolving deltas: 100% (249/249), done.
      Checking connectivity... done.
      root@debian1:~/# alias wiz=~/Wiz/wiz
      root@debian1:~# wiz
      Wiz v0.9.8
      Provides a CLI interface to get information from, script, and help you manage
      your Magento installation.
      
      Usage:
        wiz [global-options]  [command-options]
      Runs a command.
      
        wiz help 
                  Returns help on a command.
      
        wiz command-list
                  Returns the list of available commands.
      
      Global Options:
        --batch [csv|pipe|tab]
                  Returns tabular data in a parseable format.  Defaults to "csv"
      
        --store ,
        --website 
                  Executes Magento as this particular store or website.
      
      
      root@debian1:~# export WIZ_MAGE_ROOT=/var/www/magento.local/public/magento/
      
      Dodawanie na stałe możliwości korzystania z WIZ wraz z autouzupełnianiem:
      root@debian1:~# echo "export WIZ_MAGE_ROOT=/var/www/magento.local/public/magento/" >> /root/.bashrc
      root@debian1:~# echo "alias wiz=~/Wiz/wiz" >> /root/.bashrc
      root@debian1:~# source /root/Wiz/wiz.bash_completion.sh >> ./.bash_completion
      
    • Od tego momentu moĹźemy korzystać np. z następujących funkcji wiz (mozesz sprawdzic inne przez autouzupełnianie lub dokumentację):
      • wiz admin-resetpass
      • wiz admin-createadmin
      • wiz cache-clear
      • wiz module-list
      • wiz sql-cli
      Dla przykładu zmiana hasła:
      root@debian1:~# wiz admin-resetpass
      PHP Notice:  Undefined variable: realParams in /root/Wiz/app/plugins/Admin.php on line 157
      
      Notice: Undefined variable: realParams in /root/Wiz/app/plugins/Admin.php on line 157
      Login: kalkos
      New Password: qwerty
      Password for user "kalkos" has been updated.
      root@debian1:~#
      
    • Konfiguracja theme (przez CPN oznaczmy Current Package Name - nazwa pakietu z Theme):
      • Layout znajdują się w $MAGENTO_PATH/app/design/frontend/CPN/layout
      • Layout odpowiada za ułoĹźenie strony - gdzie są bloki i jak wyglądają nagłówki
      • Template znajdują się w $MAGENTO_PATH/app/design/frontend/CPN/template
      • Template odpowiada za zawartość strony - jaka treść się pojawia
      • SKIN znajdują się w $MAGENTO_PATH/skin/frontend/CPN
      • SKIN zawiera pliki statyczne - js, css, media
      • W przypadku ustawionego template np. na CPN/jasny, powinien istniec rowniez CPN/default. Dodatkowo zawsze istnieje base/default.
      • W tej kolejnosci (podanej w podpunkcie powyzej) Magento szuka plikow odpowiadających za wyświetlenie konkretnego widoku.
      Utworzenie swojego Layout, Template w CPN o nazwie rwd:
      root@debian1:~# cd /var/www/magento.local/public/magento/app/design/frontend/rwd
      root@debian1:/var/www/magento.local/public/magento/app/design/frontend/rwd# mkdir test
      root@debian1:/var/www/magento.local/public/magento/app/design/frontend/rwd# mkdir ./test/template
      root@debian1:/var/www/magento.local/public/magento/app/design/frontend/rwd# mkdir ./test/template/contacts
      root@debian1:/var/www/magento.local/public/magento/app/design/frontend/rwd# mkdir ./test/layout/
      root@debian1:/var/www/magento.local/public/magento/app/design/frontend/rwd# cp ./default/layout/contacts.xml ./test/layout/
      root@debian1:/var/www/magento.local/public/magento/app/design/frontend/rwd# cp ./default/template/contacts/form.phtml ./test/template/contacts/
      root@debian1:/var/www/magento.local/public/magento/app/design/frontend/rwd# chown www-data.www-data ./test -R
      
      Utworzenie swojego skin w CPN o nazwie RWD:
      root@debian1:~# cd /var/www/magento.local/public/magento/skin/frontend/rwd
      root@debian1:/var/www/magento.local/public/magento/skin/frontend/rwd# mkdir test
      root@debian1:/var/www/magento.local/public/magento/skin/frontend/rwd# mkdir test/images
      root@debian1:/var/www/magento.local/public/magento/skin/frontend/rwd# mkdir test/css
      root@debian1:/var/www/magento.local/public/magento/skin/frontend/rwd# cp ./default/css/styles.css ./test/css/
      root@debian1:/var/www/magento.local/public/magento/skin/frontend/rwd#
      root@debian1:/var/www/magento.local/public/magento/skin/frontend/rwd# chown www-data.www-data /var/www/magento.local/public/magento/skin/frontend/rwd/test/ -R
      root@debian1:/var/www/magento.local/public/magento/skin/frontend/rwd#
      
      Uwagi:
      • Tworząc odpowiednia layout, template w podkataltu app/design/frontend/rwd/test/ moĹźemy modyfikować wyglądy tych stron najpierw kopiując pliki z rwd/default a nastęnie je modyfikując.
      • Wszystkie pliki i katalogi muszą naleĹźeć do uĹźytkownika www-data
      • Po kaĹźdej modyfikacji plikĂłw konieczne jest wykonanie polecenia wiz cache-clear
      Zadanie:
      • Zainstaluj wiz (dla osĂłb znających narzędzie magerun - ono teĹź jest OK)
      • Zmień nagłówki na stronie Contact US - pole title w head (modyfikacja contacts.xml w layout)
      • Zmień opsiy poszczegĂłlnych pĂłl w formularzzu kontaktowym.
      • Zmień wielkość czcionki w formularzu kontaktowym.
  • Lesson 3 () (29.05.2015, 16:00)
    Zadania na zajęcia:
    • Zmiany konfiguracji
      • katalogu produktĂłw dokonuje się w sekcji Configuration-System-Catalog
      • Grup atrybutĂłw dokonuje się w sekcji Catalog-Attribets-(Manage Atributes lub Manage Atribute Sets)
          Parametry nowego atrybutu:
        • Attribute code - kod wykorzystywany w bazaie
        • Scope - zasięg dostępność, np. dla konkretnego widoku sklepu (Magento moĹźe mieć wiele widokĂłw sklepu)
        • Cataloge Input Type - typ atrybutu
        • Default Value - domyślna wartość
        • Unique Value - czy wartość musi być unikalna
        • Values Required - czy wartoś jest wymagana
        • Input validation for Store Owner - czy ma być walidacja wejścia podczas wprowadzania danych
        • Apply To - ktĂłrych produktĂłw dotyczy
        • Allow HTML Tags on Frontend - czy moĹźna korzystać z HTML w zawartości atrybutu
        • Use in Quick Search - w przypadku szybkiego wyszukiwania - czy przeszukiwać ten atrybut
        • Use in Advanced Search - jak wyĹźej, tylko dla zaawansowanego wyszukiwania
        • Comparable on Front End - czy ma być dostępne w porĂłwnaniu produktĂłw
        • Use for Promo Rule Conditions - czy filtrować po tym parametrze przy definiowaniu promocji
        • Postition - kolejność atrybutu
        • Visible on Produt View Page on Front-end - czy atrybut ma być widoczny na stronie produktu
        • Use on Product LIsting - widoczność na stronie kategorii
        • Used for sorting in PRoduct Listing - moĹźliwość sortowania w widoku kategorii po tym atrybucie
      • Produkt:
      • SKU - identyfikator produktu uĹźywany przez system do jednoznacznej identyfikacji
      Zadania:
      • Parametry katalogu:
        • Ustaw wyświetlanie opcji 10, 20, 50, 100 szt. produktĂłw na liście, a domyślnie 20
        • UStaw domyślne sortowanie po cenie
        • Wyłącz powiadomienia o zmianie porduktu, ale włącz o zmianie stanu magazynowego
      • Dodaj nowy rodzaj atrybutu - wg swojego pomyslu
      • Dodaj nową grupę atrybutĂłw - kursy e-learinig, przypisz do niej pasujące wg Ciebie atrybuty
      • Dodaj nową kategorię produktĂłw - kursy e-learning
      • UtwĂłrz 3 produkty w tej kategorii, jeden typu configurable (uwaga: product typu configurable umoĹźliwia tworzenie podproduktĂłw będących wariantem produktu wyjściowego) i dwa będące jego wariantami
  • Lesson 4 () (03.06.2015, 17:00)
    Tworzenie modułów: MagentoModules (by Arkadiusz Talarczyk)
  • Lesson 5 () (08.06.2015, 16:00)
    Optymalizacja działania:
    • Zainstaluj paczki memcached, php5-memcached, varnish.
    • Memcached:
      • W pliku app/etc/local.xml dodaj wpisy o memcached (sprawdĹş co dodać), a następnie zrestartuj usługę apache.
      • SprawdĹş czy strony się szybciej ładują przy większym obciążeniu (dla chętnych - narzędzie o nazwie "ab" - dostępne po zainstalowaniu apache, rozsrzeenie "Page load time" do Chrome)
    • Varnish:
      • Dodaj nowy adres IP do serwera magento (w obecnej podsieci - w VMWarePlayer prowadzącego podsiec to 192.168.48.0/24 - sprawdz swoja polecenie ip a s), ale inny niĹź ten na ktorym słucha magento (w przykladzie prowadzącego apache z magento słucha na 192.168.48.130:80):
         
        ip a a 192.168.48.150/24 dev eth0
        		
      • W /etc/apache2/ports.conf ustaw nasłuchiwanie zamiast na porcie 80, na 192.168.48.130:80. Podobnie popraw pliki 000-default.conf i 100-magento.local.conf, tak by wpisy <VirtualHost 192.168.48.130:80> zamiast <VirtualHost *:80>
      • Jeśli TwĂłj linux wykorzystuje systemd, Wykonaj:
        cp /lib/systemd/system/varnish.service /etc/systemd/system/
        		
        a następnie w /etc/systemd/system/varnish.service zmień parametr "-a" tak by zawierał 192.168.48.150:80 (lub inny IP z Twojej podsieci).

        W przeciwnym przypadku (jeśli Twój linux korzysta z init.d) zmień plik /etc/default/varnish tak by zawierał (oczywiście 192.168.48.150 należy zamienić na swoje IP):
        DAEMON_OPTS="-a 192.168.48.150:80 \
                     -T localhost:6082 \
                     -f /etc/varnish/default.vcl \
                     -S /etc/varnish/secret \
                     -s malloc,256m"
        		
      • Uruchom ponownie usługę apache
        service apache2 restart
        		
      • Uruchom ponownie usługę varnish
        systemctl daemon-reload					(dla systemd)
        systemctl restart varnish.service			(dla systemd)
        /etc/init.d/varnish restart				(dla init.d)
        		
      • Zmodyfikuj /etc/varnish/default.vcl tak by zawierał:
        backend default {
        	.host = "192.168.48.130";
        	.port = "80";
        }
        sub vcl_recv {
        	if (req.url ~ "\.(png|gif|jpg)$") {
        		unset req.http.cookie;
        	}
        }
        	
        		
      • Uruchom ponownie usługę varnish
        systemctl daemon-reload					(dla systemd)
        systemctl restart varnish.service			(dla systemd)
        /etc/init.d/varnish restart				(dla init.d)
        		
      • Zmień plik /etc/hosts (na windows C:\Windows\System32\drivers\etc\hosts.txt) tak by magento.local wskazywało na nowe adresy IP (w przykłądzie powyĹźej 192.168.48.150)
      • WejdĹş na http://magento.local
      • Dla chętnych: sprawdĹş czy strony się szybciej ładują przy większym obciążeniu (narzędzie o nazwie "ab" - dostępne po zainstalowaniu apache, rozsrzeenie "Page load time" do Chrome)

Lectures - eCommerce Multitool, by Jakub Wojtakajtis (PayU):

  • 22.05.2015 (piątek), 16.00 - 19.00 (4 godz) - sala A2-24
  • 29.05.2015 (piątek), 16.00 - 19.00 (4 godz) - sala A2-24
  • 30.05.2015 (sobota), 09.00 - 14.00 (6 godz) - sala A2-19
  • 12.06.2015 (piątek), 16.00 - 19.00 (4 godz) - sala A2-24
  • 13.06.2015 (sobota), 09.00 - 14.00 (6 godz) - sala A2-21(3 godz) i Aula B (3 godz)

Plan:

  • Wykład otwierajĹĄcy cykl: "eCommerce - morze moĹźliwości" - 2h
  • Metodyki zarzĹĄdzania projektami: SCRUM vs. PMI - 4h
  • Narzędzia psychometryczne w zarzĹĄdzaniu potencjałem zespołu: MBTI - 4h
  • Architektura satysfakcji i przyjemności: Metodyki UX - 4h
  • Survival w Internecie: SEO/SEM - 4h
  • Destylacja wiedzy: Data Science - 4h

Classes - Magento Development, by Maciej Kalkowski (WMI, UAM):

  • 22.05.2015 (piątek), 13:45 - 16.00 (3 godz) - sala A1-16,17
  • 27.05.2015 (środa), 17:00-18:30 (2 godz) - sala A1-16,17
  • 29.05.2015 (piątek), 13:45 - 16.00 (3 godz) - sala A1-16,17
  • 03.06.2015 (środa), 17:00-18:30 (2 godz) - sala A1-16,17
  • 08.06.2015 (poniedziałek), 15:30-17:45 (3 godz) - sala A1-16,17

Plan i wymagania:

  • Zainstalowanie VM i środowisk deweloperskich.
    Wymagania:
    • Zaisntalowanie maszyny wirtualnej
    • Zainstalowanie serwera www, obsługi php, bazy danych.
    • Konfiguracja środowiska - domena, IP
    • Zainstalowanie Magento
    • Uruchomienie Magento
  • Dostosowywanie działania środowiska.
    Wymagania - konfiguracja theme:
    • Modyfikacja skin
    • Modyfikacja template
    • Narzędzie Wiz
  • Zarzązdanie produktami:
    • Tworzenie katalogĂłw i atrybutĂłw do produktĂłw
    • Dodatkowe opcje - dodawanie kodu facebook like i linkĂłw do materiałów wideo
  • Moduły:
    • Tworzenie modułu
    • Tworzenie wersji językowych