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: