所以我正在开发一个需要大量文件链接的项目(2000)
以下是我项目的一些细节:
每门课程都有20门课程资料(pdf文件):
5份学习表
5个学习单答案
5个分级作业
5年级作业答案
现在当前网站是http://ops.emsofl.com/Index_stu.html,我正在重新创建该网站,并且需要添加文件和链接。当前目录树非常不稳定,并且不遵循任何一致的命名约定。我希望,能够尽可能地自动化这个过程。我知道我需要更改目录树和文件名以遵循一种简单的格式,但是,我不确定如何继续解析文件并通过json或其他格式自动添加它们。这真的是我需要帮助的。以下是目前使用zurb基础的课程布局的示例代码:
<div class="tabs-content">
<div class="content active" id="p1a">
<ul class="ss">
<li><a href="#">Study Sheet Unit One</a></li>
<li><a href="#">Study Sheet Unit Two</a></li>
<li><a href="#">Study Sheet Unit Three</a></li>
<li><a href="#">Study Sheet Unit Four</a></li>
<li><a href="#">Study Sheet Unit Five</a></li>
</ul>
</div>
<div class="content" id="p1b">
<ul class="ssa">
<li><a href="#">Study Sheet w/ Answers Unit One</a></li>
<li><a href="#">Study Sheet w/ Answers Unit Two</a></li>
<li><a href="#">Study Sheet w/ Answers Unit Three</a></li>
<li><a href="#">Study Sheet w/ Answers Unit Four</a></li>
<li><a href="#">Study Sheet w/ Answers Unit Five</a></li>
</ul>
</div>
<div class="content" id="p1c">
<ul class="ga">
<li><a href="#">Graded Assignment Unit One</a></li>
<li><a href="#">Graded Assignment Unit Two</a></li>
<li><a href="#">Graded Assignment Unit Three</a></li>
<li><a href="#">Graded Assignment Unit Four</a></li>
<li><a href="#">Graded Assignment Unit Five</a></li>
</ul>
</div>
<div class="content" id="p1d">
<ul class="gaa">
<li><a href="#">Graded Assignment w/ Answers Unit One</a></li>
<li><a href="#">Graded Assignment w/ Answers Unit Two</a></li>
<li><a href="#">Graded Assignment w/ Answers Unit Three</a></li>
<li><a href="#">Graded Assignment w/ Answers Unit Four</a></li>
<li><a href="#">Graded Assignment w/ Answers Unit Five</a></li>
</ul>
答案 0 :(得分:1)
根据聊天中解释的具体情况,
唉,某些地方有要完成(特别是对于未来的懒惰可维护性)。 在事情进一步发展之前,我建议首先实现文件路径/文件命名约定。这也应该有助于创建未来的其他解决方案,而不是我建议的解决方案。
主要观点(当前缺陷)是缺乏任何可自动化的关系/可预测性!
首先重构文件路径/文件名:
让我们创建一个文件夹,我们将其视为课程材料的根目录:courses/
。
在课程中,我们创建了您的主要类别:
courses/math/ courses/english/ courses/science/ courses/social science/ courses/electives/
现在,对于每个课程类别(例如:课程/数学/,课程/英语等),您可以创建文件夹(或复制现有文件夹)并(重新)将它们命名为课程编号:
courses/math/HS-ES-103/ courses/math/HS-ES-104/ etc... courses/english/HS-ES-113/ courses/english/HS-ES-114/ etc...
现在,在每门课程(例如课程/数学/ HS-ES-103,课程/英语/ HS-ES-113)中,您分别创建(或重命名)4个文件夹:
courses/category/course-number/ssu/ courses/category/course-number/ssa/ courses/category/course-number/gau/ courses/category/course-number/gaa/
包含课程资料(pdf文件) 这些应该包含课程的相应pdf文件 此外,在每个课程(4个文件夹旁边)中,您都可以创建包含课程元数据的文件:
这可能是在xml,json,csv,txt ......你发现从php解析最简单的东西。
注意:还有一个额外的好处,因为在该文件夹结构中的一些简单描述(最好是高度人类可读的)在将来不会受到伤害......
现在,手动创建课程/类别将比创建脚本更快。 大部分工作将是创建(和移动相关课程文件)或重命名课程代码文件夹并添加元数据信息文件。
最后,文件名必须按正确的顺序按字母顺序排序
unpredictable_string_1.pdf
没问题。 two_unpredictable_string.pdf
不是。
如果有unpredictable_string_[one|two|three|four|five].pdf
的文件夹,您可以使用命令行脚本清除它们,该命令行脚本用它们各自的数字(1,2,3,4,5)替换一,二,三,四和五在文件名unpredictable_string_[1|2|3|4|5].pdf
中。
从这里可以很容易地采用以下两种方式之一:
示例最终结构:
> dir courses/math/HS-ES-103/ courses/math/HS-ES-103/ssu/ courses/math/HS-ES-103/ssa/ courses/math/HS-ES-103/gau/ courses/math/HS-ES-103/gaa/ courses/math/HS-ES-103/info.txt (json/csv/xml etc.) > dir courses/math/HS-ES-103/ssu courses/math/HS-ES-103/ssu/HS-ES-103_ssu_1.pdf courses/math/HS-ES-103/ssu/HS-ES-103_ssu_2.pdf courses/math/HS-ES-103/ssu/HS-ES-103_ssu_3.pdf courses/math/HS-ES-103/ssu/HS-ES-103_ssu_4.pdf courses/math/HS-ES-103/ssu/HS-ES-103_ssu_5.pdf
现在您已经修复了目录结构,使用例如PHP解析任何信息和关系是相对轻而易举的。
现在您可以使用PHP从模板动态构建静态页面,或者让它创建一个(或每个类别一个)json文件(或xml,csv等等)以传递给浏览器..
重要的是要注意,不要在每个页面请求上解析整个目录树。
最好有一个隐藏的管理页面,其中包含一个在更新后自动更新存储缓存的功能。或者,您可以每24小时自动更新一次(使用通用模板循环检查缓存页面/文件的时间戳,如果时间超过x时间,则重新运行更新程序脚本)。
搜索SO以获取解析目录,文件(csv / json等)和缓存页面的示例。
祝你的项目好运!