我想将这个简单的图像滑块用于艺术学生的joomgallery:
唯一的问题是订购。如何通过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;
}
}
答案 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
只需添加一个像这样的新字段
<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;
接下来获取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条件。