2013-12-11 2 views
0

У меня есть сайт, работающий на Joomla! 1.5 (невозможно обновить из-за проблемы с шаблоном).
На этом сайте у меня есть страница, где участники могут найти важные файлы, необходимые для членства в нашем клубе.Использование opendir с компонентом PHP Pages для Joomla 1.5

Я организовал эти файлы в некоторых папках, все с использованием того же соглашения об именах (* yyyy-mm-dd_documentName *).

Чтобы упростить задачу, я хочу автоматически перечислить файлы, используя некоторое форматирование.

Поскольку Joomla не позволяет вводить PHP в статьи, я установил PHP Pages Component.
Этот компонент позволяет создавать страницы и ссылаться на них, например. в строке меню.

Слишком перечислить эти файлы, я хочу использовать функцию opendir для PHP, открыв папку и перейдя по папке, чтобы прочитать имена файлов и отформатировать их.
Это код, который я использовал для этого:

if($handle = opendir('/media/files/')) { 
    while(false !== ($entry = readdir($handle))) { 
    echo $entry; 
    } 

    closedir($handle); 
} 

Это дало ошибку как компонент начинает каждый относительный путь от его собственной директории, не обращая внимания на первый/по какой-то причине.
Итак, я попытался исправить это, введя полный URL (начиная с http: //).

Еще не фиксирована, новая ошибка теперь (bestanden.php страница PHP)

Предупреждение: opendir (http://www.example.com/media/files) [function.opendir]: не удалось открыть реж: не реализуется в /home/user/public_html/components/com_php/files/bestanden.php на линии

Кто-то посоветовал мне использовать ftp-handlet (который также поддерживается).
Синтаксис для этого apperantly является ftp://user:[email protected]
Я сделал отдельный счет для этого, в конечном итоге непосредственно в соответствующий каталог, предотвращение кросс-Dir атаки. Это работает, если я вручную попробую это в своем браузере (за исключением того, что он все еще запрашивает учетные данные).
Но это тоже не сработало.

У меня заканчиваются идеи.
Может ли кто-нибудь мне помочь?

РЕШЕНИЕ

Благодаря @Lodder

<ul> 
<?php 

    $path = JPATH_SITE . '/media/files/nieuwsbrieven/'; 
    $files = JFolder::files($path); 
    foreach ($files as $file) { 
    // Strip extension and save name to display it 
    $name = substr($file, 0, strrpos($file, '.')); 
    // Exclude the index I placed inside the dir to prevent direct surfing to the folder 
    if($name != "index") { 
     echo "<li><a href='/media/files/nieuwsbrieven/" . $file . "' title='Nieuwsbrief " . $name . "' target='_blank'>Nieuwsbrief " . $name . "</a></li>"; 
    } 
    } 

?> 
</ul> 

Результат

  • Информационный бюллетень 2013-04-03
  • Newsletter 2013-04-19
  • Newsletter 2013-05-16
  • Newsletter 2013-06-19
  • Newsletter 2013-07-17
  • Newsletter 2013-08-28

ответ

1

Вы должны действительно смотрит на Joomla Docs При попытке вещи. У Joomla есть собственный класс для чтения файлов в папке. Вы ч использовать следующее, чтобы отобразить все файлы в папке:

$path = JPATH_SITE . '/media/files'; 
$files = JFolder::files($path); 

foreach ($files as $file) { 
    echo $file; 
} 

Чтобы использовать этот код, забыть подобные компоненты, что позволяешь использовать пользовательский PHP и т.д., я очень рекомендую плагин называется Sourcerer, который позволяет использовать или PHP или JS в статьях.

Для получения более подробной информации о классах Joomla файловой системы, есть чтение этого:

http://docs.joomla.org/How_to_use_the_filesystem_package#Read_files_from_folder

Надеется, что это помогает

+0

JPATH_SITE является глобальным переменным я думаю? Это приводит к моей корневой папке или определенной папке? – GroundZero

+0

'JPATH_SITE' ведет вас к корню вашего сайта Joomla. Протестируйте код и посмотрите:) – Lodder

+0

Была моя первая догадка. Но я не могу проверить это прямо сейчас. Спасибо за помощь! – GroundZero

Смежные вопросы