模板文件夹子目录中的递归树枝模板文件搜索
问题描述:
我已经为木材制作了自己的组件(树枝文件)库。在树枝模板中包含路径是一个问题,因为我的库具有树结构并且增长,我希望包含这种方式{%include“map-header”%}文件树中的任何文件,并且我要树某些树,它应该有可能给予优先权。模板文件夹子目录中的递归树枝模板文件搜索
现在我用PHP函数来搜索subtirectories树枝文件,包括他们一样,{%包括FN( '块', '地图头')%}
我目前的PHP函数:
function block($name){
$locations = array(
FRONTPATH.'app/blocks/site.blocks/',
FRONTPATH.'app/blocks/common.blocks/',
FRONTPATH.'app/blocks/ok.blocks/',
FRONTPATH.'app/blocks/base.blocks/'
);
foreach ($locations as $location) {
$path = realpath($location);
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
{
$filename = str_replace(DIRECTORY_SEPARATOR,"/",$filename);
if(preg_match('/\/'.$name.'.twig/',$filename)){
return explode('/frontend/', $filename)[1];
}
}
}
return; }
答
那是我的解决方案
$root= FRONTPATH.'app/blocks/';
$iter = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST,
RecursiveIteratorIterator::CATCH_GET_CHILD // Ignore "Permission denied"
);
$paths = array($root);
foreach ($iter as $path => $dir) {
if ($dir->isDir() && strpos($path, '.git') == false) {
$paths[] = $path;
}
}
Timber::$locations = $paths;
你已经尝试了[模板位置(https://timber.github.io/docs/guides/template-locations/)指南?对我来说,这似乎就是你正在寻找的东西。或者我错过了什么? – Gchtr
我知道thanx的这种能力,但是如果我有200-300个带模板的不同目录,使用模板位置是个好主意吗? – ijakparov