如何在查看Joomla组件库时停止创建资源#100文件夹


How to stop Resource #100 folder being created when Joomla component gallery is viewed

我为Joomla创建了一个基本组件,允许用户列出一个项目以及一些相关的图像。当包含画廊的页面被查看时,会在根目录中创建一个奇怪的文件夹,格式为资源id #100,每个项目的数量不同。我已经将导致这种情况的代码缩小到以下代码。我的问题是,有人能看到我在做什么来导致这种情况吗?有人能提供替代我用来从特定目录读取文件并返回信息的代码吗?

<p id="sl_gallery">
            <?php if( is_file( JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/main.jpg' ) ) : ?>
            <img src="<?php echo JURI::root().'/components/com_eg/images/gallery/'.$this->eg->id.'/main.jpg' ?>" alt="myimage">
            <?php else: ?>
            <img src="<?php echo JURI::root().'/components/com_eg/images/nolistings.gif'; ?>" alt="myimage" />
            <?php endif; ?>
            <?php
            $TrackDir= opendir(JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/second/');
            $count = 0;
            if ( !JFolder::exists($TrackDir) ) { JFolder::create($TrackDir); }
                while (($file = readdir($TrackDir)) !== false) {
                    if ($file == "." || $file == "..") { }
                    else {
                        ?>
                       <img src="<?php echo JURI::root().'/components/com_eg/images/gallery/'.$this->eg->id.'/second/'.$file; ?>" alt="myimage" />
                    <?php
                    }
                }
            closedir($TrackDir);  ?>
</p>

修改如下:

$TrackDir= opendir(JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/second/');
$count = 0;
if ( !JFolder::exists($TrackDir) ) { JFolder::create($TrackDir); }

…:

$TrackDirPath = JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/second/';
if ( !JFolder::exists($TrackDirPath) ) { JFolder::create($TrackDirPath); }
$TrackDir = opendir($TrackDirPath);
$count = 0;

$TrackDir保存对opendir()调用的结果——这意味着它要么是资源,要么是FALSE。当您将资源转换为字符串时,它会导致Resource id # -您通过(有效地)将其传递给mkdir()来实现。

我已经将路径作为字符串存储在变量$TrackDirPath中,并将其传递给JFolder::create()。我还重新排序了语句,以确保在您尝试打开目录之前目录存在。