使用opendir和PHP页面组件为Joomla 1.5

时间:2013-12-11 12:45:11

标签: php joomla joomla1.5 opendir joomla-component

我有一个在Joomla上运行的网站! 1.5(因模板问题无法升级)。
在这个网站上,我有一个页面,会员可以找到我们俱乐部会员所需的一些重要文件。

我将这些文件排列在一些文件夹中,所有文件都使用相同的命名约定(* yyyy-mm-dd_documentName *)。

为了简化操作,我想使用一些格式自动列出文件。

由于Joomla不允许在文章中输入PHP,因此我安装了PHP Pages Component 该组件允许您创建页面并通过例如链接到它们。菜单栏。

如果要列出这些文件,我想使用PHP的opendir函数,打开文件夹并运行文件夹来读取文件名并格式化。
这是我正在使用的代码:

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]:无法打开dir:未实现    /home/user/public_html/components/com_php/files/bestanden.php on    38

有人建议我使用ftp-handlet(也支持) 显而易见的语法是 ftp://user:password@ftp.example.com
我为此做了一个单独的帐户,立即在正确的目录结束,防止交叉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>

结果

  • Nieuwsbrief 2013-04-03
  • Nieuwsbrief 2013-04-19
  • Nieuwsbrief 2013-05-16
  • Nieuwsbrief 2013-06-19
  • Nieuwsbrief 2013-07-17
  • Nieuwsbrief 2013-08-28

1 个答案:

答案 0 :(得分: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

希望这有帮助