Napojení Joomla! webů na další systémy
Viktor Jelínek
Proč propojovat?
- Automatizace procesů
- Uživatelé jsou zvyklí na své aplikace
- Joomla je CMS, nikoli CML
- Usnadnění implementace funkčnosti její delegací
- Spolupráce open source webu s komerčními a closed source aplikacemi
Co třeba?
- Účetní a skladové systémy
- CRM a PM systémy
- Rezervační systémy
- Brány (platební, sms)
- On-line služby
- Mobilní aplikace
Odkud kam?
- Do Joomly
- Z Joomly
- Obousměrně
Kdy?
- Automaticky
- Hned
- Periodicky
- Na kliknutí
Kolik?
- Jednotlivě
- Dávkově
- Rozdílově
- Kompletně
&
Technologie
Formáty
- XML
- JSON
- HTTP
- CSV
- SQL
- SOAP
- RPC
- REST
- Javascript
- cURL
- FTP
- Cron
- Sdílená DB
Úskalí
- Zabezpečení
- Logování
- Relace
- Výpadky
- Rychlost
- Kolize
Časté integrace v Joomle
- Core
- users
- content
- Extensions
- e-commerce
- forms
- social
Implementace do Joomly
- Scripty
- Nová rozšíření
- Úpravy rozšíření
- Rozšíření pro rošíření
- Knihovny (pro vývojáře)
Scripty
Obvykle slouží jen jako doňující vrstva k dalším rozšířením
nebo třeba pro jednoduchý či jednorázový import/export
Výhody:
- Jednoduchost implementace
- Performance
- Můžou být nezávislé na frameworku
Nevýhody:
- Absence administrace
- Nepořádek v souborech
- Manuální "instalace"
Tvorba nových rošíření
- File
- lze použít pro scripty, aby šli (od)instalovat
- Pluginy
- sync uživatelů
- sync objednávek
- Moduly
- zobrazovaní externích dat
- konktatní a jiné formuláře
- Komponenty
- ecommerce řešení
- složitější workflow
- udržování relací mezi systémy
- Knihovny
- podpůrná vrstva
- můžou být nezávislé na frameforku
Úpravy / Forkování cizích rozšíření
- Někdy jediná cesta, jak existující rošíření s něcím propojit
- Musíme se prokousávat cizím kódem
- Přicházíme o aktualizace nebo musíme slučovat kód
- Zato možnosti implementace jsou neomezené
Rošíření pro jiná rošíření
- Lepší než forkovat
- Musí být dostatečně podporováno rozšířením
- Zůstává nám schopnost aktualizovat rozšíření
- Opakovaná použitelnost bez úprav
- Není ideální to přehánět
(např. pluginy triggerující další a další pluginy)
Knihovny pro tvorbu rozšíření
- Znovupoužitelnost spodní vrstvy
- Centralizace základního kódu propojení
- Integrace více Joomla rozšíření s jedním systémem
- Standartizace, API
- Vývoj dalších rozšíření třetími stranami
Příklady
Google služby
Analytics, Mapy, Kalendář, Picasa atd.
- Javascript
- JSON
- XML
- Rozšíření všech druhů,
převážně pluginy a moduly
Použití Javascriptu
$doc = JFactory::getDocument();
$doc->addScript( 'http://maps.googleapis.com/maps/api/js?sensor=false' );
var latlng = new google.maps.LatLng(50.1073, 14.3949);
var mapOptions = {
zoom: 3,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map($('map_container'), mapOptions);
<div id="map_container"></div>
Virtuemart 1 - KTK
Propojení Virtuemartu 1 se systémem KTK
(sklad, crm, účetnictví apod)
- XML RPC
- Standalone scripty manipulují s DB
- Probíhá ze strany KTK
- Scripty poskytují Virtuemart API na míru KTK
- Vlastní Fork VM 1
- Custom fieldy
- Filtry produktů
- Zboží z podkategorií
- One page checkout
Použití XML RPC
Klient
$req_string = '<requests><request task="get_user"><id>123</id></request></requests>';
$ch = curl_init( 'https://example.com/users.php' );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $req_string );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$response = curl_exec($ch);
curl_close($ch);
Server
$req_string = file_get_contents( 'php://input' );
$req_xml = @simplexml_load_string( $req_string );
$requests = $req_xml->xpath( '//request' );
foreach( $requests as $request ){
$response .= SomeClass::process_request($request);
//$response .= '<response><items><item><id>1</id></item></items></response>';
//$response .= '<response><exception>ERROR</exception></response>';
}
header('Content-Type: text/xml;');
echo $response;
Virtuemart 1 - SAP
Propojení Virtuemartu 1 se systémem SAP
(sklad, crm, účetnictví apod)
- SOAP (WSDL) - obousměrné propojení
- Vlastní komponenta na sync Virtuemartu a SAPu
- Probíhá ze strany komponenty
- Fork vlastního forku VM 1 (viz předchozí slide)
- Přidána volání komponenty do kódu VM
- Rozšířena views administrace VM o SAP prvky
Použití SOAP s WSDL
try{
$login = array( 'login' => 'aaa', 'password' => 'bbb' );
$config = array( 'example.com/wsdl.xml', $login, 'trace' => 1 );
$soap = new SoapClient( $config );
//print_r( $soap->__getFunctions() );
//print_r( $soap->__getTypes() );
$order = array(
'id' => 123,
'total' => 456,
'products' => array(1, 2, 3, 4)
);
$return = $soap->createOrder( $order );
//print_r( $return );
}catch( SoapFault $exception ){ }
Joomla - Redmine
Propojování Joomly s project management systémem Redmine
(projekty, úkoly, novinky, kontakty a další)
- XML REST
- Joomla knihovna
- Joomla moduly
- Joomla pluginy
- Scripty pro formuláře
(Breezing forms, RS forms apod.)
joomla-api.easyredmine.com
Použití knihovny
jimport('easyredmine_api.rest.news');
$api = new EasyRedmineRestApiNews( 'https://joomla-connector.easyredmine.com', '***' );
$filters = array( 'project_id' => 123 );
$list = $api->getList( $filters );
if( $list ){
foreach( $list as $item ){
echo (string) $item->title.'<br />';
}
}
jimport('easyredmine_api.rest.issues');
$api = new EasyRedmineRestApiIssues( 'https://joomla-connector.easyredmine.com', '***' );
$item = (object) array( 'project_id' => 123, 'subject' => 'new issue' );
if( $api->store( $item ) ){
echo 'Issue stored ok, id = '.(int) $item->id;
}else{
echo 'Store errors:<pre>';
print_r( $api->getErrors() );
echo '</pre>';
}
XML REST komunikace
Virtuemart 2 - Redmine
Přímá integrace mezi VM2 a Redmine
(úkoly z obj., stavy úkolů podle stavů obj. a další)
- XML REST
- Joomla knihovna
- Plugin pro Virtuemart
(system plugin)
Plugin přidává do backendu VM nová views
pro správu Redmine integrace
Stručné dotazy?
Složitější otázky se proberou v rámci
navazující diskuze o integracích
~ konec ~
Napojení Joomla! webů na další systémy
By vikijel
Napojení Joomla! webů na další systémy
Jak napojit webové stránky v Joomla! na jiné aplikace. Ukázky řešení napojení na Redmine (open source aplikace na řízení projektů i celých firem). Napojení na účetní systémy, interní informační systémy. Ukázky automatizace komunikace s klienty a potenciálními klienty.
- 1,698