You could realize it for example that way:
PHP file:
function requestAccountFolderStructure($dir) {
$list = array();
$path = $dir;
foreach (new DirectoryIterator($path) as $file) {
if ($file->isDot())
continue;
if ($file->isDir()) {
$record = array();
$record['name'] = $file->getFilename();
$record['sub'] = array();
if (is_dir($dir . '/' . $file)) {
$record['sub'] = requestAccountFolderStructure($dir . '/' . $file);
}
$list[] = $record;
}
}
return $list;
}
$dir = 'YOUR DIR';
$directories = requestAccountFolderStructure($dir);
$smarty->assign('directories',$directories);
$smarty->display('directory.tpl');
Smarty file - method 1 using function:
{function name=showDir}
{if $directories|@count gt 0}
<ul class="list-folderstructure">
{foreach from=$directories item=item name=info}
<li class="li-folderstructure" data-folderstructure="'{$item.name}} '">
<a class="a-folderstructure"><span class="name-folderstructure">{$item.name}</span> <span class="glyphicon glyphicon-play"></span></a>
{showDir directories=$item.sub}
</li>
{/foreach}
</ul>
{/if}
{/function}
{showDir directories=$directories}
Smarty template - using include recursion
{if $directories|@count gt 0}
<ul class="list-folderstructure">
{foreach from=$directories item=item name=info}
<li class="li-folderstructure" data-folderstructure="'{$item.name}} '">
<a class="a-folderstructure"><span class="name-folderstructure">{$item.name}</span> <span class="glyphicon glyphicon-play"></span></a>
{include file="directory.tpl" directories=$item.sub}
</li>
{/foreach}
</ul>
{/if}