Ostatnie zmiany w polityce prywatności Facebooka sprawiły, że przestały działać niektóre dodatki pobierające dane z tego portalu.
Na jednej stronie mojego klienta wykorzystywany był plugin, który ładował zdjęcia z galerii, za pomocą kodu w artykule
{sfx url='TU LINK DO GALERII'}
Ponieważ przestało to działać, chciałem napisać plugin, który przerobi ten shortcode na prosty link do galerii.
Stworzyłem 3 pliki.

1) Index.html pusty, dla bezpieczeństwa.
2) XML
<?xml version="1.0" encoding="utf-8"?> <extension version="3.8" type="plugin" group="content" method="upgrade"> <name>Facebook Gallery Fix - Solmedia</name> <author>Solmedia.pl</author> <creationDate>05.2018</creationDate> <copyright>(C) 2018 www.solmedia.pl</copyright> <license>GNU General Public License</license> <authorEmail>biuro@solmedia.pl<;/authorEmail> <authorUrl>www.solmedia.pl</authorUrl> <version>1.0.0</version> <description>Facebook Gallery Fix - Solmedia</description> <files> <filename plugin="fbgal">fbgal.php</filename> <filename>index.html</filename> </files> </extension>
3) PHP
<?php
defined('_JEXEC') or die('Restricted access');
class plgSystemFbgal extends JPlugin
{
public function onAfterRender() {
$app = JFactory::getApplication();
$body = $app->getBody();
if ($app->isSite() == false)
{
return false;
}
$pattern = '/{sfx url=\'(.*?)\'}/i';
$body = preg_replace($pattern, '<p><a class="btn btn-primary" target="_blank" href="$1">Zobacz galerię na FB <img src="/images/external-link-symbol.png" /></a></p>', $body);
$app->setBody($body);
}
}
Jak działa plugin?
- Nazwa klasy musi odpowiadać nazwie pluginu oraz grupie. Mój plugin nazywa się Fbgal i jest w grupie system. Dlatego klasa nazywa się plgSystemFbgal. Joomla sama szuka takiej klasy w moim dodatku i wywołuje jej metodę.
- Sprawdzenie
if ($app->isSite() == false)odpowiada za to, żeby plugin nie uruchamiał się na zapleczu Joomli - Wreszcie core, czyli podmiana shortcodu. Wykorzystuję funkcję PHP preg_replace.
- Szukam kodu {sfx url=”} z dowolną treścią między ”. Pobieram go do zmiennej $1 za pomocą regularnego wyrażenia (odpowiadają za to nawiasy () )
- Potem zamieniam ten kod na mój HTML, a w href wstawiam pobrany link za pomocą $1
- Wreszcie podmieniam $body na nowe, z poprawionym HTMLem 🙂
Myślę, że dzięki temu przykładowi łatwo będzie napisać Ci własny plugin.




Social Media
Znajdź nas w serwisach społecznościowych: