Here’s an example of a PHP script that generates a link directory web page for all .html files in a directory and its subdirectories. The table is sortable by file creation date. The script uses Bootstrap for styling and Ajax for dynamic sorting. The design also includes a search engine in case you have a lot of files to sort.
<!DOCTYPE html>
<html>
<head>
<title>Link Directory</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdn.datatables.net/1.10.24/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.24/css/jquery.dataTables.min.css">
</head>
<body>
<div class="container">
<h1>Link Directory</h1>
<table id="linkTable" class="table">
<thead>
<tr>
<th>File Name</th>
<th>Creation Date</th>
</tr>
</thead>
<tbody>
<?php
$directory = './'; // Path to the directory to scan
$fileExtensions = ['html']; // File extensions to include
// Recursive function to scan directory and subdirectories
function scanDirectory($dir) {
global $fileExtensions;
$htmlFiles = [];
$files = scandir($dir);
foreach ($files as $file) {
if ($file === '.' || $file === '..') {
continue;
}
$filePath = $dir . '/' . $file;
if (is_dir($filePath)) {
$htmlFiles = array_merge($htmlFiles, scanDirectory($filePath));
} else {
$fileExtension = pathinfo($file, PATHINFO_EXTENSION);
if (in_array($fileExtension, $fileExtensions)) {
$htmlFiles[] = $filePath;
}
}
}
return $htmlFiles;
}
$htmlFiles = scanDirectory($directory);
// Sort files by creation date
usort($htmlFiles, function($a, $b) {
return filemtime($a) - filemtime($b);
});
foreach ($htmlFiles as $file) {
$fileName = basename($file);
$creationDate = date('Y-m-d H:i:s', filemtime($file));
$relativePath = ltrim(substr($file, strlen($directory)), '/');
echo '<tr>';
echo '<td><a href="' . $relativePath . '">' . $fileName . '</a></td>';
echo '<td>' . $creationDate . '</td>';
echo '</tr>';
}
?>
</tbody>
</table>
</div>
<script>
$(document).ready(function() {
$('#linkTable').DataTable();
});
</script>
</body>
</html>
Make sure to save this script with a .php extension (e.g., link_directory.php) and place it in the directory where you want to generate the link directory web page. When you open the script in a web browser, it will display a table with links to all .html files in the directory and subdirectories, sorted by creation date. The table is sortable using the DataTables plugin provided by Ajax.
Related Articles