Soumettre la recherche
Mettre en ligne
JSztuczki
•
0 j'aime
•
6,250 vues
Tomasz Dziuda
Suivre
15 sztuczek dla Joomla od podstaw do zaawansowanych
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 101
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Zend Framework: abordagem prática
Zend Framework: abordagem prática
Marcelo Andrade
Programación Nativa de un CRUD
Programación Nativa de un CRUD
FUNDET ECUADOR
DOCUMENTACION PAGINA WEB PHP
DOCUMENTACION PAGINA WEB PHP
Dorian Xavier Bendezu Martinez
New 3
New 3
William Avelar
Drupal Cms Prezentace
Drupal Cms Prezentace
Tomáš Kafka
Drupal Cms Prezentace
Drupal Cms Prezentace
guest3d443e
Alaindavila
Alaindavila
Jhurgen Davila Medina
Pertemuan 8 - Report Tabel
Pertemuan 8 - Report Tabel
Adi Triyatmoko
Recommandé
Zend Framework: abordagem prática
Zend Framework: abordagem prática
Marcelo Andrade
Programación Nativa de un CRUD
Programación Nativa de un CRUD
FUNDET ECUADOR
DOCUMENTACION PAGINA WEB PHP
DOCUMENTACION PAGINA WEB PHP
Dorian Xavier Bendezu Martinez
New 3
New 3
William Avelar
Drupal Cms Prezentace
Drupal Cms Prezentace
Tomáš Kafka
Drupal Cms Prezentace
Drupal Cms Prezentace
guest3d443e
Alaindavila
Alaindavila
Jhurgen Davila Medina
Pertemuan 8 - Report Tabel
Pertemuan 8 - Report Tabel
Adi Triyatmoko
Spring Capitulo 04
Spring Capitulo 04
Diego Pacheco
Estandarizacion de macros
Estandarizacion de macros
gerariel
Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortiz
Edderson J. Ortiz
A z railphp v1.0
A z railphp v1.0
guestf694713
Curso Symfony - Clase 1
Curso Symfony - Clase 1
Javier Eguiluz
Drupal Theming Hans Rossel
Drupal Theming Hans Rossel
Hans Rossel
2km Workshop: Desenvolvimento ágil com o CakePHP
2km Workshop: Desenvolvimento ágil com o CakePHP
Carlos Pires
Quiz Component For Joomla
Quiz Component For Joomla
guestebb21a
Jsoon
Jsoon
iqbalfatoni01
Blospot
Blospot
Michael Scofield
Extend Joomla Forms Using Plugins
Extend Joomla Forms Using Plugins
Yireo
10 things you are doing wrong in Joomla
10 things you are doing wrong in Joomla
Ashwin Date
Extreme Networks IdentiFi
Extreme Networks IdentiFi
EnterpriseSystemsGroup
Daj się wyręczyć
Daj się wyręczyć
Tomasz Dziuda
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp Wrocław
Tomasz Dziuda
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administrators
Tomasz Dziuda
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
Tomasz Dziuda
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
B-MIND Software House
Wprowadzenie do WP-API
Wprowadzenie do WP-API
Tomasz Dziuda
Jak nadążyć za światem front endu
Jak nadążyć za światem front endu
Tomasz Dziuda
Word up warszawa 2015
Word up warszawa 2015
Tomasz Dziuda
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
Tomasz Dziuda
Contenu connexe
Tendances
Spring Capitulo 04
Spring Capitulo 04
Diego Pacheco
Estandarizacion de macros
Estandarizacion de macros
gerariel
Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortiz
Edderson J. Ortiz
A z railphp v1.0
A z railphp v1.0
guestf694713
Curso Symfony - Clase 1
Curso Symfony - Clase 1
Javier Eguiluz
Drupal Theming Hans Rossel
Drupal Theming Hans Rossel
Hans Rossel
2km Workshop: Desenvolvimento ágil com o CakePHP
2km Workshop: Desenvolvimento ágil com o CakePHP
Carlos Pires
Quiz Component For Joomla
Quiz Component For Joomla
guestebb21a
Jsoon
Jsoon
iqbalfatoni01
Blospot
Blospot
Michael Scofield
Tendances
(10)
Spring Capitulo 04
Spring Capitulo 04
Estandarizacion de macros
Estandarizacion de macros
Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortiz
A z railphp v1.0
A z railphp v1.0
Curso Symfony - Clase 1
Curso Symfony - Clase 1
Drupal Theming Hans Rossel
Drupal Theming Hans Rossel
2km Workshop: Desenvolvimento ágil com o CakePHP
2km Workshop: Desenvolvimento ágil com o CakePHP
Quiz Component For Joomla
Quiz Component For Joomla
Jsoon
Jsoon
Blospot
Blospot
En vedette
Extend Joomla Forms Using Plugins
Extend Joomla Forms Using Plugins
Yireo
10 things you are doing wrong in Joomla
10 things you are doing wrong in Joomla
Ashwin Date
Extreme Networks IdentiFi
Extreme Networks IdentiFi
EnterpriseSystemsGroup
Daj się wyręczyć
Daj się wyręczyć
Tomasz Dziuda
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp Wrocław
Tomasz Dziuda
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administrators
Tomasz Dziuda
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
Tomasz Dziuda
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
B-MIND Software House
Wprowadzenie do WP-API
Wprowadzenie do WP-API
Tomasz Dziuda
Jak nadążyć za światem front endu
Jak nadążyć za światem front endu
Tomasz Dziuda
Word up warszawa 2015
Word up warszawa 2015
Tomasz Dziuda
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
Tomasz Dziuda
En vedette
(12)
Extend Joomla Forms Using Plugins
Extend Joomla Forms Using Plugins
10 things you are doing wrong in Joomla
10 things you are doing wrong in Joomla
Extreme Networks IdentiFi
Extreme Networks IdentiFi
Daj się wyręczyć
Daj się wyręczyć
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp Wrocław
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administrators
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wprowadzenie do WP-API
Wprowadzenie do WP-API
Jak nadążyć za światem front endu
Jak nadążyć za światem front endu
Word up warszawa 2015
Word up warszawa 2015
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
Plus de Tomasz Dziuda
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp Warszawa
Tomasz Dziuda
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12
Tomasz Dziuda
Trello w praktyce
Trello w praktyce
Tomasz Dziuda
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
Tomasz Dziuda
Wtyczkowe kompendium
Wtyczkowe kompendium
Tomasz Dziuda
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Tomasz Dziuda
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane koszta
Tomasz Dziuda
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
Tomasz Dziuda
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp Warszawa
Tomasz Dziuda
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Tomasz Dziuda
Electron + WordPress = ❤
Electron + WordPress = ❤
Tomasz Dziuda
Statycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET Wrocław
Tomasz Dziuda
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Tomasz Dziuda
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Tomasz Dziuda
Motywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia Prawdziwa
Tomasz Dziuda
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
Tomasz Dziuda
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0
Tomasz Dziuda
Statycznie czy dynamicznie?
Statycznie czy dynamicznie?
Tomasz Dziuda
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
Tomasz Dziuda
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Tomasz Dziuda
Plus de Tomasz Dziuda
(20)
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12
Trello w praktyce
Trello w praktyce
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe kompendium
Wtyczkowe kompendium
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane koszta
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp Warszawa
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Electron + WordPress = ❤
Electron + WordPress = ❤
Statycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET Wrocław
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia Prawdziwa
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie?
Statycznie czy dynamicznie?
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
JSztuczki
1.
JSztuczkiTomasz Dziuda –
JoomlaDay 2015
2.
15
3.
Sztuczki podstawowe Dla początkujących
4.
1/5 Nadpisywanie modułów i
elementów strony By nie modyfikować core Joomla!
5.
6.
Widoki komponentów
7.
Widoki komponentów Wiadomości systemowe
8.
Widoki komponentów Widoki modułów Wiadomości
systemowe
9.
Widoki komponentów Widoki modułów Wiadomości
systemowe Style modułów
10.
Widoki komponentów Widoki modułów Wiadomości
systemowe Style modułów Stronicowanie
11.
2/5 Dodatkowe widoki Formatowanie
odpowiedzi serwera
12.
https://mydomain.com/index.php?tmpl=special
13.
https://mydomain.com/index.php?tmpl=special special.php w katalogu szablonu
14.
https://mydomain.com/index.php?tmpl=special special.php w katalogu szablonu Uwaga!
Niektóre rozszerzenia, takie jakAdmin Tools mogą blokować niestandardowe wywołania parametru tmpl. Należy wtedy taką wartość dodać do listy dozwolonych wywołań.
15.
3/5 Ograniczone wyszukiwanie Gdy
potrzebujemy większej elastyki wyszukiwarki
16.
com_finder i filtry
wyszukiwania
17.
com_finder i filtry
wyszukiwania
18.
com_finder i filtry
wyszukiwania
19.
com_finder i filtry
wyszukiwania
20.
com_finder i filtry
wyszukiwania
21.
4/5 Nadpisywanie fraz językowych Bez
dotykania plików
22.
23.
1
24.
1 2
25.
26.
1
27.
1 2
28.
29.
1
30.
1 2
31.
1 2 3
32.
5/5 Złożona składnia
tytułów wpisów i modułów Bo czasem nie wystarczy zwykły tekst…
33.
Podział na linie
i wyróżnianie słów Lorem[br]ipsum[br]dolor Lorem __ipsum__ dolor Lorem **ipsum** dolor
34.
$title = str_replace('[br]',
'<br />', $module->title); Podział na linie i wyróżnianie słów
35.
$title = str_replace('[br]',
'<br />', $module->title); $title = preg_replace('/__(.*?)__/i', ’<em>${1}</em>', $title); Podział na linie i wyróżnianie słów
36.
Sztuczki średnio-złożone Dla biegłych
użytkowników Joomla!
37.
1/5 JLESS Parser LESS-a
jest w core Joomla!
38.
$app = JFactory::getApplication(); $path
= JPATH_THEMES . '/' . $this->template;
39.
$app = JFactory::getApplication(); $path
= JPATH_THEMES . '/' . $this->template; $less = new JLess; $less->setFormatter(new JLessFormatterJoomla);
40.
$app = JFactory::getApplication(); $path
= JPATH_THEMES . '/' . $this->template; $less = new JLess; $less->setFormatter(new JLessFormatterJoomla); try { $less->compileFile($path.'/main.less', $path.'/main.css'); }
41.
$app = JFactory::getApplication(); $path
= JPATH_THEMES . '/' . $this->template; $less = new JLess; $less->setFormatter(new JLessFormatterJoomla); try { $less->compileFile($path.'/main.less', $path.'/main.css'); } catch (Exception $e) { $app->enqueueMessage($e->getMessage(), 'error'); }
42.
2/5 JLayouts Po co
się powtarzać?
43.
$layout = new
JLayoutFile(‘path.param.x’); echo $layout->render($data);
44.
<?php $msgList =
$displayData['msgList']; ?> <div id="system-message-container"> <?php if (is_array($msgList) && !empty($msgList)) : ?> <div id="system-message"> <?php foreach ($msgList as $type => $msgs) : ?> <div class="alert alert-<?php echo $type; ?>"> <a class="close" data-dismiss="alert">×</a> <?php if (!empty($msgs)) : ?> <h4 class="alert-heading"><?php echo JText::_($type); ?></h4> <div> <?php foreach ($msgs as $msg) : ?> <p class="alert-message"><?php echo $msg; ?></p> <?php endforeach; ?> </div> <?php endif; ?> </div> <?php endforeach; ?> </div> <?php endif; ?> </div> Plik: layouts/joomla/system/message.php
45.
$layout = new
JLayoutFile( 'joomla.content.tags', null, array('debug' => true) ); echo $layout->render(null);
46.
$layout = new
JLayoutFile( 'joomla.content.tags', null, array('debug' => true) ); echo $layout->render(null); Layout: joomla.content.tags Include Paths: Array ( [0] => /www/test/templates/gk_technews/html/layouts/com_content [1] => /www/test/components/com_content/layouts [2] => /www/test/templates/gk_technews/html/layouts [3] => /www/test/layouts ) Searching layout for: joomla/content/tags.php Found layout: /www/test/layouts/joomla/content/tags.php
47.
$layout = new
JLayoutFile( 'joomla.content.tags', JPATH_SITE . '/components/com_custom/layouts', array('debug' => true) );
48.
$layout = new
JLayoutFile( 'joomla.content.tags', JPATH_SITE . '/components/com_custom/layouts', array('debug' => true) ); Layout: joomla.content.tags Include Paths: Array ( [0] => /www/test/components/com_custom/layouts [1] => /www/test/templates/gk_technews/html/layouts/com_content [2] => /www/test/components/com_content/layouts [3] => /www/test/templates/gk_technews/html/layouts [4] => /www/test/jqi/layouts ) Searching layout for: joomla/content/tags.php Found layout: /www/test/layouts/joomla/content/tags.php
49.
$layout = new
JLayoutFile( 'joomla.content.tags', null, array( 'debug' => true, 'component' => ‘com_tags', 'client' => 1, 'suffixes' => array('rtl', 'j34') ) );
50.
$layout = new
JLayoutFile( 'joomla.content.tags', null, array( 'debug' => true, 'component' => ‘com_tags', 'client' => 1, 'suffixes' => array('rtl', 'j34') ) ); Layout: joomla.content.tags Include Paths: Array ( [0] => /www/test/templates/gk_technews/html/layouts/com_tags [1] => /www/test/administrator/components/com_tags/layouts [2] => /www/test/templates/gk_technews/html/layouts [3] => /www/test/layouts ) Suffixes: Array ( [0] => rtl [1] => j34 ) Searching layout for: joomla/content/tags.rtl.php Searching layout for: joomla/content/tags.j34.php Searching layout for: joomla/content/tags.php Found layout: /www/test/layouts/joomla/content/tags.php
51.
3/5 Dodatkowe pola w
edytorach By nie udziwniać składni wpisów
52.
class plgSystemPlg_Custom_Params extends
JPlugin { var $_pluginPath; }
53.
class plgSystemPlg_Custom_Params extends
JPlugin { var $_pluginPath; function __construct($subject) { parent::__construct($subject); $this->_plugin = JPluginHelper::getPlugin('system', 'plg_custom_params'); $this->_pluginPath = JPATH_PLUGINS."/system/plg_custom_params/"; } }
54.
class plgSystemPlg_Custom_Params extends
JPlugin { var $_pluginPath; function __construct($subject) { parent::__construct($subject); $this->_plugin = JPluginHelper::getPlugin('system', 'plg_custom_params'); $this->_pluginPath = JPATH_PLUGINS."/system/plg_custom_params/"; } function onContentPrepareForm($form, $data) { if ($form->getName()=='com_content.article') { JForm::addFormPath($this->_pluginPath); $form->loadFile('parameters', false); return true; } } }
55.
class plgSystemPlg_Custom_Params extends
JPlugin { var $_pluginPath; function __construct($subject) { parent::__construct($subject); $this->_plugin = JPluginHelper::getPlugin('system', 'plg_custom_params'); $this->_pluginPath = JPATH_PLUGINS."/system/plg_custom_params/"; } function onContentPrepareForm($form, $data) { if ($form->getName()=='com_content.article') { JForm::addFormPath($this->_pluginPath); $form->loadFile('parameters', false); return true; } } }
56.
<?xml version="1.0" encoding="utf-8"?> <form> <fields
name="attribs"> <fieldset name="basic" label="Test"> <field name="custom_field1" type="text" default="" label="Field 1" /> <field name="custom_field2" type="text" default="" label="Field 2" /> </fieldset> </fields> </form>
57.
<?xml version="1.0" encoding="utf-8"?> <form> <fields
name="attribs"> <fieldset name=“test" label="Test"> <field name="custom_field1" type="text" default="" label="Field 1" /> <field name="custom_field2" type="text" default="" label="Field 2" /> </fieldset> </fields> </form>
58.
$article_attribs = json_decode($this->item->attribs); echo
$article_attribs[’custom_field1'];
59.
4/5 Avatary we
wpisach Bo ludzi pamięta się z twarzy…
60.
https://pl.gravatar.com/
61.
$author_obj = JFactory::getUser($this->item->created_by); $author_email
= $author_obj->email;
62.
$author_obj = JFactory::getUser($this->item->created_by); $author_email
= $author_obj->email; $avatar_hash = md5(strtolower(trim($author_email))); $avatar_size = 120;
63.
$author_obj = JFactory::getUser($this->item->created_by); $author_email
= $author_obj->email; $avatar_hash = md5(strtolower(trim($author_email))); $avatar_size = 120; $avatar_url = ‘//www.gravatar.com/avatar/’.$avatar_hash .‘.jpg’; $avatar_url .= ‘?s=‘ . $avatar_size;
64.
5/5 Zmiana szablonu
dla wybranych podstron Bez generowania złożonych struktur w menu…
65.
public function onAfterRoute()
{ $app = JFactory::getApplication(); if ($app instanceof JApplicationSite) { $jinput = $app->input; $option = $jinput->getCmd('option', ''); $view = $jinput->getCmd('view', ''); $params = new JRegistry(); $params->def('templateColor', '#f00'); $params->def('templateBackgroundColor', '#000'); if($option === 'com_content' && $view === 'article’) { $app->setTemplate('protostar', $params); } } }
66.
public function onAfterRoute()
{ $app = JFactory::getApplication(); if ($app instanceof JApplicationSite) { $jinput = $app->input; $option = $jinput->getCmd('option', ''); $view = $jinput->getCmd('view', ''); $params = new JRegistry(); $params->def('templateColor', '#f00'); $params->def('templateBackgroundColor', '#000'); if($option === 'com_content' && $view === 'article’) { $app->setTemplate('protostar', $params); } } }
67.
public function onAfterRoute()
{ $app = JFactory::getApplication(); if ($app instanceof JApplicationSite) { $jinput = $app->input; $option = $jinput->getCmd('option', ''); $view = $jinput->getCmd('view', ''); $params = new JRegistry(); $params->def('templateColor', '#f00'); $params->def('templateBackgroundColor', '#000'); if($option === 'com_content' && $view === 'article’) { $app->setTemplate('protostar', $params); } } }
68.
public function onAfterRoute()
{ $app = JFactory::getApplication(); if ($app instanceof JApplicationSite) { $jinput = $app->input; $option = $jinput->getCmd('option', ''); $view = $jinput->getCmd('view', ''); $params = new JRegistry(); $params->def('templateColor', '#f00'); $params->def('templateBackgroundColor', '#000'); if($option === 'com_content' && $view === 'article’) { $app->setTemplate('protostar', $params); } } }
69.
Sztuczki zaawansowane Coś dla
koneserów
70.
1/5 Wtyczki bez
wtyczek Po co instalować dodatkowe paczki?
71.
$dispatcher = JEventDispatcher::getInstance();
72.
$dispatcher = JEventDispatcher::getInstance(); $dispatcher->register('onAfterRender',
'CustomParser');
73.
$dispatcher = JEventDispatcher::getInstance(); $dispatcher->register('onAfterRender',
'CustomParser'); function CustomParser(){ $body = JResponse::getBody(); JResponse::setBody($body); }
74.
$dispatcher = JEventDispatcher::getInstance(); $dispatcher->register('onAfterRender',
'CustomParser'); function CustomParser(){ $body = JResponse::getBody(); $body = str_replace('ABC', 'XYZ', $body); JResponse::setBody($body); }
75.
2/5 JImage Operacje na
grafikach
76.
$img = new
JImage(__DIR__ . '/images/logo.png');
77.
$img = new
JImage(__DIR__ . '/images/logo.png'); $img->resize(320, 320, false, JImage::SCALE_FILL);
78.
$img = new
JImage(__DIR__ . '/images/logo.png'); $img->resize(320, 320, false, JImage::SCALE_FILL); $img->crop(160, 160, 80, 80, false);
79.
$img = new
JImage(__DIR__ . '/images/logo.png'); $img->resize(320, 320, false, JImage::SCALE_FILL); $img->crop(160, 160, 80, 80, false); $img->rotate(45, 0x000000, false);
80.
$img = new
JImage(__DIR__ . '/images/logo.png'); $img->resize(320, 320, false, JImage::SCALE_FILL); $img->crop(160, 160, 80, 80, false); $img->rotate(45, 0x000000, false); $img->filter('negate');
81.
$img = new
JImage(__DIR__ . '/images/logo.png'); $img->resize(320, 320, false, JImage::SCALE_FILL); $img->crop(160, 160, 80, 80, false); $img->rotate(45, 0x000000, false); $img->filter('negate'); $img->toFile(__DIR__ . '/images/new.jpg', IMAGETYPE_JPEG);
82.
3/5 Wykrywanie administratora po stronie
front-endu Może się zdarzyć, że musisz o tym wiedzieć
83.
Front-end Back-end
84.
Wartość przechowywana w plikach
cookie
85.
0 = front-end 1
= back-end
86.
0 = zalogowany 1
= niezalogowany
87.
Warto sprawdzić czy
sesja nie wygasła $config = JFactory::getConfig(); $session_lifetime = $config->get('lifetime’);
88.
Dodatkowo można porównać wartość
ciągu user-agent
89.
Dane użytkownika
90.
4/5 Złożone kontrolki Bo
czasem pole tekstowe i color picker to za mało…
91.
<input type=“hidden”>
92.
<input type=“hidden”> Zmiana ustawień json_encode($config)
93.
<input type=“hidden”> Zmiana ustawień json_encode($config) Wczytanie
ustawień json_decode($config)
94.
5/5 Własne sposoby autoryzacji Jak
pragnę OAuth…
95.
function onUserAuthenticate($credentials, $options,
&$response) { // kod obsługujący autoryzację return $response; }
96.
$credentials[’username’] // Login
użytkownika $credentials['password’] // Hasło użytkownika
97.
$user = JUser::getInstance($result->id);
98.
$user = JUser::getInstance($result->id); $response->email
= $user->email; $response->username = $user->username; $response->fullname = $user->name;
99.
$user = JUser::getInstance($result->id); $response->email
= $user->email; $response->username = $user->username; $response->fullname = $user->name; if(JFactory::getApplication()->isAdmin()) { $response->language = $user->getParam('admin_language'); } else { $response->language = $user->getParam('language'); }
100.
// Poprawne zalogowanie $response->status
= JAuthentication::STATUS_SUCCESS; // Błędne zalogowanie $response->status = JAuthenticaton::STATUS_FAILURE;
101.
Pytania?
Télécharger maintenant