JoomGallery.net |图像排序asc

时间:2016-06-27 10:05:24

标签: joomla3.0

我想将这个简单的图像滑块用于艺术学生的joomgallery:

this question comments

唯一的问题是订购。如何通过id而不是文件名获得升序图像?

感谢彼得

<?php
class images
{
    public function __construct()
    {
        $file = JPATH_ROOT. '/components/com_joomgallery/interface.php';
        if(!file_exists($file)){
            JError::raiseError(500, 'JoomGallery seems not to be installed');
        } else {
            require_once $file;
            $this ->interface = new JoomInterface();
        }
    }
    public function getFirstImage()
    {
        $images = $this ->talkToJoomgallery();
        return $images[0];
	
    }
    public function getImages()
    {
        $images = $this ->talkToJoomgallery();
        return $images;
    }
    public function talkToJoomgallery()
    {
        
        $images = $this ->interface ->getPicsByCategory( $this ->categoryid );
        $imagepath = $this ->joomgalleryImagePath();
        $theimages = array();
        $c = 0;
        foreach ($images as $i){
            $theimages[$c]=  array( 
                    'imgpath' => JURI::base() . $imagepath . $i->catpath . '/' . $i->imgfilename 
                    ,'imgtitle' => $i->imgtitle
                    ,'imgtext' => $i->imgtext
                    );
        
            $c ++;
        }
        shuffle($theimages);
                    
        return $theimages;
    }
    private function joomgalleryImagePath()
    {
        
        return $this ->interface ->getJConfig( 'jg_pathoriginalimages' );
    }
    public function __set($property, $value){
    $this->$property = $value;
    }
}

1 个答案:

答案 0 :(得分:0)

您的图片仅根据图片ID加载,但此命令正在重新索引数组,即shuffle($theimages); 您可以通过

注释掉该行
//shuffle($theimages)

另外,对于订购图像,您可以在helper.php文件中更改此行

$images = $this->interface->getPicsByCategory($this->categoryid);

$images = $this->interface->getPicsByCategory($this->categoryid,null,'ordering' );

这将按照您在joomla管理员后端拖放图像的方式对图像进行排序。

根据您的最新查询更新

假设您要添加可通过admin控制的参数值(排序)。您需要更改xml文件mod_joomgallery_slider.xml  只需添加一个像这样的新字段

&#13;
&#13;
<field
	name = "sorting"
	type = "radio"
	label = "Sorting"
	description = "Sort by Ordering or random"
	default = "ordering"
	>
	<option value = "ordering">Ordering</option>
	<option value = "rand()">Random</option>
	</field>
&#13;
&#13;
&#13;

接下来获取helper.php文件中的param,然后像这样更改函数talkToJoomgallery()

public function talkToJoomgallery()
    {
        //Externally calling a module param
        jimport( 'joomla.html.parameter' );
        jimport( 'joomla.application.module.helper' );
        $module = JModuleHelper::getModule('mod_joomgallery_slider');
        $moduleParams = new JRegistry();
        $moduleParams->loadString($module->params);
        $sorting = $moduleParams->get( 'sorting' );

        $images = $this ->interface ->getPicsByCategory( $this ->categoryid,null,$sorting );
        $imagepath = $this ->joomgalleryImagePath();

        $theimages = array();
        $c = 0;
        foreach ($images as $i){
            $theimages[$c]=  array( 
                    'imgpath' => JURI::base() . $imagepath . $i->catpath . '/' . $i->imgfilename 
                    ,'imgtitle' => $i->imgtitle
                    ,'imgtext' => $i->imgtext
                    );

            $c ++;
        }
        //var_dump($theimages); exit;
        //shuffle($theimages);

        return $theimages;

    }

更新:在一个页面上显示2个滑块模块。

有些文件需要更改:

在mod_joomgallery_slider.php文件中,将此行更改为

include('helper.php');

include_once('helper.php');

这可确保文件包含一次。

另一个更改是删除default.php中的函数imageText并将其包含在helper.php类中,否则将抛出function redeclaration error。但是现在default.php文件仍然会出错,因为函数imageText将不会定义,但是您已经将该函数添加到helper.php中。因此,default.php仅在您更改

时才有效
echo imageText( $i, $params );

echo $image->imageText( $i, $params );// You are calling helper object

请记住改变if和else条件。