У меня есть сайт, работающий на 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
JPATH_SITE является глобальным переменным я думаю? Это приводит к моей корневой папке или определенной папке? – GroundZero
'JPATH_SITE' ведет вас к корню вашего сайта Joomla. Протестируйте код и посмотрите:) – Lodder
Была моя первая догадка. Но я не могу проверить это прямо сейчас. Спасибо за помощь! – GroundZero