[Помогите] Изменить вывод в стандартном модуле "Ссылки" - joomla 3

Тема в разделе "Joomla", создана пользователем xoff, 13 мар 2014.

  1. xoff

    xoff

    Регистрация:
    2 сен 2013
    Сообщения:
    72
    Симпатии:
    13
    В joomla 3 есть стандартный модуль, в настройках нету вывода случайных ссылок, а мне надо что бы по 2 штуки выводились рандомно разные ссылки... Кто знаком с модулем может помочь?

    modules/mod_weblinks/helper.php
    PHP:
    <?php
    /**
    * @package     Joomla.Site
    * @subpackage  mod_weblinks
    *
    * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
    * @license     GNU General Public License version 2 or later; see LICENSE.txt
    */

    defined('_JEXEC') or die;

    require_once 
    JPATH_SITE '/components/com_weblinks/helpers/route.php';
    require_once 
    JPATH_SITE '/components/com_weblinks/helpers/category.php';

    JModelLegacy::addIncludePath(JPATH_SITE '/components/com_weblinks/models''WeblinksModel');

    /**
    * Helper for mod_weblinks
    *
    * @package     Joomla.Site
    * @subpackage  mod_weblinks
    * @since       1.5.0
    */
    class ModWeblinksHelper
    {
        
    /**
         * Show online member names
         *
         * @param   mixed  &$params  The parameters set in the administrator backend
         *
         * @return  mixed   Null if no weblinks based on input parameters else an array containing all the weblinks.
         *
         * @since   1.5.0
         **/
        
    public static function getList(&$params)
        {
            
    // Get an instance of the generic articles model
            
    $model JModelLegacy::getInstance('Category''WeblinksModel', array('ignore_request' => true));

            
    // Set application parameters in model
            
    $app JFactory::getApplication();
            
    $appParams $app->getParams();
            
    $model->setState('params'$appParams);

            
    // Set the filters based on the module params
            
    $model->setState('list.start'0);
            
    $model->setState('list.limit', (int) $params->get('count'5));

            
    $model->setState('filter.state'1);
            
    $model->setState('filter.publish_date'true);

            
    // Access filter
            
    $access = !JComponentHelper::getParams('com_weblinks')->get('show_noauth');
            
    $model->setState('filter.access'$access);

            
    $ordering $params->get('ordering''ordering');
            
    $model->setState('list.ordering'$ordering == 'order' 'ordering' $ordering);
            
    $model->setState('list.direction'$params->get('direction''asc'));

            
    $catid    = (int) $params->get('catid'0);
            
    $model->setState('category.id'$catid);

            
    // Create query object
            
    $db JFactory::getDbo();
            
    $query $db->getQuery(true);

            
    $case_when1 ' CASE WHEN ';
            
    $case_when1 .= $query->charLength('a.alias''!=''0');
            
    $case_when1 .= ' THEN ';
            
    $a_id $query->castAsChar('a.id');
            
    $case_when1 .= $query->concatenate(array($a_id'a.alias'), ':');
            
    $case_when1 .= ' ELSE ';
            
    $case_when1 .= $a_id ' END as slug';

            
    $case_when2 ' CASE WHEN ';
            
    $case_when2 .= $query->charLength('c.alias''!=''0');
            
    $case_when2 .= ' THEN ';
            
    $c_id $query->castAsChar('c.id');
            
    $case_when2 .= $query->concatenate(array($c_id'c.alias'), ':');
            
    $case_when2 .= ' ELSE ';
            
    $case_when2 .= $c_id ' END as catslug';

            
    $model->setState(
                
    'list.select',
                
    'a.*, c.published AS c_published,' $case_when1 ',' $case_when2 ',' 'DATE_FORMAT(a.created, "%Y-%m-%d") AS created'
            
    );

            
    $model->setState('filter.c.published'1);

            
    // Filter by language
            
    $model->setState('filter.language'$app->getLanguageFilter());

            
    $items $model->getItems();

            if (
    $items)
            {
                foreach (
    $items as $item)
                {
                    if (
    $item->params->get('count_clicks'$params->get('count_clicks')) == 1)
                    {
                        
    $item->link    JRoute::_('index.php?option=com_weblinks&task=weblink.go&catid=' $item->catslug '&id=' $item->slug);
                    }
                    else
                    {
                        
    $item->link $item->url;
                    }
                }

                return 
    $items;
            }
            else
            {
                return;
            }
        }
    }
     
  2. kama812

    kama812

    Регистрация:
    30 мар 2013
    Сообщения:
    311
    Симпатии:
    194
    джумлу не знаю, но
    можешь поискать инфу по "list.ordering random" типа http://joodb.feenders.de/forum/4-questions/608-solved-sorting-results-sql-order-by.html

    или поставть лимит где то в 20-30 ссылок и
    после этой строчки
    $items = $model->getItems();
    добавить

    shuffle($items); //перемешаем
    $items = array_slice($items,0,2); // обрежем до 2
     
    Последнее редактирование: 13 мар 2014
    xoff нравится это.