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.
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
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:
1 Comentarios
Rubén Muñoz Ruiz
Sip