navodila za izdelavo diplomske naloge · pimcore content management system key words: content...
Post on 13-Oct-2020
4 Views
Preview:
TRANSCRIPT
Dejan Kropec
RAZVOJ SPLETNE TRGOVINE NA OSNOVI
SISTEMA ZA UPRAVLJANJE Z VSEBINAMI
PIMCORE
Diplomsko delo
Maribor, avgust 2015
I
RAZVOJ SPLETNE TRGOVINE NA OSNOVI SISTEMA
ZA UPRAVLJANJE Z VSEBINAMI PIMCORE
Diplomsko delo
Študent: Dejan Kropec
Študijski program: VS ŠP Računalništvo in informatika
Smer: Informatika
Mentor: doc. dr. Gregor Polančič, univ. dipl. inž. rač. in inf.
Lektorica: Ksenija Pečnik, prof. slov. jezika
V
ZAHVALA
Zahvaljujem se mentorju doc. dr. Gregorju
Polančiču za nasvete, pomoč in vodenje pri
izdelavi diplomskega dela.
Posebna zahvala gre staršem, ki so mi študij
omogočili in me med študijem podpirali.
Njihova pomoč in spodbuda sta pripomogli k
uresničitvi zastavljenih ciljev.
VII
Razvoj spletne trgovine na osnovi sistema za
upravljanje z vsebinami Pimcore
Ključne besede: upravljanje z vsebinami, sistemi za upravljanje z vsebinami, hiter
razvoj aplikacij, elektronsko trgovanje, pimcore, jquery, zend framework
UDK: 004.738.5:339.371.4(043.2)
Povzetek
V diplomskem delu je predstavljeno področje sistemov za upravljanje vsebin. Pri tem se
osredotočamo na zasnovo spletnih sistemov za upravljanje vsebin in spoznamo
današnje glavne smernice, ki jih področje zajema tako na spletu kot tudi drugje.
Na začetku dela so predstavljeni sistemi za upravljanje vsebin in opisani splošni
koncepti upravljanja z vsebinami. V nadaljevanju so proučeni različni tipi sistemov za
upravljanje z vsebinami. Osredotočimo se na tipične značilnosti, ki jih takšni sistemi
vključujejo. Sledi analiza arhitektur sistemov za upravljanje vsebin in njihovih sestavnih
delov. Na področju uporabe so predstavljene aktualne rešitve sistemov za upravljanje
vsebin.
V praktičnem delu diplomskega dela smo razvili aplikacijo za spletno trgovino z
uporabo ogrodja za izgradnjo spletnih aplikacij Zend Framework in sistema Pimcore.
Na osnovi pridobljenega teoretičnega znanja je nato z uporabo sistema Pimcore, ki
temelji na omenjenem ogrodju, razvit primer tipične aplikacije za elektronsko
poslovanje. Razvita aplikacija predstavlja primer osnovne spletne trgovine za prodajo
blaga na drobno in vsebuje različne tehnologije razvoja sodobnih spletnih aplikacij, kot
so notacija JSON, jQuery in zahteve AJAX.
IX
The development of an online store based on
Pimcore content management system
Key words: content management, content management systems, rapid application
development, electronic commerce, pimcore, jquery, zend framework
UDK: 004.738.5:339.371.4(043.2)
Abstract
The bachelor's thesis presents the problem of content management systems. I focus on
online content management systems and present today's main guidelines for this field
online and elsewhere.
Firstly, I will present what content management systems are and also describe certain
general concepts of content management. Secondly, I explore the different types of
content management systems. I focus on the typical features which are included with
such systems. Thirdly, I analyse the architecture of content management systems and
their constituents. As regards to their use, I will present some of the most frequent and
actual solutions of content management systems.
Through a developed practical application, I will present the framework of operation
for building online applications using Zend Framework and Pimcore. On the basis of
the obtained knowledge and within the framework of the Pimcore system, which is
based on the aforementioned framework, an example of a typical application for
electronic commerce is developed. The developed application represents an example of
a basic retail e-store and includes different online concepts, such as JSON notation,
jQuery and AJAX demands.
XI
KAZALO
1 UVOD ...................................................................................................................... 1
2 SISTEMI ZA UPRAVLJANJE S SPLETNIMI VSEBINAMI .......................... 3
2.1 VSEBINE ZA OBJAVO NA SPLETU .................................................................... 3
2.1.1 Oblika vsebin na spletu................................................................................. 3
2.1.2 Struktura spletnih vsebin .............................................................................. 4
2.1.3 Življenjski cikel vsebin na spletu .................................................................. 4
2.1.4 Statična vs. dinamična spletna stran ............................................................ 5
2.2 UPRAVLJANJE Z VSEBINAMI .......................................................................... 5
2.3 CELOVITO UPRAVLJANJE Z VSEBINAMI ........................................................... 6
2.4 ZNAČILNOSTI SPLETNIH SISTEMOV ZA UPRAVLJANJE VSEBIN ........................... 6
2.5 UPORABA SPLETNEGA SISTEMA ZA UPRAVLJANJE Z VSEBINAMI........................ 8
3 ARHITEKTURA SISTEMOV ZA UPRAVLJANJE S SPLETNO VSEBINO
11
3.1 TIPI ARHITEKTUR SISTEMOV ZA UPRAVLJANJE SPLETNIH VSEBIN .................... 11
3.1.1 Modularnost in linearnost sistemov za upravljanje z vsebinami ................ 11
3.1.2 Komponentni sistemi za upravljanje vsebin ............................................... 13
3.1.3 Kompozicijski sistemi CMS ........................................................................ 14
3.1.4 Shematski sistemi CMS ............................................................................... 15
3.2 SESTAVNI DELI TIPIČNEGA SPLETNEGA SISTEMA ZA UPRAVLJANJE Z VSEBINAMI
16
3.3 DELOVANJE SISTEMA ZA UPRAVLJANJE S SPLETNO VSEBINO ......................... 18
3.3.1 Podsistem zbiranja in priprave vsebin ....................................................... 18
3.3.2 Podsistem upravljanja vsebin ..................................................................... 20
3.3.3 Podsistem objave vsebin ............................................................................. 21
4 OGRODJA ZA RAZVOJ APLIKACIJ ............................................................. 23
4.1 PREDSTAVITEV OGRODJA ZEND FRAMEWORK ............................................... 23
4.2 VZOREC PROGRAMIRANJA MVC ................................................................. 23
XII
4.3 ZMOŽNOSTI OGRODJA ................................................................................. 25
4.4 RAZVOJ SPLETNIH APLIKACIJ....................................................................... 26
4.5 PROGRAMSKI VMESNIK SIMPLE CLOUD API ................................................. 27
5 RAZVOJ SPLETNE TRGOVINE V SISTEMU PIMCORE........................... 28
5.1 OPIS POSLOVNEGA PROBLEMA..................................................................... 28
5.2 NAČRTOVANJE REŠITVE .............................................................................. 29
5.2.1 Predstavitev funkcionalnih zahtev rešitve .................................................. 29
5.2.2 Razredni diagram ....................................................................................... 30
5.2.3 Shranjevanje podatkov ............................................................................... 32
5.3 IMPLEMENTACIJA VTIČNIKA ........................................................................ 34
5.3.1 Kreiranje razredov Pimcore s pomočjo integriranega okolja PIM ........... 34
5.3.2 Definicija statičnih povezav za spletno trgovino ........................................ 39
5.3.3 Implementacija kontrolerja za spletno trgovino ......................................... 40
5.4 PREDSTAVITEV APLIKACIJE ......................................................................... 44
5.5 POVZETEK ................................................................................................. 53
6 SKLEP ................................................................................................................... 54
VIRI ............................................................................................................................... 56
PRILOGE ...................................................................................................................... 57
PRILOGA A: SEZNAM IZVORNIH KOD ....................................................................... 57
PRILOGA B: NASLOV ŠTUDENTA ............................................................................. 57
PRILOGA C: KRATEK ŽIVLJENJEPIS ......................................................................... 57
XIII
KAZALO SLIK
Slika 3.1: Sestavni deli sistema CMS. ....................................................................... 17
Slika 3.2: Procesi in aktivnosti v sistemu zbiranja vsebin. .......................................... 19
Slika 3.3: Procesi repozitorija v podsistemu upravljanja vsebin. ................................. 21
Slika 4.1: Diagram zaporedja v notaciji UML za vzorec MVC. .................................. 24
Slika 5.1: Diagram primerov uporabe. ....................................................................... 30
Slika 5.2: Razredni diagram aplikacije za spletno trgovino. ........................................ 31
Slika 5.3: Prikaz razreda Object_Product z dodanimi lokaliziranimi polji. ............. 36
Slika 5.4: Pogled za urejanje objekta razreda Product. ............................................. 37
Slika 5.5: Nastavitev omejitev tipa razreda v gradniku href. ..................................... 38
Slika 5.6: Končna definicija razreda Object_Product. ........................................... 39
Slika 5.7: Pogled za urejanje statičnih povezav. ......................................................... 40
Slika 5.8: Ozadje sistema Pimcore. ........................................................................... 44
Slika 5.9: Pojavno okno za vnos novega objekta s poljem za ključ objekta.................. 45
Slika 5.10: Vnašanje osnovnih podatkov objekta v ozadju Pimcore in prirejanje slike. 45
Slika 5.11: Potek prirejanja kategorije artiklu. ........................................................... 46
Slika 5.12: Vnos podatkov o trdem disku. ................................................................. 47
Slika 5.13: Pregled strani kategorije s prikazom seznama podkategorij. ...................... 48
Slika 5.14: Pregled kategorije s prikazom artiklov. .................................................... 49
Slika 5.15: Pogled podrobnosti artikla. ...................................................................... 50
Slika 5.16: Košarica spletne trgovine......................................................................... 50
Slika 5.17: Prvi korak: pogled na košarico v blagajni. ................................................ 51
Slika 5.18: Drugi korak nakupa: izbira naslova za dostavo. ........................................ 52
Slika 5.19: Četrti korak: povzetek in zaključek naročila. ............................................ 53
KAZALO TABEL
Tabela 1: Primerjava komponentnega in kompozicijskega sistema CMS. ................... 13
Tabela 2: Primer tipičnih tipov vsebin v komponentnem sistemu CMS. ...................... 14
Tabela 3: Primer tipičnih tipov vsebin v kompozicijskem sistemu CMS. .................... 15
Tabela 4: Tipi gradnikov v razredih v sistemu Pimcore. ............................................. 32
XIV
UPORABLJENE KRATICE
ACL Access Control List, seznam za kontrolo dostopa
AJAX Asynchronous JavaScript and XML, asinhroni JavaScript in XML
API Application Program Interface, programski vmesnik
CM Content Management, upravljanje vsebin
CMS Content Management System, sistem za upravljanje vsebin
CSS Cascading Style Sheet, prekrivni slogi
DDV Davek na dodano vrednost
FAQ Frequently Asked Questions, pogosto zastavljena vprašanja
GUI Graphic User Interface, grafični uporabniški vmesnik
HTML Hyper Text Markup Language, označevalni jezik
IDE Integrated Development Environment, integrirano razvojno okolje
JQUERYUI jQuery User Interface, zbirka gradnikov grafičnega vmesnika za HTML
JSON JavaScript Object Notation, notacija v javascript-u za objekte
LAMP Linux-Apache-MySQL-PHP, skupek odprtokodnih programskih oprem
MVC Model-View-Controller, vzorec za implementiranje uporabniških
vmesnikov
PDT PHP Development Tools, vtičnik za razvojno okolje PHP v programu
Eclipse
PHP PHP Hypertext Preprocessor, skriptni programski jezik
PIM Product Information Management, upravljanje informacij o produktih
RAD Rapid Application Development, hiter razvoj aplikacij
RIA Rich Internet Application, bogata spletna aplikacija
SQL Structured Query Language, strukturiran povpraševani jezik
URL Uniform Resource Locator, internetni naslov
WCMS Web Content Management System, spletni sistem za upravljanje z
vsebinami
WYSIWYG What-You-See-Is-What-You-Get Editor, HTML urejevalnik, podoben
MS Wordu
XML eXtensible Markup Language, razširljivi označevalni jezik
ZF Zend Framework, ogrodje za izgradnjo spletnih aplikacij v PHP
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 1
1 UVOD
Širitev interneta in nenehen napredek v informacijskih tehnologijah sta omogočila, da se je
internet sčasoma razširil v večino aspektov naše družbe in jo s tem preoblikoval. Njegova
razširitev je pomembno vplivala in preoblikovala poslovanje podjetij. To je povzročilo
definiranje novih temeljnih poslovnih strategij, spremenilo je dinamiko trga in poslovna
pravila. Internet omogoča hiter prenos informacij, ki jih nujno potrebujemo tako zasebno
kot tudi pri poslovanju podjetij.
Ključ do uspeha na spletu je zagotovo ustrezna in dobro predstavljena vsebina spletne
strani, saj z vsebino podjetja in posamezniki distribuiramo svoje poslovne vrednosti.
Uspešne spletne strani si obisk zagotavljajo bodisi s svežimi vsebinami ali pa nudijo
preglednejše, bogatejše in prijazne storitve. Vse to so, med drugim, dejavniki za uspešno
predstavitev in prodajo na spletu, ki jih je treba upoštevati pri zasnovi in vzdrževanju
vsebine strani. Podjetja si zato želijo orodje, ki jim bo koristilo pri upravljanju velikih
količin informacij, ki jih želijo objaviti na spletu in drugih komunikacijskih kanalih (npr.
pametnih mobilnih telefonih, tablicah, idr.). Uporaba kompleksnih orodij za zbiranje,
upravljanje in objavljanje vsebine je zato nujno potrebna in med takšna orodja spadajo
sistemi za upravljanje z vsebinami (angl. Content Management System, CMS). Sistemi
CMS so že postali stalna praksa za objavo vsebin na spletu, saj jih uporablja večina
sodobnih spletnih mest. Sistemi imajo pomembno vlogo pri dostavi informacij in zaradi
tega v diplomski nalogi raziščemo in proučimo upravljanje z vsebinami in se ob tem
osredotočimo na sisteme za upravljanje s spletnimi vsebinami, saj se na tem področju
dogaja največ novosti v povezavi z upravljanjem vsebin.
V diplomskem delu so opisane teoretične osnove upravljanja z vsebinami in tipične
značilnosti sistemov CMS ter omenjene nekatere poglavitne funkcionalnosti, ki jih morajo
vsebovati.
2 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
V drugem poglavju diplomskega dela se osredotočimo na arhitekture sistemov CMS.
Proučimo sestavne dele tipičnega sistema CMS in povzamemo različne arhitekturne stile
omenjenih sistemov.
V tretjem poglavju diplomske naloge pregledamo praktične primere sistemov CMS glede
na različne načine uporabe. Proučimo možnost uvajanja sistema CMS v organizacijo in
pregledamo tudi nekaj najpogostejših težav, ki lahko pri tem nastanejo. Odločamo se med
različnimi odprtokodnimi rešitvami, pri čemer se osredotočamo na platformo po modelu
LAMP (Linux – Apache – MySQL – PHP).
V praktičnem delu diplomske naloge se poglobimo v sistem CMS Pimcore
[https://www.pimcore.org], ki je zgrajen na odprtokodni platformi Zend Framework [12].
V ta namen bomo v četrtem poglavju spoznali osnove platforme Zend Framework proučili
implementacijo uporabniških vmesnikov po vzorcu MVC (angl. Model-View-Controller).
Pridobljena znanja bomo nato uporabili v šestem poglavju, kjer podrobneje obravnavamo
primer aplikacije v sistemu Pimcore. Kot dodatek smo v omenjenem sistemu CMS
implementirali vtičnik za spletno trgovino, kjer smo na primeru uporabljali koncepte
sodobnih tehnologij za izgradnjo bogatih spletnih aplikacij (angl. Rich Internet
Application).
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 3
2 SISTEMI ZA UPRAVLJANJE S SPLETNIMI VSEBINAMI
2.1 Vsebine za objavo na spletu
Vsebina je intelektualna lastnina organizacije. So informacije, ki so ločene od predstavitve.
Vsebina so informacije, ki so zajete na primer v brošuri, navodilih za uporabo, diplomskem
delu, spletni strani, knjigi ali v kateremkoli drugem informacijskem produktu [1].
Upravljanje vsebine omogočamo z uporabo podatkovnih tehnologij, ki jih uporabljamo za
hranjenje in dostavo vsebin. Problem upravljanja z vsebinami je, kako uporabiti
podatkovne tehnologije, da lahko upravljamo in dostavljamo kakovostne vsebine. Vsebino
je treba obravnavati kot podatke, saj jo le tako lahko shranjujemo, pridobivamo in
dostavljamo. Cilj je torej, da informacije ravno toliko predstavimo s podatki, da vsebina ne
postane preveč mehanska, nezanimiva in nerazumljiva za uporabnike. Po drugi strani pa
moramo vsebino predstaviti ravno toliko vsebinsko bogato, da jo še lahko upravljamo z
računalniki. Bogatejše kot so vsebine, težje je upravljanje takih vsebin z računalniki.
Realizacija upravljanja vsebin je odvisna od tega, ali bomo pri tem uničili kontekst bogatih
vsebin, saj moramo paziti tudi na to. Cilj je torej najti nek kompromis, pri katerem vsebino
označimo z metapodatki, ki opisujejo informacije v tolikšni meri, da jih lahko računalniki
organizirajo in sistematizirajo zbiranje, upravljanje in objavo. V nadaljevanju si bomo
pogledali dve temeljni lastnosti vsebine, to sta oblika in struktura.
2.1.1 Oblika vsebin na spletu
Oblika vsebine je oblika kodiranja določenega dela podatkov v podani informaciji. Format
ali oblika vsebine se uporablja za pripravo podatkov pri predstavitvi oz. prezentaciji
informacij [2].
Oblika prikaza je del vsebine, s katerim se je v sistemu CMS najteže spopasti, saj
nadzoruje prikazovanje. Vsebina mora biti ločena od predstavitve. Oblikovanje vsebine
4 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
delimo v tri različne kategorije: oblikovanje po psihološkem učinku (npr. velikost, barva in
pozicija), oblikovanje po vizualnem učinku (npr. ozadje) in oblikovanje po področju
uporabe (npr. slog za tisk, slog za spletno stran) [2].
2.1.2 Struktura spletnih vsebin
Določanje strukture vsebinam pomeni najti način, kako združevati vsebine med seboj.
Struktura zajema dele vsebine, ki določajo medsebojne odnose za potrebe organiziranja in
upravljanja. Struktura je tudi množica navedenih razmerij med posameznimi deli vsebin.
Poleg oblike je struktura vsebine osnovna lastnost vsebine, saj jo je pri upravljanju z
vsebinami treba razumeti in nadzorovati.
Struktura je ključ za upravljanje vsebin. Dobro strukturirane vsebine so tudi dobro
organizirane. Znano je dejstvo, da kdor nadzoruje strukturo, ima tudi nadzor nad objavo
vsebin. Primer dobrega strukturiranja je na primer uporaba kategorij, s katerimi točno
določimo medsebojen odnos med vsebinami in kje bodo katere vsebine objavljene. Dober
sistem CMS nam omogoča zasnovo več vrst struktur na istem telesu vsebine [2].
2.1.3 Življenjski cikel vsebin na spletu
Življenjski cikel spletne vsebine je pogosto kompleksen proces, skozi katerega gre spletna
vsebina. Vsaka faza življenjskega cikla vsebine se nanaša na procese zbiranja, upravljanja
ali objave vsebine. Različni avtorji predstavljajo različne faze v življenjskem ciklu vsebine,
ki se razlikujejo od modela do modela. Na splošno se življenjski cikel deli na faze
ustvarjanja, posodabljanje, distribucijo in arhiviranje spletnih vsebin [3].
Za namen diplomskega dela bomo uporabili življenjski cikel vsebine, povzet po [2], ki
definira tri poglavitne faze, in sicer: fazo zbiranja, fazo upravljanja in fazo objave
vsebine.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 5
2.1.4 Statična vs. dinamična spletna stran
Spletne strani so lahko statične ali dinamične. Razlika med njimi je v tem, na kakšen način
pridobijo HTML kodo spletne strani. Statične spletne strani uporabnik pridobi v brskalnik
takšne, kot so shranjene na strežniku. Navadno so te shranjene v HTML dokumentih kot
datoteke, ki so shranjene v datotečnem sistemu spletnega strežnika in so na voljo preko
HTTP zahtev. Statične strani so primerne za manjše spletne strani, ki imajo vsebine, ki jih
je redko potrebno spreminjati, saj za to potrebujemo strokovnjaka. Pridobivanje dinamične
spletne strani nadzoruje aplikacijski strežnik. Ta s pomočjo strežniških skript generira
HTML kodo vsake spletne strani glede na različne vhodne parametre, ki so podani v URL
naslovih ali v poslanih obrazcih. S strežniškimi skriptami lahko vsebino spletne strani
prilagodimo tipu uporabljenega brskalnika, uporabniku ali njegovi lokaciji. Dinamične
spletne strani za shranjevanje vsebine navadno uporabljajo podatkovno bazo. Sčasoma se
je razvila nova vrsta spletnih aplikacij, s katerimi je mogoče objavljati velike količine
vsebin in jih pri tem imeti organizirane. Takšna orodja imenujemo sistemi CMS. Šele ta
orodja nam omogočajo ustvariti dinamične spletne strani, ki so primerne za elektronsko
poslovanje, saj lahko shranjujejo velike količine informacij o produktih in te dinamično
prikazujejo na spletnih straneh. Hkrati pa omogočajo uporabnikom enostavno spreminjanje
in upravljanje vsebin. [2]
2.2 Upravljanje z vsebinami
Spletne strani so postale večje in obširne, s hitro spreminjajočo se vsebino, zato so orodja
za upravljanje z vsebino postala nujna. Pri upravljanju spletnih strani so podjetja za te
namene razvila orodja, ki zadostijo njihovim potrebam, ta orodja pa so poimenovala
sistemi za upravljanje z vsebinami (angl. Content Management Systems). Če torej želimo
ustvariti in vzdrževati vsebinsko obvezno spletno stran, imamo tehten razlog, da to storimo
s striktnimi strukturami in formalnimi procedurami sistema CMS. Takšen sistem nam
pomaga biti in ostati organiziran, tako da naša stran lahko raste in se hitro spreminja,
medtem pa njena vsebina ostaja kakovostna.
Upravljanje z vsebinami je sklop procesov in tehnologij, ki podpirajo zbiranje, upravljanje
in objavljanje informacij v kakršnikoli obliki ali mediju. Ko jih shranimo in na računalniku
6 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
dostopamo do te informacije, postanejo vsebina oz. natančneje digitalna vsebina. Ta
vsebina lahko prevzame obliko besedila (kot so elektronski dokumenti), multimedijske
datoteke (avdio- in video-datoteke) ali druge vrste datotek, ki gredo po stopnjah
življenjskega cikla vsebine [4].
2.3 Celovito upravljanje z vsebinami
Večina razprav v povezavi z upravljanjem vsebin se nanaša na ustvarjanje vsebinsko
obveznih spletnih strani. Čeprav so spletne strani trenutno primarna uporaba sistemov za
upravljanje vsebin, sega potencial upravljanja vsebin glede tega, kako pomagati
organizaciji, daleč preko spletne uporabe. Jasno je seveda, da lahko sistem CMS naredi
veliko več kot le spletno stran. Celovito upravljanje vsebin obsega celotno ustvarjanje
vsebin in informacij in sistem organiziranja vsebin kjerkoli v organizaciji [2].
Celovito upravljanje vsebin so strategije, metode in orodja, ki se uporabljajo za zajem,
upravljanje, shranjevanje, arhiv in dostavo vsebin in dokumentov, povezanih z
organizacijskimi procesi. Celovito upravljanje vsebin obsega upravljanje informacij v
celotni organizaciji, četudi so informacije v obliki papirnatega dokumenta, elektronske
datoteke, zapisov v podatkovni bazi ali celo elektronske pošte [2, 5].
Obstajajo številni dejavniki, ki spodbujajo podjetja k celovitemu načinu upravljanja vsebin.
Med drugimi so to potreba po večji učinkovitosti, izboljšan nadzor nad informacijami in
zmanjševanje stroškov upravljanja informacij za podjetje [5].
2.4 Značilnosti spletnih sistemov za upravljanje vsebin
Spletni sistem za upravljanje vsebin se uporablja za upravljanje dinamičnih zbirk spletnega
materiala, vključno s HTML dokumenti, slikami in drugimi oblikami medijskih datotek.
Sistem za upravljanje vsebin omogoča upravljanje dokumentov, pregled, urejanje in
časovno upravljanje objave vsebine, kot to kažejo naslednje tipične značilnosti spletnega
sistema CMS [6]:
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 7
avtomatiziranje predlog: omogočanje predlog, ki se samodejno uporabijo na novi
ali obstoječi vsebini. To nam omogoča spreminjanje videza vsebin z enega
centralnega mesta;
delegacija: sistem CMS omogoča omejevanje dostopnih pravic nad določenimi
vsebinami za različne uporabniške skupine;
sodelovanje: sistem CMS lahko deluje kot sodelovalno ogrodje, saj omogoča, da
vsebino pridobi in ureja eden ali več pooblaščenih uporabnikov sistema.
Omogočeno je sledenje sprememb, potrjevanje objave ali zavrnitev sprememb;
možnost razširitev: večina sistemov CMS omogoča vtičnike, ki se enostavno
namestijo v sistem in omogočajo razširitev funkcionalnosti spletne strani;
nadgradljivost: spletni sistemi CMS omogočajo tudi ustvarjanje mikrostrani
z1notraj glavne namestitve spletne strani;
nadgradnje spletnih standardov: spletni sistemi CMS navadno omogočajo
prejemanje rednih posodobitev sistema z novimi spletnimi standardi;
nadzor dostopa: spletni sistemi CMS podpirajo različne uporabniške skupine.
Različne uporabniške skupine omogočajo nadzor nad tem, kako različni uporabniki
dostopajo do vsebine spletne strani;
ponujanje vsebine: spletni sistemi CMS pogosto pomagajo pri distribuciji vsebine,
saj omogočajo kreiranje spletnih virov informacij RSS in Atom, ki jih je mogoče
vključiti v drugih sistemih. Prav tako lahko sistem ob posodobitvah obvesti
uporabnike z e-pošto in je to del poteka dela;
preprosto urejanje vsebine: ko je vsebina ločena od vizualne predstavitve spletne
strani, postane njena vsebina veliko bolj obvladljiva. Takšno vsebino je laže in
hitreje urejati. Večina spletnih sistemov CMS za te namene vključuje orodja za
urejanje vsebin, s pomočjo katerih lahko uporabniki enostavno ustvarjajo in
spreminjajo vsebine;
upravljanje delovnega toka: potek dela je proces ustvarjanja zaporednih in
vzporednih opravil, ki so opravljena v spletnem sistemu CMS. Na primer, eden ali
številni ustvarjalci vsebin lahko predložijo vsebino za objavo, vendar je ta
objavljena šele, ko jo odobri administrator;
1 Mikrostran - samostojna, majhna spletna stran znotraj vsebine druge spletne strani
8 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
upravljanje dokumentov: spletni sistem CMS mora zagotoviti skupinsko
upravljanje življenjskega cikla dokumenta, od začetnega ustvarjenja, popravkov,
objave, arhiviranja do uničenja;
upravljanje z različicami: spletni sistemi CMS omogočajo proces vodenja
različic, s pomočjo katerega se dokumenti verzionirajo. To pooblaščenim
uporabnikom omogoča pridobivanje različnih verzij strani in nadaljevanje dela z
določene točke;
večjezičnost: spletni sistemi CMS omogočajo prikaz vsebine v več jezikih;
virtualizacija vsebine: spletni sistem CMS omogoča vsakemu uporabniku, da dela
s trenutno virtualno kopijo celotne spletne strani in v setu vseh dokumentov.
2.5 Uporaba spletnega sistema za upravljanje z vsebinami
Spletne sisteme CMS potrebujemo iz različnih vzrokov, med drugim so pomembni pri
zagotavljanju naslednjih poslovnih in drugih ciljev:
preprostost uporabe: najprej je treba spletno stran prilagoditi in integrirati v
spletni sistem CMS. To lahko opravi oseba, ki ima osnovno znanje o tehnologijah
PHP, MySQL, CSS in HTML. Ko sta prilagajanje in integracija končana, je
upravljanje vsebin naravnano povsem enostavno [7];
povečanje fleksibilnosti spletne strani: spletne strani prilagajamo hitro, saj lahko
imamo v organizaciji na primer nove artikle, storitve ali poslovne strategije, ki jih
želimo objaviti. S pomočjo sistemov CMS omogočamo hitro prestrukturiranje in
spreminjanje s pomočjo uporabniških vmesnikov [8];
povečanje natančnosti informacij: povečamo splošne kakovosti informacij, ki so
natančne, posodobljene in celovite [8];
podpora marketingu: spletne strani so dobro orodje marketinga v procesu
opravljanja elektronskega poslovanja. S pomočjo sistemov CMS pomagamo z
dostavo marketinškega materiala kot tudi blagovne znamke in celostne podobe
podjetja;
razširljivost: v sistemih CMS ima poseben pomen, saj so zgrajeni zelo skalabilno
in omogočajo, da se v spletne strani kot vsebino vključi različne funkcionalnosti.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 9
Pravzaprav je edina meja v ponujenih vsebinah kreativnost programerjev in
lastnikov spletne strani [7];
zmanjševanje duplikatov informacij: podvojitev informacij po poslovnih enotah
in platformah zvišuje stroške vzdrževanja in napak pri predstavitvi vsebine, zato bi
bila smiselna enkratno shranjevanje in vnovična uporaba informacij [8];
zviševanje uporabniške izkušnje: s sistemom CMS zvišujemo sposobnost, da za
obiskovalce spletne strani zagotovimo polno in bogato okolje. S tem tudi
omogočamo bolšjo kakovost spletne strani in zvišamo enostavnost uporabe [8];
podpora prodaji: ker prodaja prek elektronskega trgovanja vztrajno narašča, je
smiselno, da sistem CMS zagotavlja dodatne prodajne materiale, ki spodbujajo e-
trgovanje naše spletne strani. Sistemi CMS naj dopolnjujejo tudi obstoječe
infrastrukture e-trgovanja [8];
racionalizacija v posodobitvah informacij: ročni proces posodobitve informacij
na spletni strani je počasen in neučinkovit, zato sta smiselna racionalizacija in
podpiranje hitrih in enostavnih posodobitev vseh vsebin na spletni strani [8];
podpora rasti spletne strani: v strateških potrebah za bistveno povečanje količin
informacij, objavljenih na spletnih straneh gospodarske organizacije, mora sistem
CMS zagotavljati učinkovito in ugodno upravljanje, da se zlahka dosežejo cilji rasti
spletne strani [8];
izboljšanje poslovne odzivnosti: smiselno je, da sistem CMS omogoča razvoj
novih izdelkov in storitev kakor tudi drugih sprememb v smereh poslovanja. To se
doseže z zagotavljanjem hitrega in učinkovitega mehanizma za posodobitev
internih informacij in ostalih virov [8];
izboljšan proces objave: ad-hoc procesi za objavljanje vsebin preprečujejo
učinkovito upravljanje in sledenje informacijam. Z določenimi procesi v sistemih
CMS to izboljšujemo kot tudi zagotavljamo večjo transparentnost in odgovornost
[8];
zajem poslovnega znanja: Sistemi CMS podpirajo zajem poslovnih znanj v
organizaciji [8];
izboljšanje izmenjave znanja: neposredna komunikacija osebja in »peer-to-peer«
komunikacija sta dva od najučinkovitejših načinov širjenja informacij oz. znanja.
Smiselno je, da s sistemi CMS zagotovimo orodja in okolje za lažje potekanje
takšnih procesov komunikacije [8];
10 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
zmanjševanje stroškov objavljanja: veliko poslovnih priročnikov je izdelanih v
papirnati obliki. Če bi jih izdelali elektronsko, bi prihranili veliko denarja [8];
zmanjševanje stroškov vzdrževanja spletne strani: Sistem CMS omogoča
zamenjavo vseh aktivnosti in tako zmanjšamo potrebo po administrativnih
dejavnostih in druge z njimi povezane stroške [8];
povečanje občinstva na spletu: Sistem CMS omogoča dostop do spletne strani
širši množici oz. ciljnim skupinam, na primer večjezične različice spletne strani [8].
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 11
3 ARHITEKTURA SISTEMOV ZA UPRAVLJANJE S SPLETNO
VSEBINO
3.1 Tipi arhitektur sistemov za upravljanje spletnih vsebin
Arhitekture v sistemih za upravljanje spletnih vsebin ločimo na dva tipa. Ločujejo se po
modularnosti in linearnosti takšnih sistemov. Slednje opišemo v naslednjem podpoglavju.
3.1.1 Modularnost in linearnost sistemov za upravljanje z vsebinami
Kako organizirati in upravljati informacije v sistemu CMS je v veliki meri odvisno od tega,
kako posamezne vsebine gredo skupaj. Na eni strani so sistemi, ki vsebujejo povsem
samostojne in modularne dele vsebin, takšne sisteme imenujejo komponentni sistemi za
upravljanje z vsebinami. Na drugi strani so deli vsebine, povezani v celoto v posebnem
vrstnem redu, in takšne sisteme imenujemo kompozicijski sistemi za upravljanje z
vsebinami. Obstajajo tudi sistemi, ki imajo atribute obeh, komponentnih in kompozicijskih
sistemov za upravljanje z vsebinami. Vsi ti komponentni in kompozicijski sistemi za
upravljanje vsebin združujejo značilnosti organiziranja vsebin, vendar na različen način, in
te načine bomo spoznali v nadaljevanju.
Večina sistemov za upravljanje vsebin je podobnih upravljanju podatkov, saj obravnavajo
dele vsebine kot ločene entitete, ki so med seboj povezane samo z meta podatki. Na
primer, tipičen spletni CMS lahko upravlja nekaj ducat različnih tipov vsebin, kjer ima
vsak svojo interno strukturo. Vsak del vsebine (komponenta) je z ostalimi kosi vezan le
šibko. Čeprav je za publikacijo treba združiti tudi več delov, je vsak del namenjen temu, da
stoji posamezno. Takšen sistem CMS je zelo podoben knjižnici; vsak del vsebine ima
svojo domeno (knjiga), ampak je še vedno povezan z drugimi koščki z meta podatki
(katalog knjig). Takšne modularne sisteme imenujemo komponentni sistemi za upravljanje
12 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
vsebin, saj je primarni poudarek na zbiranju, upravljanju in objavi ločenih delov informacij
oz. posameznih komponent.
Nasprotno nekateri sistemi za upravljanje vsebujejo vsebine, ki so bolj tesno povezane
skupaj, podobno kot knjiga. V veliko knjigah vsak del vsebine sodi natanko v delček
celotnega obrisa celotne vsebine. Skozi večino vsebine teče pripoved, kjer si delčki sledijo
v določenem zaporedju in tako tvorijo združeno celoto. Če komponentni sistemi združujejo
posamezne ločene koščke vsebine in jih organizirajo v širšo publikacijo, imajo
kompozicijski sistemi v celoti integrirano vsebinsko osnovo, ki pa se lahko uporablja za
zelo različne publikacije. Takšne linearne sisteme imenujemo kompozicijski sistemi, saj
želimo navesti, da je poudarek na zbiranju, upravljanju in objavi enotne, tesno povezane
kompozicije.
Vrste procesov, ki jih potrebujemo za delo z modularnimi komponentami, se razlikujejo od
tistih, ki jih potrebujemo v linearni in kompozicijski vsebini. Na primer, v komponentnem
sistemu bomo potrebovali orodja, s katerimi bomo locirali informacije in jim dodelili
želeno strukturo, s katero bo naša spletna stran pridobila neko smiselno združeno celoto.
Medtem pa imamo v kompozicijski vsebini že precej dober vpogled v vsebino in njeno
strukturo, vendar potrebujemo orodja, s pomočjo katerih izvlečemo želeni delček vsebine,
ki ga želimo prikazati na določeni strani. Procesi za izgradnjo spletne strani so zato v obeh
vrstah sistemov drugačni, saj smo v prvem primeru gradili vsebino navzgor, v drugem
primeru pa smo jo pridobili iz osnovne vsebine.
Nekje vmes med tema dvema modeloma leži shematski sistem CMS, saj vsebuje atribute
obeh vrst sistemov. Kot v kompozicijskem sistemu vsebuje tudi shematski sistem splošen
oris vsebine, v katerem je na voljo vsa vsebina. Vendar se podobno kot pri komponentnem
sistemu CMS celotna vsebina v repozitoriju ne bere v enotnem zaporedju, saj je na voljo
več različnih tipov vsebin, ki so med seboj nepovezani, in pri njih ni mišljeno, da se berejo
v zaporedju [2].
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 13
Tabela 1: Primerjava komponentnega in kompozicijskega sistema CMS.
Komponentni sistemi Kompozicijski sistemi
Zbiranje Urejanje je mogoče s strani
poljubnega števila ljudi, ki se
ne poznajo med seboj in ne
poznajo drugih vsebin kot te, ki
jih urejajo. Obstoječe vsebine
se lahko enostavno združijo iz
zunanjih virov. Vsebina je
sestavljena iz posameznih
delčkov, ki niso organizirani v
linearnem zaporedju.
Urejanje poteka s strani tistih, ki
poznajo in razumejo, kako se
vsebine, ki jih urejajo, nanašajo na
vsebine, shranjene v sistemu.
Obstoječe nove vsebine je težko
integrirati v sistem. Vsebine se
prilegajo (navadno linearno)
strukturi, iz katere izhaja tudi del
njihovega pomena.
Upravljanje Vsebina se združuje šibko in
vertikalno. To pomeni, da so
povezave med vejami v
drevesu vsebine šibke.
Primarne so povezave v
vertikali na prvem nivoju
podkategorij sistema.
Vsebine se združujejo tako
vertikalno kot tudi horizontalno.
Povezave med posameznimi
vejami vsebine so močne; smisel
se odraža v strukturi vsebine.
Povezave do drugih kategorij so
na vseh nivojih.
Objavljanje Objavljanje obsega izbiranje in
montažo želenih delov vsebine.
Izziv objave je pridobitev
rezultata in ne vnovično
zbiranje posameznih kosov
informacij.
Objavljanje obsega pridobivanje
ustreznih delov vsebine iz celote.
Izziv objave je pridobivanje
rezultata kot le odlomka iz celotne
pripovedi.
3.1.2 Komponentni sistemi za upravljanje vsebin
Komponentni sistem CMS je tipičen sistem, ki bi ga uporabili za upravljanje spletnih
vsebin. Sistem CMS bi tako zajemal različne tipe vsebin, s pomočjo katerih organiziramo
vsebine, ki jih določena organizacija potrebuje oziroma zbira, upravlja in objavlja.
Posamezne komponente vsebin so med seboj le šibko povezane, skupno jim je le to, da se
nahajajo v skupni hierarhiji strani. Če ima sistem tesnejše relacije, komponente med seboj
povezuje enak nabor ključnih besed in tako ustvari niz sklicevanj med njimi. Kljub temu
pa so posamezni koščki vsebine razmeroma samostojni.
Poglejmo si primer tipičnih tipov vsebin v komponentnem sistemu, ki so ponazorjeni v
tabeli 2.
14 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Tabela 2: Primer tipičnih tipov vsebin v komponentnem sistemu CMS.
Tip vsebine Opis
Lokacije Skupina shranjuje lokacije, kjer organizacija posluje.
Izdelki Skupina je namenjena izdelkom in storitvam, ki so predstavljeni z
uvodnimi informacijami in jih za svoje potrebe potrebujejo stranke.
Dogodki Ta skupina shranjuje informacije o dogodkih, ki jih organizacija namerava
opraviti ali pa jih je že opravila. Najboljša praksa je, da organizacije z
velikim številom dogodkov uporabijo ločen sistem za upravljanje z dogodki
in ga povežejo s sistemom CMS s predlogami.
Prispevki Skupina se uporablja za vse komponente, ki imajo obliko člankov.
FAQs Skupina shranjuje pare vprašanj in njihovih odgovorov.
Stranke Skupina shranjuje informacije o strankah in njihovih interakcijah z
organizacijo.
Prenosi Skupina se uporablja za vse datoteke, ki jih organizacija ponuja za prenos z
njihove spletne strani.
Iz tabele 2 so razvidni različni tipi vsebin, ki ponazarjajo glavna področja v tipični spletni
strani nekega podjetja. Vsak tip vsebine je med seboj nepovezan in lahko rečemo, da je
področje zase. Vsak tip je neodvisen drug od drugega in je samostojen in smiseln z vidika
zbiranja, upravljanja in objave. Tako sta na primer vsebini v skupinah Izdelki in FAQs
povsem ločeni ena od druge in s stališča avtorja temu ni treba poznati prve vsebine, če želi
urejati slednjo, saj je znanje iz drugih tipov vsebin povsem nepotrebno.
3.1.3 Kompozicijski sistemi CMS
V nasprotju s standardnimi komponentnimi sistemi CMS, ki so osredotočeni predvsem na
sestavljanje vsebine iz komponent z različnimi viri, je kompozicijski sistem CMS
osredotočen na zbiranje, upravljanje in objavo vsebine, ki je med seboj prepletena in je
sestavljena v eni sami pripovedi (kot npr. knjiga). Posamezne vsebinske komponente v
kompozicijskem sistemu med seboj niso ločene in jih ni mogoče izvleči posamezno, saj bi
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 15
potem njihova vsebina postala nejasna, ker ni podana v celoti. Takšen kompozicijski
sistem ima vse vidike zbiranja, upravljanja in objave, zato je iz vsebine mogoče ustvariti
več različnih publikacij, kot so denimo knjiga, spletna stran ali druge publikacije.
Tabela 3: Primer tipičnih tipov vsebin v kompozicijskem sistemu CMS.
Tip vsebine Opis
Poglavje Poglavja so imenovani bloki besedila, ki pokrivajo eno temo. Poglavja so v
vsebini lahko vgrajena v druga poglavja, zato je repozitorij navadno v
večini sestavljen iz poglavij znotraj poglavij.
Koncept Koncepti so dva ali trije odstavki besedila, ki ponazarjajo eno izmed idej.
Koncepte najdemo znotraj poglavij.
Mediji Mediji so slike ali galerije s slikami in njihovimi napisi, ki se nahajajo v
konceptih ali poglavjih.
Iz tabele 3 je razvidno, da so tipi vsebine v kompozicijskih sistemih povsem drugačni od
tistih v komponentnih sistemih. Kompozicijski sistem ločuje vsebino po komponentah, ki
so med seboj povezane, saj so podane v določenem vrstnem redu. Berejo se enako kot na
primer knjiga.
3.1.4 Shematski sistemi CMS
Med modularnostjo in fleksibilnostjo tradicionalnih komponentnih sistemov CMS in tesno
prepletenih kompozicijskih sistemov obstajajo tudi tretji tipi sistemov, ki vsebujejo
lastnosti obeh tipov. Takšen sistem omogoča fleksibilnosti različnih tipov vsebine, kot je to
pri komponentnem sistemu, in hkrati omogoča visok nivo integriranosti, kot je to pri
kompozicijskih sistemih CMS. Kar omogoča takšen hibridni sistem, je shema XML ali
podatkovna baza, ki služi kot osnova strukturi vsebine.
Kot v komponentnem ali kompozicijskem sistemu lahko shematski sistem CMS proizvede
široko paleto publikacij. Publikacije tudi tukaj združujejo vsebine v tipe vsebin tematsko,
ne glede na to, kako bodo objavljene. Tako kot v drugih sistemih tudi tukaj publikacije
proizvajamo z združevanjem koščkov vsebin oziroma komponent, ko želimo vsebine
objaviti.
16 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
3.2 Sestavni deli tipičnega spletnega sistema za upravljanje z vsebinami
Spletne strani, ki temeljijo na sistemih CMS, niso nujno 100 % statične niti 100 %
dinamične. Ravno nasprotno, velika večina strani na spletu je delno oboje. Deli spletne
strani so lahko sestavljeni iz statičnih HTML dokumentov, preostale dele pa lahko
dinamično pridobivamo iz podatkovne shrambe. Poleg tega so lahko podatkovne shrambe
različnega tipa in izvora (npr. XML ali SQL), ki pridobivajo različne dele spletne strani
[2].
Na sliki 3.1 vidimo, da lahko imamo spletno stran, ki je kompleksna. Kompleksna je na
dva načina. Prvič, ima veliko programskih in strojnih komponent, ki se skupaj
koordinirajo. Drugič, ima kompleksne informacijske strukture, ki morajo biti shranjene,
pravilno dostavljene in strukturirane. Sistem CMS nam omogoča upravljanje teh
kompleksnih informacij. Če menimo, da so različni deli kode v HTML predlogah
funkcionalnost, potem lahko rečemo, da je tudi funkcionalnost vsebina, ki jo je v sistemih
CMS mogoče zbirati, upravljati in objavljati [2].
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 17
Slika 3.1: Sestavni deli sistema CMS. [vir slike]
V naslednjih alinejah si bomo ogledali sestavne dele tipičnega spletnega sistema CMS.
Aplikacija sistema CMS: Spletna aplikacija sistema CMS je varno nameščena na
našem strežniku in skrbi za zbiranje vsebin posameznih uporabnikov, poskrbi tudi
za upravljanje poteka dela in administracijo. Dejanska arhitektura sistema CMS se
razlikuje od izdelka do izdelka.
Repozitorij: Prav tako na spletnem strežniku leži relacijski ali XML-podatkovni
vir. Repozitorij hrani vse vsebine, administrativne podatke in kakršnekoli druge
vire, ki jih potrebujemo, da lahko ustvarimo spletno stran (kot so grafike in CSS).
HTML-datoteke: Sistem CMS upravlja z datotekami za statični del spletne strani
in jih razporeja.
18 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Podatkovna shramba sistema CMS: To je podatkovna baza, ki je pripravljena na
spletnem strežniku in jo uporabljamo za zagotavljanje dinamične vsebine spletne
strani. Sistem CMS nam izvozi podatke in vsebino iz repozitorija v podatkovno
shrambo sistema CMS.
Drugi podatkovni viri: Na spletno stran lahko povežemo tudi druge podatkovne
vire, ki ne spadajo v okvir sistema CMS. Drugi podatkovni viri lahko delujejo
povsem neodvisno od sistema CMS ali predlog.
Predloge: Uporabljamo niz predlog za publikacije, ki jih lahko povežemo s podatki
iz kateregakoli vira v obliko, ki je potrebna za prikaz na spletni strani. V nekaterih
primerih so podatki podani v statičnih HTML dokumentih, v drugih primerih so
shranjeni v podatkovno bazo na spletnem strežniku.
3.3 Delovanje sistema za upravljanje s spletno vsebino
3.3.1 Podsistem zbiranja in priprave vsebin
Sistem zbiranja v sistemu CMS so procesi, ki se zgodijo, preden je vsebina pripravljena za
objavo. S pomočjo sistema zbiranja spremenimo neobdelane informacije v dobro
organizirane vsebinske komponente [2].
Procesi zbiranja vsebine so sestavljeni iz [2]:
Izdelovanje vsebine: sprotno ustvarjanje vsebine;
pridobivanje: zbiranje vsebine iz obstoječih virov;
pretvarjanje vsebine: odstranitev nepotrebnih informacij in pretvorba;
združevanje vsebine: urejanje vsebine, ločitev po komponentah in obdajanje
vsebine z metapodatki;
storitve zbiranja vsebin: različne podporne storitve in funkcije, ki jih potrebujemo
za zbiranje vsebine (npr. spletni obrazci, s katerimi vnašamo vsebino v
komponento).
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 19
Slika 3.2: Procesi in aktivnosti v sistemu zbiranja vsebin.
Za opis procesov in aktivnosti v sistemu zbiranja vsebin smo uporabili notacijo BPMN 2.0.
Legenda uporabljenih simbolov v diagramu:
- Začetni dogodek
- Vzporedni prehod
- Potek zaporedja
- Povezava
- Tok sporočila
- Opravilo
- Ponavljajoče opravilo
20 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
- Ad – hoc podproces (v vašem primeru)
- Podatkovna shramba
- Podatkovni predmet
- Končni dogodek
3.3.2 Podsistem upravljanja vsebin
Podsistem upravljanja v sistemu CMS skrbi za dolgoročno skladiščenje vsebinskih
komponent in različnih drugih sredstev. Podsistem upravljanja zajema [2]:
repozitorij: nabor podatkovnih baz, datotečnih direktorijev in drugih sistemskih
struktur, ki hranijo vsebino oziroma vse druge podatke, povezane s sistemom
CMS;
sistem verzij: verzioniranje pomeni sposobnost shranjevanja in obnovitve starejše
kopije vsebine, ki jo imamo shranjeno;
nadzor virov: sistem nadzora virov nam pomaga preprečiti, da pride do težav, ki
jih povzročijo neavtorizirane spremembe ali sočasno urejanje vsebine več avtorjev.
Vsebuje nadzor souporabe, zaklepanje, potrjevanje sprememb/posodobitev
sprememb, opozorila, revizijsko sled;
lokalizacijo: s pomočjo lokalizacije v sistemu omogočamo proizvodnjo različnih
različic vsebin, ki so namenjene različnim ciljnim skupinam ali jezikom;
nadzor delovnega toka: sistem delovnega toka organizira in zajema opravila, ki
jih akterji upravljajo nad objekti sistema CMS;
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 21
administracijski sistem: administracijski sistem je odgovoren za nastavitvene
parametre in strukture sistema CMS. Pogosto zajema administrativno ploščo,
uporabniško administracijo, dnevnik, poročila, varnost, podporo za povezave in
medije ter robustnost.
Slika 3.3: Procesi repozitorija v podsistemu upravljanja vsebin.
3.3.3 Podsistem objave vsebin
Sistem objavljanja je odgovoren, da izvleče dostopne strukture in komponente iz
repozitorija in jih združi z dizajnom, postavitvijo in oblikovanjem ter tako ustvari ciljno
publikacijo [2].
Sistem objavljanja obsega naslednje [2]:
predloge za objavo: aplikacija gradi publikacije avtomatično iz predlog;
22 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
storitve objave: je niz orodij, s katerimi nadzorujemo, kaj je objavljeno in kako je
objavljeno;
povezave: orodja in metode, ki se uporabljajo za vključevanje podatkov iz drugih
sistemov (izven našega sistema CMS) in končnih publikacij;
spletne publikacije: najpogostejši izhodni tok, podprt v večini sistemov CMS;
druge publikacije: druge vrste publikacij, ki niso spletne publikacije, vključno z
drugimi elektronskimi publikacijami, tiskanine in sindikacije (kot je na primer
RSS).
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 23
4 OGRODJA ZA RAZVOJ APLIKACIJ
4.1 Predstavitev ogrodja Zend framework
Zend Framework je odprtokodno objektno orientirano ogrodje za razvoj spletnih aplikacij
z uporabo PHP-verzije 5+. Zend Framework je večkrat imenovan tudi knjižnica
komponent, saj ima veliko med seboj slabo povezanih sestavnih delov ali komponent, ki se
lahko uporabljajo samostojno.
Omogoča do 4/5 vnovične uporabe funkcionalnosti, ki jo potrebuje tipična spletna
aplikacija, za ostalih 20 % prilagoditev pa razvijalec poskrbi sam. Zend Framework
omogoča tudi uporabo vzorca MVC (angl. Model-View-Controller), ki vključuje uporabo
predlog PHP (angl. layout), ki jih je mogoče uporabiti v okviru spletne aplikacije.
Zasnovan je po principu enostavnosti in produktivnosti, saj omogoča razvoj varnih,
zanesljivih in modernih aplikacij in spletnih storitev WEB2.0 in že omogoča enostavno
uporabo zunanjih storitev ponudnikov, kot so Google [https://maps.google.si], Amazon
[https://www.amazon.com], Yahoo! [https://developer.yahoo.com/geo/geoplanet/] in Flickr
[https://www.flickr.com/]. V ogrodju Zend Framework je poudarek na hitrem razvoju
programske opreme (na tehniki angl. Rapid Application Development, RAD),
standardizaciji pogostih opravil in uporabi koncepta računalništva v oblaku [9, 10].
4.2 Vzorec programiranja MVC
Kratica MVC predstavlja arhitekturni vzorec za ločitev predstavitve podatkov od podatkov
in njihove obravnave. S pomočjo vzorca MVC je programska oprema razdeljena na tri
medsebojno povezane dele. Prav tako pa ločuje interno predstavitev informacij od
predstavitve, ki jo vidi končni uporabnik [11].
24 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Vzorec MVC je postal de-facto standard v zasnovi sodobnih spletnih aplikacij. Večino
kode v spletni aplikaciji lahko delimo v naslednje tri kategorije: predstavitvena, poslovna
logika in dostop do podatkov. Vzorec MVC loči komponente za model, pogled in
kontroler. Končni rezultat je takšen, da imamo kodo za predstavitev ločeno v enem delu
aplikacije, poslovno logiko v drugem delu in dostopanje do podatkov v tretjem delu.
Številni razvijalci so to dobro opredeljeno ločitev podprli, saj je njihova koda bolje
organizirana, še posebej ko več razvijalcev dela na eni aplikaciji. Takšna implementacija
modelov pa prav tako spodbuja vnovično uporabo napisanih delov kode [12].
MVC vzorec se nanaša na arhitekturo, ki uporablja komponentno zasnovo. Ločene
komponente so model, pogled in kontroler. Centralna komponenta je model, ki zajame
problemsko domeno. Model neposredno upravlja aplikacijske podatke, logiko in vsa
potrebna pravila. Pogled je zadolžen samo za predstavitev informacij uporabniku, kontroler
pa je tisti, ki poskrbi za prejemanje vhodnih parametrov in jih pretvori v ukaze za pogled in
model (ustreza v načinu Fat Model/Tiny Controller).
Slika 4.1: Diagram zaporedja v notaciji UML za vzorec MVC.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 25
4.3 Zmožnosti ogrodja
Zmožnosti ogrodja so naslednje [vir]:
vse komponente so objektno orientirane, napisane v PHP 5+;
arhitektura z uporabo-po-volji s šibko povezanimi komponentami in minimalnimi
medsebojnimi odvisnostmi;
razširljiva MVC-implementacija s podporo postavitvam strani in predlogam, ki
temeljijo na PHP-ju;
podpora za več podatkovnih sistemov in ponudnikov, kot so na primer MariaDB,
MySQL, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite in Informix
Dynamic Server;
omogočanje sestavljanja in dostave e-pošte, pridobivanje s pomočjo protokolov
Maildir, POP3 ali IMAP4;
fleksibilen sistem za predpomnjenje s podporo za več tipov ozadja, kot sta na
primer pomnilnik ali datotečni sistem (komponenta Zend_Cache);
Zend_Test zagotavlja orodja za lažje testiranje enot v okviru aplikacije Zend
Framework MVC. Zend Framework vsebuje tudi komponento za splošno beleženje
(Zend_Log);
z ogrodjem Zend Framework poenostavljamo ustvarjanje in obravnavanje spletnih
obrazcev v spletni aplikaciji. To je mogoče s pomočjo filtriranja in validacije polj,
nastavitvami vrstnega reda in grupiranja (komponente Zend_Form, Zend_Filter,
Zend_Validate);
komponenta Zend_Session je objektno orientirana implementacija za seje v PHP-
ju. Zagotavlja standardiziran objektno orientiran vmesnik za delo z imenskimi
prostori znotraj standardnega mehanizma sej v PHP-ju;
Zend_Acl omogoča lahek in fleksibilen seznam za nadzor dostopa (angl. Access
Control List) za implementacijo upravljanja pravic;
z Zend_Locale in drugimi razredi za lokalizacijo jezika uporabniškega vmesnika,
formata števil in na primer datuma, je mogoče spletno aplikacijo popolnoma
prirediti tako, da jo lahko uporabljamo po vsem svetu. Zend Framework nudi
celovito podporo za namene internacionalizacije in prevodov;
ogrodje nudi več pomožnih komponent, ki jih lahko po potrebi uporabimo v
aplikaciji. Imena komponent nam povedo, za kaj se uporabljajo, nekatere med njimi
26 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
pa so naslednje: Zend_Auth, Zend_Barcode, Zend_Captcha, Zend_Config,
Zend_Date, Zend_Feed, Zend_Json, Zend_Ldap, Zend_OAuth, Zend_OpenId,
Zend_Pdf, Zend_Registry, Zend_Service, Zend_XmlRpc in druge.
4.4 Razvoj spletnih aplikacij
Aplikacije Zend Framework lahko poganjamo na vseh strežnikih, ki podpirajo PHP in
izpolnjujejo tehnične zahteve.
Zend Technologies ponuja okolje za poganjanje PHP-ja, Zend Server (ali Zend Server
Community Edition), ki naj bi bil optimiziran za zagon spletnih aplikacij Zend Framework.
Zend Server v inštalaciji vključuje Zend Framework, skupaj s PHP-jem in z vsemi
potrebnimi razširitvami. V skladu z Zend Technologies Zend Server ponuja boljšo
zmogljivost za PHP in še posebej za aplikacije Zend Framework, saj vključuje
pospeševanje ukazne kode (opcode) in več načinov predpomnenja (cache) ter omogoča
spremljanje in diagnostiko pri zagonu aplikacij.
Zend Studio je integrirano razvojno okolje (IDE), ki vključuje funkcionalnosti za
integracijo z ogrodjem Zend Framework. Nudi pogled po vzorcu MVC-ja, generiranje
MVC-kode, saj temelji na orodju Zend_Tool. Omogoča tudi formatiranje kode,
dokončanje kode, pomočnika za parametre in ostale dodatne funkcionalnosti.
Zend Studio ni brezplačna programska oprema, medtem ko ogrodje Zend Framework in
Zend Server Community Edition sta.
Razvijalci, ki želijo uporabljati drug strežnik ali drugo integrirano razvojno okolje (IDE),
lahko uporabljajo orodje, kot je Eclipse PDT, ki deluje s strežnikom Zend Server. Na
spletni strani Zend je na voljo tudi pred-nastavljen brezplačen Eclipse PDT z Zend
razhroščevalcem (Zend Debug).
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 27
4.5 Programski vmesnik Simple Cloud API
Septembra 2009 je Zend Technologies najavil, da bo skupaj s tehnološkimi partnerji, kot
so Microsoft, IBM, Rackspace, Nirvanix in GoGrid, razvil skupen aplikacijski programski
vmesnik (angl. Application Programming Interface, API) za aplikacije in storitve v
računalniškem oblaku in ga poimenoval Simple Cloud API. Tako so izboljšali
prenosljivost aplikacij v PHP-ju v vseh večjih oblačnih platformah. Projekt je del ogrodja
Zend Framework in je predstavljen na spletni strani ogrodja. Adapterji za priljubljene
oblačne storitve so v ogrodju Zend Framework že dosegli kakovost, ki omogoča
komercialno uporabo [13].
28 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
5 RAZVOJ SPLETNE TRGOVINE V SISTEMU PIMCORE
5.1 Opis poslovnega problema
Pimcore je najbolj fleksibilna platforma za spletno upravljanje vsebin, prijazna tako
uporabnikom in razvijalcem. Omogoča izjemne digitalne izkušnje, saj nudi upravljanje in
urejanje vseh vrst vsebin za različne naprave in kanale. Poleg upravljanja vsebin nudi tudi
upravljanje digitalnih sredstev (angl. Digital Assets Management, DAM) in upravljanje z
informacijami produktov (angl. Product Information Management, PIM), ki nudita celovito
osnovo za upravljanje velikih količin informacij, kot jih potrebujemo npr. v elektronskem
poslovanju. Ker ocenjujem, da je platforma primerna, uporabna, fleksibilna in ker v osnovi
za enkrat ne nudi funkcionalnosti za elektronsko poslovanje, sem se odločil, da z orodji, ki
so nam na voljo v Pimcore, implementiram vtičnik, ki bo razširil funkcionalnosti sistema,
da bo ta uporaben za elektronsko poslovanje. Tako bomo povečali uporabnost sistema
Pimcore na področjih, kjer zaenkrat še ni prisoten, prav tako pa bomo razvit vtičnik lahko
ponovno uporabili v proizvodnem okolju.
Tako smo razvili dodatek (vtičnik) v sistemu za upravljanje z vsebinami Pimcore, ki nam
služi kot pripomoček za e-trgovanje, saj ima najpomembnejše funkcionalnosti spletne
trgovine. Tako smo v modulu dodatka po vzorcu MVC implementirali kontrolerje in
posamezne akcije kontrolerja, s pomočjo katerih je mogoč ogled izdelkov, zaračunavanje,
pošiljanje e-pošte in ostale funkcionalnosti, povezane s spletno trgovino. Definirali smo
statične povezave, ki so povezane z akcijami, in prikazali definicije razredov, ki jih
potrebujemo za namene spletne trgovine.
Aplikacijo za spletno trgovino smo razvili skladno s sistemom dodatkov v platformi
Pimcore. Tako nam je uporaba platforme Pimcore koristila, da bomo razviti dodatek lahko
znova namestili v katerikoli drug sistem Pimcore in ga tako znova uporabili. V naši spletni
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 29
trgovini smo uporabljali vse koncepte platforme Pimcore kot tudi sistem za upravljanje z
informacijami produktov (angl. Product Information Management, PIM).
5.2 Načrtovanje rešitve
Aplikacijo smo razvijali v razvojnem okolju Eclipse Kepler 4.3.2 PDT IDE. Za spletni
strežnik smo uporabljali Apache 2 z nameščenim PHP-jem 5.4, ki je popolnoma skladen z
razvijalnim okoljem, ogrodjem Zend Framework in platformo Pimcore.
5.2.1 Predstavitev funkcionalnih zahtev rešitve
Uporabnik ima možnost prijave in registracije v spletno aplikacijo, kjer se bodo o
uporabniku shranjevali podatki, kot je polno ime in priimek, naslov in elektronski naslov.
Uporabnik ima tudi možnost pregleda podstrani o podjetju in pregled prve strani. Lahko
pregleduje posamezne kategorije produktov in produkte, opravlja pa lahko tudi nakupe.
Administrator je akter, ki upravlja z produkti in kategorijami ter nekaterimi nastavitvami
spletne trgovine, kot so na primer davčne stopnje. Slika 5.1 prikazuje diagram primerov
uporabe spletne trgovine v notaciji UML verzija 2.0 ki je izdelana v orodju Visual
Paradigm for UML Communitiy Edition 10.1.
30 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Slika 5.1: Diagram primerov uporabe.
5.2.2 Razredni diagram
Slika 5.2 prikazuje razredni diagram spletne trgovine spletarjenje.tk. Prikazane so vse
tabele, ki so uporabljene v spletni trgovini. Iz diagrama je razvidno, da potrebujemo tabele
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 31
za prikaz produkta, kjer se največ tabel uporabi za shranjevanje specifičnih atributov, ki jih
poimenujemo specification<ImeKategorije>. Potrebujemo tudi tabele za shranjevanje
proizvajalca artikla, davčne stopnje, priporočenih artiklov, kategorije in uporabnike ter tudi
tabeli za vodenje evidence naročil. Potrebovali bomo tudi tabelo za nastavitve.
Slika 5.2: Razredni diagram aplikacije za spletno trgovino.
32 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
5.2.3 Shranjevanje podatkov
Za shranjevanje podatkov smo v aplikaciji »spletarjenje.tk« uporabljali sistem za
upravljanje z informacijami produktov (angl. Product Information Management, PIM) v
Pimcore sistemu CMS. Upravljanje z informacijami produktov je v sistemu Pimcore
realizirano s kreiranjem razredov, ki jih uporabnik nastavi z grafičnim vmesnikom v
ozadju sistema. Definiranje razreda sestavljajo opredelitev in definiranje atributov razreda
in logično razporejanje atributov v različne postavitve za namene strukturiranja podatkov.
Različne gradnike lahko tako grupiramo v panele ali zavihke, saj jih je tako mogoče
združevati po uporabi in tako ločiti njihovo uporabo v grafičnem vmesniku aplikacije. To
nam omogoča logično strukturiranje atributov razreda na manjše enote podatkov, ki
spadajo skupaj.
Atributi razreda so definirani iz množice vnaprej določenih tipov podatkov. Ti tipi
podatkov razreda lahko opredelijo različne vrste podatkov, ki jih realiziramo z različnimi
gradniki, kot so na primer besedila, števila, slike, polje z WYSIWYG-om (angl. What You
See Is What You Get), reference na drug objekt idr. Vse možne tipe gradnikov v razredu
lahko najdemo v tabeli 4.
Tabela 4: Tipi gradnikov v razredih v sistemu Pimcore.
Naziv Opis
checkbox potrditveno polje
country spustni seznam držav, ki so definirane v Zend_Locale
date polje za datum
date & time polje za datum in čas
fieldcollections zbirka polj
geopoint točka Google Maps na zemljevidu z zemljepisno dolžino in širino
geobounds razširitev Google Maps za opredelitev geografske meje
geopolygon razširitev Google Maps za definiranje geografskega območja
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 33
Naziv Opis
href referenca na dokument Pimcore, objekt ali sredstvo
image drag & drop področje za prikaz sredstva Pimcore
input tekstovno polje
language polje Dripdown s seznamom jezikov iz Zend_Locale
localizedfields lokalizirana skupina polj za vnos po sistemskih jezikih
link povezava
multihref zbirka referenc na dokumente Pimcore, objekte ali sredstva
multiselect kombinirano polje multiselect
nonownerobjects referenca na objekt, ki je v lasti drugega objekta
numeric polje za vnos številke (spinner)
objects zbirka objektov Pimcore
objectbricks razširitev skupin atributov za vključitev v posamezne razrede
password polje za geslo
select spustni seznam
slider polje za številke z drsnikom
table tabela
textarea polje za vnos besedila
video polje za video
wysiwyg spletni urejevalnik WYSIWYG
user spustni seznam z uporabniki Pimcore
34 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
5.3 Implementacija vtičnika
5.3.1 Kreiranje razredov Pimcore s pomočjo integriranega okolja PIM
Izdelava razredov v sistemu Pimcore poteka prek grafičnega uporabniškega vmesnika v
ozadju sistema Pimcore. Za upravljanje razredov mora imeti uporabnik nastavljene
primerne pravice. Ker izdelava poteka preko GUI-ja, se vse datoteke in nastavitve za
razrede shranjujejo avtomatično in z njimi upravlja sistem. Razrede gradimo z gradniki, ki
so nam na voljo v sistemu (tabela 4). Nekateri gradniki so uporabljeni za shranjevanje
podatkov, medtem ko so drugi na voljo za logično strukturiranje podatkovnih gradnikov v
skupine in različne postavitve elementov.
V spletni aplikaciji spletarjenje.tk potrebujemo naslednje razrede:
Object_Product – informacije o artiklu
Object_ProductBrand – uporabljamo za shranjevanje posameznih znamk
Object_ProductCategory – informacije o skupini artiklov
Object_ProductProfileTaxRate – razred za uporabo davčnih stopenj v artiklih
Object_ProductRecommendations – razred za priporočene artikle
Object_OnlineShopOrder – razred za opravljena naročila
Object_OnlineShopOrderItem – razred za shranjevanje postavk naročila
5.3.1.1 Definiranje razredov
Razred Object_Product nam bo služi za shranjevanje informacij o produktih. Ker je
podatkov produkta veliko, smo v razredu ustvarili pogled po zavihkih. V ta namen smo
uporabili postavitveni element, ki se imenuje »Tab panel« in nam omogoča prikaz po
zavihkih. Ko smo določili pogled po zavihkih, smo za pravilno delovanje zavihkov dodali
še en postavitveni element, ki vsebuje dejanske podatkovne gradnike za posamezen
zavihek in se imenuje panel. Ker smo podatke želeli prikazovati v štirih zavihkih, smo v
tab panel dodali štiri panele in jih poimenovali: General, Categories, Prices in Specific
Attributes.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 35
V razredu Object_Product smo za opis produkta potrebovali naslednje podatke:
productNumber – interna številka produkta
title – naslov produkta
shortDescription – kratek opis
description – opis
brand – referenca na objekt za predstavitev znamke
images – slike produkta
categories – seznam referenc kategorij, v katere spada produkt
regularPrice – cena produkta
reducedPrice – spletna cena
taxRate – referenca na objekt za stopnjo davka
specificAttributes – podatki, ki so specifični za posamezni produkt
Pred nadaljevanjem smo za lepši pregled podatkov dodali tudi element za postavitev
podatkov fieldset. V te elemente smo nato vključili posamezne gradnike, ki bodo
shranjevali podatkovne spremenljivke razreda. Na sliki 5.3 vidimo definicijo razreda za
produkt.
36 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Slika 5.3: Prikaz razreda Object_Product z dodanimi lokaliziranimi polji.
Ker smo aplikacijo zgradili tako, da bo podpirala več jezikov, smo osnovne podatke artikla
shranjevali v večjezičnih poljih. Za ta namen smo uporabili gradnik za skupino
lokaliziranih polj (localized fields). Skupina kreira dodana polja za vsak sistemski jezik
posebej in tako omogoča shranjevanje postavk glede na različne jezike. V to skupino smo
vključili naslov artikla kot tudi kratek in daljši opis. Ostala polja ne potrebujejo
večjezičnosti, zato smo jih dodali izven elementa za lokalizirana polja. Za naslov smo
uporabili navadno vnosno polje, medtem ko smo za opis in kratek opis uporabili polja
WYSIWYG.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 37
Slika 5.4: Pogled za urejanje objekta razreda Product.
V razredu Object_Product smo dodali element, ki definira znamko produkta. Znamke smo
shranjevali v posebni mapi, zato smo v naš razred za produkte dodali le referenco na
poljuben objekt znamke. Sistem Pimcore za te namene v razredih uporablja poseben
gradnik, ki se imenuje href. Z njim določimo referenco na objekt, nastavimo pa lahko tudi
omejitev, za katere objekte lahko hranimo reference v določenem elementu href. V
nastavitvah elementa zato označimo Object Restrictions in razred Object_ProductBrand.
Tako določimo veljaven tip razreda za referenco, ki jo uporabljamo za znamke, in je razred
Object_ProductBrand. Na sliki 5.5 vidimo grafični vmesnik za nastavitve omejitev
določenih razredov.
38 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Slika 5.5: Nastavitev omejitev tipa razreda v gradniku href.
V našem razredu Object_Product smo želeli shranjevati tudi spremenljivke, ki so značilne
samo za določene vrste produktov. Da smo razred Object_Product lahko razširili z atributi,
ki so določeni samo v nekaterih produktih, smo v razredu uporabili gradnik, ki se imenuje
objectbricks, in ga poimenovali specificAttributes. Ta gradnik nam omogoča, da lahko
razširimo razred z dodatnim nizom atributov, ne da bi spreminjali osnovno definicijo
razreda. Z osnovno definicijo razreda Object_Product želimo zagotoviti osnovne atribute,
ki so na voljo v vseh produktih, medtem ko z objectbricks želimo zagotoviti nestalne
atribute, ki jih imajo le določene vrste produktov.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 39
Slika 5.6: Končna definicija razreda Object_Product.
Po enakem postopku smo v ozadju sistema Pimcore pripravili še druge razrede, s katerimi
prikazujemo priporočene produkte, naročila in znamke. Zaradi prostora v diplomskem delu
slike definicij nismo predstavili, saj je končen rezultat viden v predstavitvi razvite
aplikacije.
5.3.2 Definicija statičnih povezav za spletno trgovino
Statične povezave se uporabljajo za opredelitev vzorcev URL-povezav, ki se preslikajo v
določeno akcijo. V pogledu Static Routes smo zato nastavili povezave za vse akcije, ki jih
potrebujemo za našo spletno trgovino. V našem vtičniku za spletno trgovino smo za vse
potrebne akcije uporabljali en kontroler. Poimenovali smo ga skladno po ogrodju Zend
Framework Shop_ShopController in v njem implementirali naslednje akcije:
homeAction – prikaz priporočenih artiklov in hkrati prva stran trgovine
40 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
categoryAction – prikaz za kategorije, prikaz artiklov za določeno kategorijo in vse
podkategorije
detailsAction – prikaz podrobnosti artikla
cartAction – vse funkcionalnosti, povezane s košarico
checkoutAction – blagajna za nakup artiklov
S pomočjo povezav, ki smo jih ustvarili, se bo v aplikacij URL-naslov v objektu
Zend_Route preslikal v želene akcije kontrolerja, ki smo jih našteli prej. To se zgodi v
procesiranju zahteve, preden se kličejo posamezne akcije kontrolerja. Tako aplikacija ve, v
katero akcijo je treba preslikati dani URL-naslov. Povezave kreiramo z grafičnim
uporabniškim vmesnikom, kot je to prikazano na sliki 5.7.
Slika 5.7: Pogled za urejanje statičnih povezav.
V prvem polju urejanja statičnih povezav smo vnesli ime povezave. Sledil ji je vzorec
regex, ki nam koristi za prepoznavanje URL-naslova in preslikavo v akcijo, ki jo
definiramo s parametri Module, Controller in Action. Ker smo želeli povezavo na naš
vtičnik za spletno trgovino, smo te parametre označili kot modul Shop, kontroler Shop in
želeno akcijo. Polje Reverse nam koristi za kreiranje URL-naslova kjerkoli v naši
aplikaciji. Za prepoznavanje parametrov v URL-povezavi nam koristi polje Variables, kjer
nastavimo parametre, ki so navzoči v URL-povezavi.
5.3.3 Implementacija kontrolerja za spletno trgovino
5.3.3.1 Metoda init()
Metoda init() je standardna inicializacijska metoda kontrolerja v MVC-modelu ogrodja
Zend Framework, ki se avtomatsko kliče ob vsaki zahtevi kontrolerja. Pri njeni uporabi
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 41
smo morali paziti, da smo klicali tudi metodo očetovskega razreda, saj je razred kontrolerja
dedovan iz razreda Shop_Controller_Action.
parent::init();
Izvorna koda 1: Kličemo očetovsko funkcijo za inicializacijo kontrolerja.
V inicializacijski metodi init() smo nastavili nekatere pomočnike, ki smo jih lahko
uporabljali skozi zahteve, ki se vršijo v kontrolerju. Tako smo uporabljali objekt razreda
Dk_Pimcore_Objects_Helper, saj je to naš model in poenostavlja uporabo objektov
Pimcore, tako da združuje nekatere uporabne funkcionalnosti, ki smo jih uporabljali skozi
akcije kontrolerja.
Objekt smo nastavili v razredno spremenljivko $this->objectsHelper in v spremenljivko
pogleda $this->view->objectsHelper, od koder smo ga lahko nato klicali v okviru akcij in
pogledov kontrolerja.
// shranemo instanco objekta za pomočnika Pimcore razredov $this->objectsHelper = new Dk_Pimcore_Objects_Helper(); $this->view->objectsHelper = $this->objectsHelper;
Izvorna koda 2: Nastavljanje modela za pomočnika objektov Pimcore.
V inicializacijski metodi kontrolerja smo shranili tudi model za pomočnika, ki vsebuje
nekaj uporabnih funkcij, ki jih bomo uporabljali v našem kontrolerju. Razred je shranjen v
knjižnici našega vtičnika, ki se nahaja v mapi /Shop/lib/Dk/Snippets.php. Za nalaganje
knjižnice poskrbi Zend_Autoloader, ki je primerno nastavljen.
// shranemo instanco pomočnika za razne funkcionalnosti $this->snippets = Dk_Snippets::getInstance(); $this->view->snippets = Dk_Snippets::getInstance();
Izvorna koda 3: Shranjevanje pomočnika z raznimi uporabnimi funkcijami.
Skozi implementacijo našega vtičnika za spletno trgovino smo uporabljali tudi datoteko z
nastavitvami, s pomočjo katerih bomo shranjevali nekatere uporabne vrednosti. Datoteka
se shranjuje v formatu XML in zanjo uporabljamo razred Zend_Config_Xml. Nastavitve
nato shranimo v objekt Zend_Registry, s pomočjo katerega so potem na voljo v različnih
sklopih naše spletne aplikacije.
42 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
// naložimo nastavitve v vtičniku spletne trgovine $this->plgConfig =
new Zend_Config_Xml(PIMCORE_PLUGINS_PATH . '/Shop/config.xml'); Zend_Registry::set("Shop_Config", $this->plgConfig);
Izvorna koda 4: Branje nastavitvene XML-datoteke in shranjevanje nastavitev.
5.3.3.2 Implementacija homeAction()
Akcijo homeAction() smo v naši spletni trgovini uporabljali za prikaz priporočenih
produktov, ki jih v ozadju sistema nastavljamo z razredom
Object_ProductRecommendations. Prav tako smo v tem pogledu prikazovali povezave na
korenske postavke kategorij produktov.
Na začetku akcije smo morali aplikaciji sporočiti, da v posameznih pogledih omogoči
uporabo predloge postavitve strani. To naredimo, kot kaže izvorna koda 5.
$this->enableLayout();
Izvorna koda 5: Vklapljanje HTML-predloge naše aplikacije.
V nadaljevanju smo v pogled vključili korenske postavke kategorij, ki so naša iztočna
točka za navigacijo spletne trgovine. Korenske kategorije smo shranili v polje, ki ga
inicializiramo v akciji.
// naložimo mapo ki vsebuje korenske kategorije $categoriesFolder = Object_Folder::getById(
$this->plgConfig->folderids->categories );
$categoriesA = array(); foreach ($categoriesFolder->getChilds() as $category) { if ( $category instanceof Object_ProductCategory) { $categoriesA[$category->getId()] = $category; } } // polje z korenskimi kategorijami podamo v pogled $this->view->rootCategories = $categoriesA;
Izvorna koda 6: Pridobivanje korenskih postavk kategorij in podaja spremenljivke v
pogled.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 43
V pogled smo vključili tudi seznam objektov razreda Object_ProductRecommendations, ki
hranijo objekte priporočenih produktov. Objekte smo naložili le pod pogojem, da so ti v
intervalu med datumoma startDate in endDate.
// naložimo seznam objektov Object_ProductRecommendations $recommendations = Object_ProductRecommendations::getList(); $recommendations->setCondition( "startDate <= ". $today->getTimestamp() ." AND " . "endDate >= ". $today->getTimestamp() ); foreach ($recommendations->load() as $recommendation) { $recommendationsA[$recommendation->getId()] = $recommendation; }
Izvorna koda 7: Pridobivanje objektov za priporočene produkte.
V pogledu za akcijo homeAction() smo nato pridobili priporočene produkte in korenske
kategorije, kot je to prikazano v izvorni kodi 8.
<div class="four columns offset-by-one alpha" style="padding-top:15px;"> <h4><?= $this->translate("KATEGORIJE") ?></h4> <ul class="categories">
<?php foreach ($this->rootCategories as $categoryObject) { ?> . . . <?php } ?> </ul> </div> <div class="nine columns offset-by-one omega" style="padding-top:15px;"> <h4><?= $this->translate("PRIPOROČAMO") ?></h4> <ul class="product-list">
<?php foreach ($this->recommendations as $recommendation) { $i=0; foreach ($recommendation->getRecommendedProducts() as $item) { . . . <?php } } ?> </ul> </div>
Izvorna koda 8: Implementacija pogleda za akcijo homeAction().
44 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
5.4 Predstavitev aplikacije
Spletna aplikacija, ki smo jo razvili kot vtičnik sistema Pimcore, ima vse značilnosti
spletne trgovine in jo je mogoče znova uporabiti v poljubni spletni trgovini, zgrajeni s
pomočjo sistema Pimcore. Njena implementacija je zadostna za osnovno spletno trgovino,
je nadgradljiva in jo je moč spreminjati. Je tesno integrirana z vtičnikom Pimcore
Uporabniki, ki omogoča prijavo uporabnika in shranjevanje profila uporabnika, ki je
shranjen kot objekt Pimcore. Vtičnik za upravljanje uporabnikov je bil prav tako razvit v
sklopu diplomskega dela in omogoča prijavo z identiteto OAuth ponudnikov Facebook in
Google.
V nadaljevanju si bomo ogledali, kako poteka vnos artikla in osnovno uporabo spletne
trgovine, ki jo bomo predstavili v ozadju sistema Pimcore. Na sliki 5.8 vidimo ozadje
sistema Pimcore. Na levi strani smo dodali pogled za spletno trgovino Online Shop, kjer
hranimo objekte, kot so naročila, postavke naročila, produkti, kategorije idr. Na desni
strani je pogled Assets, kjer hranimo slike in ostale multimedijske datoteke. Produkt smo
vstavili v pogledu Online Shop s pomočjo kontekstnega menija na možnost Add object-
>Product.
Slika 5.8: Ozadje sistema Pimcore.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 45
Ob kliku za dodajanje objekta se nam odpre pojavno okno za vnos unikatnega ključa
objekta. Ta se ob vnosu avtomatično spremeni v varno obliko (brez presledkov) in se nato
uporabi kot naziv v drevesni strukturi objektov.
Slika 5.9: Pojavno okno za vnos novega objekta s poljem za ključ objekta.
Na sliki 5.10 vidimo potek vnašanja podatkov artikla. Na voljo so nam urejevalniki
WYSIWYG, vnosna polja in okvirčki, ki delujejo po sistemu povleci in spusti. Tako lahko
na sliki 5.10 vidimo, kako smo preprosto z leve strani, kjer je pogled Assets, z miško
povlekli datoteko slike v polje Images in tako artiklu priredili sliko.
Slika 5.10: Vnašanje osnovnih podatkov objekta v ozadju Pimcore in prirejanje slike.
46 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Na vrsti je vstavljanje podatkov o kategoriji artikla. Polje za reference objektov v sistemu
Pimcore, s katerega so realizirane kategorije artiklov, prav tako vstavljamo po principu
povleci in spusti. Na sliki 5.11 vidimo, kako vstavljamo kategorijo ssd-diski med reference
kategorij artikla.
Slika 5.11: Potek prirejanja kategorije artiklu.
V urejanje artikla smo vnesli tudi cene in priredili davčno stopnjo artikla. To smo storili v
zavihku Prices. Cene artikla smo vnesli v navadna tekstovna polja, medtem ko je davčna
stopnja polje – referenca na objekt, ki deluje po principu povleci in spusti.
V naslednjem koraku smo dodali artiklu vnesli dodatne atribute, ki so specifični za skupino
trdih diskov. Zato se bomo v urejanju artikla pomaknili na zavihek Specific Attributes, kjer
vnašamo dodatne atribute. Specifični atributi artikla so narejeni s poljem objectbricks.
Ob kliku na zeleni gumb polja za specifične atribute vidimo meni, ki nam odpre vse
možnosti, ki so nam na voljo. Sami izberemo možnost specificationTrdiDisk, saj vnašamo
artikel iz te skupine. Naslednja slika prikazuje meni s vsemi možnostmi.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 47
Slika 5.12: Vnos podatkov o trdem disku.
V zasnovi uporabniškega vmesnika ospredja smo za glavno navigacijo izbrali meni s
kategorijami, ki ga prikazujemo na levi strani okna. Kot vidimo na sliki 5.13, smo v meniju
za lažji pregled ločili barvo kategorij od podkategorij. V desnem delu vsebine smo nad
naslovom artikla prikazali povezave drobtinice (angl. breadcrumbs), pod njimi naslov
strani, v pogled pa smo vključili seznam kategorij z njihovimi slikami.
48 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Slika 5.13: Pregled strani kategorije s prikazom seznama podkategorij.
Ko brskamo po kategorijah do določenega nivoja gnezdenja, se nam v vsebinskem delu
spletne aplikacije namesto kategorij prikazujejo artikli. V levem delu spletne trgovine smo
prikazali še filtriranje po znamkah in cenah artiklov. Ob znamkah smo prikazali število
artiklov, ki jih posamezna znamka vsebuje v kategoriji. Filtriranje po cenah artiklov je
omogočeno s pomočjo lestvice in z drsnikom jQueryUI.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 49
Slika 5.14: Pregled kategorije s prikazom artiklov.
V pogledu za prikaz podrobnosti artikla smo v prvi vrsti prikazali seznam povezav na
kategorije, v katerem je artikel (angl. Breadcrumbs). V pogledu za posamezni artikel smo
prikazali podatke, kot so naslov, slike, kratek opis, cene in gumb za košarico. Daljši opis in
specifične atribute artikla smo prikazali ločeno z zavihki jQueryUI.
50 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Slika 5.15: Pogled podrobnosti artikla.
Po dodajanju artikla v košarico, se vrši AJAX zahteva z JSON notacijo. Primer košarice
vidimo na sliki 5.16.
Slika 5.16: Košarica spletne trgovine.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 51
V pogledu blagajna lahko nadaljujemo z postopka naročila. V blagajni smo prikazali
artikle, ki jih imamo v naši košarici. Vidimo jo lahko na sliki 5.17.
Slika 5.17: Prvi korak: pogled na košarico v blagajni.
Blagajna je sestavljena iz petih različnih pogledov: Košarica, Naslov za dostavo, Način
dostave in plačila in Povzetek. Na sliki 5.18 lahko vidimo pogled v koraku za vnos naslova
dostave.
52 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Slika 5.18: Drugi korak nakupa: izbira naslova za dostavo.
Četrti korak v postopku naročila je Povzetek o naročilu. Tukaj je na voljo še možnost, da
se pomaknemo nazaj ali zaključimo z naročilom. Pregled predstavitvenega naročila vidimo
na sliki 5.19.
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 53
Slika 5.19: Četrti korak: povzetek in zaključek naročila.
5.5 Povzetek
Razvita spletna aplikacija deluje kot predstavitvena spletna trgovina, ki smo jo realizirali
kot vtičnik v sistemu Pimcore. Vsebuje vse koncepte spletnega poslovanja, kot so
kategorije artiklov, pregled artikla, košarico in blagajno ter omogoča kupcem neposredni
nakup blaga prek spleta in tako prikliče fizično analogijo kupovanja proizvodov na drobno.
Prva stran spletne trgovine omogoča spremljanje priporočenih artiklov, ki jih s pomočjo
objektov nastavimo v ozadju sistema Pimcore.
Pri realizaciji spletne trgovine smo uporabili tudi najnovejše koncepte razvoja na spletu.
Med drugim so to uporaba zahtev AJAX, podatkovni vmesnik JSON ter napredno
programiranje v programskem jeziku Javascript s knjižnicama jQuery in jQueryUI.
54 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
6 SKLEP
V teoretičnem delu diplomskega dela smo spoznali vse ključne dele, ki jih mora vsebovati
celostno zasnovan sistem CMS. Ugotovili smo, da je zasnova takšnega sistema
kompleksen proces in za realizacijo potrebuje veliko znanja in poznavanja področja. Tako
smo se seznanili z različnimi tipi sistemov za upravljanje vsebin in spoznali življenjski
cikel vsebine, ko gre skozi vse faze objave. Podrobno smo si ogledali, kaj morajo
vsebovati sistemi za zbiranje, sistem za upravljanje in sistem za objavljanje vsebine. Pri
vsem tem smo se osredotočali predvsem na sisteme za upravljanje vsebin na splošno in
smo šele kasneje dodali koncept spletnega sistema za objavljanje vsebin.
Ugotovili smo, da nam spletni sistemi za upravljanje vsebin ponujajo več kot le orodje za
urejanje vsebine spletne strani, saj nam omogočajo dostavo bogatejših vsebin, kar je pri
razvoju bogatih spletnih aplikacij zelo pomembno. Pri predstavitvi celostne podobe
podjetja na spletu nam služijo, da pridobimo »pogled izven škatle« in nam v naši
predstavitvi poslovnih vrednosti omogočajo drugačen, nekonvencionalen pogled iz druge
perspektive. Tako je z njimi mogoče laže distribuirati prave poslovne vrednosti podjetja.
Pomembni so tudi s stališča ažurnosti informacij, saj nam omogočajo hitro urejanje vsebin.
V proučitvi rešitev za spletno urejanje vsebin na trgu smo spoznali, da obstajajo različne
rešitve, ki jih je mogoče kategorizirati po namembnosti. Tako za različne namene obstajajo
namenske rešitve, ki jih je mogoče uporabiti za dani problem. Zato je pri izbiri pomembno,
da izberemo rešitev, ki ustreza našim zahtevam.
Za navadno spletno stran, bi na podlagi pridobljenih izkušenj izbirali rešitev predvsem s
stališča, koliko računalniškega znanja ima stranka. Ker poznam te sisteme, bi npr. za
naprednejše stranke izbrali rešitev, kot sta Joomla ali Wordpress, saj jim ti dve rešitvi
omogočata, da sami prilagajajo stran svojim potrebam, saj na spletu obstaja veliko število
vtičnikov in razširitev, ki so nam na voljo za uporabo. Za stranke brez veščin spletnega
razvoja, bi priporočali rešitev, kot je Pimcore, saj je ta najbolj fleksibilen, prilagodljiv in
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 55
prijazen do programerja in uporabnika ter omogoča hiter razvoj bogatih spletnih aplikacij
(angl. Rapid Application Development, RIA).
Objektno orientiran pristop k programiranju in ogrodja za razvoj spletnih aplikacij nam
omogočajo hitrejši in varnejši razvoj bogatih aplikacij RIA, kar je pri današnjem
poslovanju zelo pomembno. Zaradi tega mislimo, da je uporaba takšnih tehnologij nujno
potrebna in bo v prihodnje še pomembnejša, zato bo zanimivo spremljati razvoj teh
tehnologij tudi v prihodnje.
Razvili smo tudi aplikacijo, ki skozi praktični primer prikazuje predstavljene koncepte
spletnega sistema Pimcore za upravljanje vsebin in jih povezuje v celoto. Spletna
aplikacija je bila napisana skladno z načeli razvoja spletnih aplikacij ogrodja Pimcore in
vključuje vse vidike platforme Pimcore, kot tudi sodobne tehnologije, kot sta AJAX in
JSON.
Iz spletne trgovine, ki smo jo razvili, je razvidno, da sta razvoj in implementacija takšne
aplikacije s pomočjo platforme Pimcore enostavna in hitra, prednost pa najdemo tudi v
tem, da jo je mogoče poljubno razširiti. Sistem za upravljanje z informacijami produktov
(PIM), ki ga Pimcore vključuje, je dobro orodje, ki nam pride prav tako pri majhnih
spletnih straneh kot tudi pri večjih. Je koristno, uporabniku prijazno orodje, ki bo v
prihodnosti zagotovo uporabnejše, platforma Pimcore pa bo med programerji postala še
bolj razširjena.
56 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
VIRI
[1] CMS Community Wiki. Dostopno na: http://www.cmswiki.com/tiki-index.php
[19. 11. 2013].
[2] Boiko, B. Content Management Bible, 2nd Edition, Kraj: Indianapolis, Wiley
Publishing, 2005.
[3] Wikipedia. Web content lifecycle. Dostopno na: http://en.wikipedia.org/wiki/
Web_content_lifecycle [19. 11. 2013].
[4] Wikipedia. Content management. Dostopno na: http://en.wikipedia.org/wiki/
Content_management [29. 11. 2013].
[5] Wikipedia. Enterprise Content Management, , Dostopno na:
http://en.wikipedia.org/wiki/Enterprise_Content_Management [2. 12. 2013].
[6] Wikipedia. Web Content Management System. Dostopno na: http://en.wikipedia.
org/wiki/Web_content_management_system [9. 12. 2013].
[7] Jurmann, M. 11 Reasons Why a Web CMS Will Make Your Life Easier and Your
Wallet Fatter. Dostopno na: http://www.chromaticsites.com/blog/11-reasons-why-a-
web-cms-will-make-your-life-easier-and-your-wallet-fatter [4. 3. 2014].
[8] Robertson, J. What are the goals of a CMS?. Dostopno na: http://www.steptwo.
com.au/papers/kmc_goals/index.html [4. 3. 2014].
[9] Zend Framework. Dostopno na: http://framework.zend.com [28. 4. 2014].
[10] Wikipedia. Zend Framework. Dostopno na: http://en.wikipedia.org/wiki/
Zend_Framework [28. 4. 2014].
[11] Wikipedia. Model-View-Controller. Dostopno na: http://en.wikipedia.org/wiki/
Model%E2%80%93view%E2%80%93controller [8. 8. 2014].
[12] Zend Framework Manual. Dostopno na: http://framework.zend.com/manual/
1.11/en/manual.html [8. 8. 2014].
[13] Wikipedia. Simple Cloud API. Dostopno na: http://en.wikipedia.org/wiki/Simple
_Cloud_API [6. 5. 2014].
Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore 57
PRILOGE
Priloga A: Seznam izvornih kod
Izvorna koda 1: Kličemo očetovsko funkcijo za inicializacijo kontrolerja. ...................... 41
Izvorna koda 2: Nastavljanje modela za pomočnika objektov Pimcore. .......................... 41
Izvorna koda 3: Shranjevanje pomočnika z raznimi uporabnimi funkcijami. ................... 41
Izvorna koda 4: Branje nastavitvene XML-datoteke in shranjevanje nastavitev. .............. 42
Izvorna koda 5: Vklapljanje HTML-predloge naše aplikacije. ........................................ 42
Izvorna koda 6: Pridobivanje korenskih postavk kategorij in podaja spremenljivke v
pogled. ................................................................................................................. 42
Izvorna koda 7: Pridobivanje objektov za priporočene produkte. .................................... 43
Izvorna koda 8: Implementacija pogleda za akcijo homeAction(). ............................. 43
Priloga B: Naslov študenta
Dejan Kropec
Drumlažno 7
2318 Laporje
Tel. študenta: 040 538 174
E-pošta študenta: dejankropec@gmail.com
Priloga C: Kratek življenjepis
Rojen: 7. 4. 1985 v Mariboru
Šolanje:
Osnovna šola Anice Černejeve Makole
Srednja elektro-računalniška šola Maribor, smer računalniški tehnik
Fakulteta za elektrotehniko, računalništvo in informatiko v Mariboru, smer VŠ računalništvo in informatika – informatika
58 Razvoj spletne trgovine na osnovi sistema za upravljanje z vsebinami Pimcore
Priloga C: Izjava o istovetnosti tiskane in elektronske verzije zaključnega dela
in objavi osebnih podatkov diplomantov
top related