Как остановить создание папки Resource # 100 при просмотре галереи компонентов Joomla - PullRequest
0 голосов
/ 20 декабря 2011

Я создал базовый компонент для Joomla, который позволяет пользователям перечислять элемент вместе с некоторыми связанными изображениями.При просмотре страницы, содержащей галерею, в корневом веб-каталоге создается странная папка в формате идентификатора ресурса # 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>

1 Ответ

1 голос
/ 20 декабря 2011

Изменить это:

$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(). Я также переупорядочил операторы, чтобы убедиться, что каталог существует, прежде чем пытаться его открыть.

...