My You Tube channel

Dopo aver esaminato cosa offre la Jed sono sconfortato. Io mi chiedo perchè per usare due righe di codice dovrei mettere backlink e scemenze varie... capisco fosse un componente complesso. Apro sempre i files per dare un occhiata alle eventuali "imperizie macroscopiche" da correggere prima di inserire quel codice nel mio e vedo cose che voi umani... ma ne parlerò più approfonditamente, per ora accontentatevi di questo codice, pulito, senza nessun obbligo di fare nulla.

Come sempre la soluzione migliore è scriversi da soli le estensioni, non sarà il miglior codice ma almeno pago solo i miei di errori. Così ho messo giù un plugin che ho chiamato "Yoube" che permetterà di inserire negli articoli di joomla le miniature dei video del vostro canale YouTube o condividere quelli degli altri usando l'url di condivisione.

La stringa chiave di ricerca del link all'interno del contenuto è customizzabile, come lo sono le dimensioni oltre a quelle standard proposte da YouTube.
Le impostazioni nella configurazione del plugin avranno effetto su tutti i filmati che inserirete ma aggiungere anche opzioni per ogni articolo non è difficile basta passarlo insieme alla key e allo short url del contenuto. L'array match sarà di 3 elementi anzichè due (un elemento per stringa senza spazi).

Nel punto dell'articolo in cui volete appaia la miniatura del video usate questo codice:

{<vostra_key><spazio><url_youtube>}

Non sono presenti files per la lingua ma anche questo è banale da implementare, a me non occorre e non mi occorre nemmeno che sia un pacchetto da installare, basta copiare la cartella coi files all'interno di /plugins/content/. La cartella si chiamerà come il vostro plugin: yoube/ e conterrà oltre ai files del plugin anche il solito index.html vuoto. Ora il codice:

yoube.php

<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.yoube
 * @author      Maurizio <job[at]spazioalchimia.it>
 * @license     GNU General Public License version 2 or later.
 */

defined('_JEXEC') or die;

class PlgContentYoube extends JPlugin{

    public function __construct(& $subject, $config){
        
        parent::__construct($subject, $config);

    }
    
    public function onContentPrepare($context, &$article, &$params, $page = 0){
        // Don't run this plugin when the content is being indexed
        if ($context == 'com_finder.indexer'){
            return true;
        }
        
        // Plugin key param
        $plgkey = (string)trim($this->params->get('key', 'youtube'));

        // Simple performance check to determine whether bot should process further
        if (strpos($article->text, $plgkey) === false){
           // return true;
        }
        
        // Movie size
        $size = $this->getmediaSize();

        // Expression to search for configured plugin key
        $pattern = '/{'.$plgkey.'\s(.*?)}/i';
	
	preg_match_all($pattern, $article->text, $matched, PREG_SET_ORDER);		
        // see whats founded
        // print_r($matched);
        // Array ( [0] => Array ( [0] => {yoube : pippo} [1] => : pippo ) ) 
        
        foreach($matched as $media){
            // Init replacement code
            $replacement = '';
            // Init link to the movie
            $youbelink = '';
            
            switch((string)$this->params->get('mode', 'iframe')){
                case 'iframe':
                    $replacement = '<iframe width="'.$size[0].'" height="'.$size[1].'" src="//www.youtube.com/embed/'.$media[1].'" frameborder="0" allowfullscreen></iframe>';
                    break;
                case 'object':
                    $replacement = '<object width="'.$size[0].'" height="'.$size[1].'">
                        <param name="movie" value="//www.youtube.com/v/'.$media[1].'?hl=it_IT&amp;version=3"></param>
                        <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
                        <embed src="//www.youtube.com/v/'.$media[1].'?hl=it_IT&amp;version=3" type="application/x-shockwave-flash" width="'.$size[0].'" height="'.$size[1].'" allowscriptaccess="always" allowfullscreen="true"></embed>
                        </object>';
                    break;
            }
            
            $article->text = preg_replace($pattern, $replacement, $article->text);

        }

        return true;
	
    }
    
    private function getmediaSize(){
        
        $size = array();
        // media params
        //-> Sizes: 0->Custom, 1->560x315, 2->640x360, 3->853x480, 4->1280x720
        switch($this->params->get('size', '1')){
            case '0':
                $size = array($this->params->get('customw', '560'), $this->params->get('customw', '315'));
                break;
            case '1':
                $size = array('560', '315');
                break;
            case '2':
                $size = array('640', '360');
                break;
            case '3':
                $size = array('853', '480');
                break;
            case '4':
                $size = array('1280', '720');
                break;
        }

        return $size;
            
    }

}

 E il file "manifesto" yoube.xml

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.3" type="plugin" group="content">
    <name>Content - Yoube</name>
    <author>Spazioalchimia</author>
    <creationDate>Agosto 2014</creationDate>
    <copyright>Copyright (C) 2014 - 2019 Spazioalchimia. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later</license>
    <authorEmail>job[at]spazioalchimia.it</authorEmail>
    <authorUrl>www.spazioalchimia.it</authorUrl>
    <version>1.0</version>
    <description>PLG_YOUBE_XML_DESCRIPTION</description>
    <files>
            <filename plugin="yoube">yoube.php</filename>
            <filename>yoube.xml</filename>
            <filename>index.html</filename>
    </files>

    <config>
        <fields name="params">
            <fieldset name="basic">
                <field  name="key"
                    type="text"
                    class=""
                    default="youtube"
                    description="Plugin Key"
                    label="Plugin key"
                />
                <field name="mode"
                    type="list"
                    default="iframe"
                    label="Embed mode"
                    description="Embed mode">
                    <option value="iframe">IFrame</option>
                    <option value="object">Object (old mode)</option>
                </field>
                <field name="size"
                    type="list"
                    default="1"
                    label="Formato"
                    description="Formato">
                    <option value="0">Custom</option>
                    <option value="1">560x315</option>
                    <option value="2">640x360</option>
                    <option value="3">853x480</option>
                    <option value="4">1280x720</option>
                </field>
                <field  name="customw"
                    type="text"
                    class=""
                    default="560"
                    description="Larghezza - Only in custom size"
                    label="Larghezza"
                />
                <field  name="customh"
                    type="text"
                    class=""
                    default="315"
                    description="Altezza - Only in custom size"
                    label="Altezza"
                />
            </fieldset>

        </fields>
    </config>
</extension>

 Nulla da dire di più... nessun backlink o greetings e potete togliere anche i miei dati nell'xml sostituendoli con i vostri.. contenti?

Multirotori

Multicopters I miei droni multirotore. Una semplice curiosità diventata una passione e qualcosa di più.
Il punto di incontro tra programmazione, volo, arduino, tecnica e manualità ...stimolante!
Consigli ed esperienze realizzative di vari modelli dedicati sia al divertimento che all'uso professionale.

Joomla

Joomla! Un Framework promettente ed un collaudato CMS che, con l'adeguata conoscenza, può diventare un avanzato strumento di lavoro.
Come si può conoscere uno strumento se non usandolo, sperimentando sempre nuove soluzioni e seguendo le sue problematiche di sicurezza?

Lifehacking

Lifehacking Non c'è oggetto per casa che non ho aperto, è maniacale ma non riesco a rinunciare, come se quelle quattro viti, quella fessura a scatto mi impedisse di conoscere, scoprire, imparare qualcosa, sigillandolo come un segreto.
Tutto può funzionare meglio o diventare più utile e versatile ...è Life Hacking!

Parapendio

Parapendio Volare è un po' come avere la possibilità di osservare le cose da un'altra prospettiva, senza i vincoli di una forza che ti costringe a muoverti come un pedone degli scacchi per le strade di una città. Il mio sogno sta nell'armadio, pronto a farmi evadere quando ne sento il bisogno e l'aria lo permette.