You can add metadata to a website folder, i.g. adding in it a file, such as . folder, within write something like:
{
"description": "your description",
"order": 2
}
“order”: 2, in case you want that that folder be the second in your webpage
In the webpage you can retrieve the metadata info with a code like this:
<?php
$d = dir(".");
$folders = [];
// Array delle cartelle da escludere
$excludedDirs = ['excluded-dir', 'another-excluded-dir', 'yet-another-excluded-dir'];
while (false !== ($entry = $d->read())) {
// Controlla se l'entry è una directory e non è una delle cartelle da escludere
if (is_dir($entry) && ($entry != '.') && ($entry != '..') && !in_array($entry, $excludedDirs)) {
$metadataFile = $entry . '/.directory';
$metadata = [];
// Recupera i metadati dal file .directory
if (file_exists($metadataFile)) {
$metadata = json_decode(file_get_contents($metadataFile), true); // Leggi e decodifica il contenuto del file
}
// Aggiungi la cartella e i metadati all'array
$folders[] = [
'name' => $entry,
'displayName' => str_replace('-', ' ', $entry), // Sostituisci i trattini con spazi per la visualizzazione
'order' => isset($metadata['order']) ? $metadata['order'] : PHP_INT_MAX, // Usa un valore alto se non è specificato
'description' => isset($metadata['description']) ? $metadata['description'] : ''
];
}
}
// Ordina le cartelle in base all'attributo 'order'
usort($folders, function($a, $b) {
return $a['order'] <=> $b['order'];
});
echo "<h2>sotto-sezioni</h2>\n<ul>";
foreach ($folders as $folder) {
echo "<li order='{$folder['order']}'><a class='big' href='{$folder['name']}'>{$folder['displayName']}</a>";
if ($folder['description']) {
echo "<br /><p>{$folder['description']}</p>"; // Mostra la descrizione se presente
}
echo "</li>";
}
echo "</ul>";
$d->close();
?>