Desarrollar plugin para Community/ Jomsocial Joomla! 1.7

Jomsocial Joomla! 1.7, El componente Jomsocial de Joomla! es uno de los más potentes del mercado , que nos permite crear una red social muy completa en nuestra web bajo Joomla!. En este post explicaremos como desarrollar un plugin/aplicación dera Joomsocial/community bajo Joomla! 1.7. Vamos a crear un plugin que dará la opción al usuario de activar una aplicación que le muestre los X últimos articulos insertados para la categoria/blog  que nos interese mostrar.

1 – Estructura de archivos  Como vemos en la imagen izquierda, tenemos un directorio raiz con el nombre del plugin, en este caso «seguirblog». En ese directorio se incluyen, el archivo seguirblog.xml, y el punto de entrada del plugin, seguirblog.php. A su vez, vemos un segundo directorio con el mismo nombre que el raiz, donde se incluye un archivo config.xml que será en el que definamos la configuración del modulo de cara al usuario. Para este caso, vamos a dar la opción de elegir el numero de entradas a mostrar. En el mismo directorio donde está el style.css, incluiremos las imágenes que necesite nuesto estilo. 2 – seguirblog.xmlEl arvhivo .xml de la raiz es el que da los parámetros de instalación paraJoomla! y muestra las opciones de configuración del plugin en  la administración.

Estructura de archivos

 


 Seguir blog
    David Carballo Izquierdo
    Octubre 2011
    Copyright 2010 - 2011 by Codigonexo. All rights reserved
    http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
    info@codigonexo.com.com
    http://www.codigonexo.com
    2.0.0
    true

        Visualizar los últimos contenidos de la categoria/blog seleccionada.

        seguirblog.php
        seguirblog

     //Params para compatibilidad CORE, caché, posicion, y entradas antiguas.

            No
            Yes

            Main  content
            Sidebar top
            Sidebar bottom

            Use Global
            No

            Yes
            No
                                    No                     Yes                                                       Main  content                     Sidebar top                     Sidebar bottom

3 – Punto de entrada : seguirblog.phpEl punto de entrada es el archivo que obtendrá la información y la mostrará. La funcionalidad de este plugin actua con la tabla de contenidos, y como estamos trabajando bajo la versión 1.7 de Joomla!, debemos tener muy en cuenta las nuevas restricciones de la libreria ACL.

loadUserParams();
            $limit        = $this->userparams->get( 'count' , '' );

            $content = '';

            //Archivo de lenguaje
            JPlugin::loadLanguage( 'plg_myarticles', JPATH_ADMINISTRATOR );        
            // CSS
            $document    =& JFactory::getDocument();
            $css        = ( C_JOOMLA_15 )
                    ? JURI::base() . 'plugins/community/seguirblog/style.css'
                    : JURI::base() . 'plugins/community/seguirblog/seguirblog/style.css';
            $document->addStyleSheet($css);

//Importamos las dependencias a clases necesarias
            require_once JPATH_SITE.'/modules/mod_articles_latest/helper.php';
            require_once JPATH_SITE.'/components/com_content/helpers/route.php';
            jimport('joomla.application.component.model');
            JModel::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');

            // Base de datos
        $db = JFactory::getDbo();

        // Instanciar modelo de artículos
        $model = JModel::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

        // Parametros de aplicación cargados en el modelo para adecuar la consulta de búsqueda
        $app = JFactory::getApplication();
        $appParams = $app->getParams();
        $model->setState('params', $appParams);

        // Filtro de búsqueda limit
        $model->setState('list.start', 0);
        $model->setState('list.limit', $limit);
        $model->setState('filter.published', 1);

        // Filtro de acceso ACL
        $access = !JComponentHelper::getParams('com_content')->get('show_noauth');
        $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
        $model->setState('filter.access', $access);

        // Filtro de categoria
        $categorias = Array();
        $subCategorias = Array();

        $query = "SELECT id FROM #__categories WHERE parent_id=8 OR id=8"; //La categoria con id 8 es a de nuestro blog.
        // Se captura el id 8 y todos los ids que lo tengan como padre
        $db->setQuery($query);
        $categorias = $db->loadResultArray();
        $model->setState('filter.category_id', $categorias);

        // Filtro de usuario
        $userId = JFactory::getUser()->get('id');
        $model->setState('filter.author_id', $userId);
        $model->setState('filter.author_id.include', false);
        // Filtro de idioma
        $model->setState('filter.language',$app->getLanguageFilter());

        //  Filtro de destacado/featured
        $model->setState('filter.featured', 'show');

        // Filtro de ordenado en consulta
        $order_map = array(
            'm_dsc' => 'a.modified DESC, a.created',
            'mc_dsc' => 'CASE WHEN (a.modified = '.$db->quote($db->getNullDate()).') THEN a.created ELSE a.modified END',
            'c_dsc' => 'a.created',
            'p_dsc' => 'a.publish_up',
        );
        $ordering = JArrayHelper::getValue($order_map, 'c_dsc', 'a.publish_up');
        $dir = 'DESC';

        $model->setState('list.ordering', $ordering);
        $model->setState('list.direction', $dir);

        $items = $model->getItems();

        // Creamos el contenido html en la variable $content
        $content .= '';
        foreach ($items as &$item) {

            $item->slug = $item->id.':'.$item->alias;
            $item->catslug = $item->catid.':'.$item->category_alias;
            $item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug));

            $intro = strip_tags($item->introtext);
            $entrada = substr( $intro, 0, 200 );  // Introtext limitado a 200 caracteres

            $content .= '';
            //$content .= '';
            $content .= '';
            $content .= '';
            //Eliminamos la segunda linea separador
            //$content .= '';
        }
        $content .= '
‘.$item->title.’

‘.$entrada.’…

‘.JHTML::_(‘date’, $item->created, JText::_(‘DATE_FORMAT_LC2′)).’

';

        return $content; //Devolvemos el contenido html y se muestra por pantalla           

        }
    }
}

4 – Opciones de configuración de aplicación por el usuario : config.xml

En este archivo se definen los parámetros que el usuario puede controlar sobre la aplicación. Para este plugin solamente se integra la selección de el numero de entradas a mostrar.

 

  Pantalla de activación de aplicación en panel de usuario
Pantalla de configuración de parámetros de aplicación en panel de usuario

 

 

 

 

 

 

5 – CSS : style.css

.myarticles-title a {
	font-size: 110%;
	font-weight: 700;
}
.myarticles-content {
	font-size: 90%;
}
Una vez que terminamos de editar nuestros archivos del plugin, los empaquetamos en un archivo .zip con el nombre  de la siguiente forma:

plgcommunitynombredeplugin.zip en este caso plgcommunityseguirblog.zip

Lo instalamos desde el gestor de extensiones de nuestro back-end, lo publicamos desde el gestor de plugins, y ya estará activo para que cualquier usuario de nuestro Jomsocial pueda activarlo en su perfil.

Y así es como queda la aplicación un vez activada y configurada:

¿Te ha gustado el artículo?
Sé el primero en calificar esta publicación.
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas
Loading...

Suscríbete. Déjanos tu email y recibe contenido genial cada mes


Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada.

1 Comentarios

Rubén Muñoz Ruiz

Sip