Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
af9b327e
Commit
af9b327e
authored
Jan 21, 2008
by
Gábor Hojtsy
Browse files
#206778
follow up by dvessel: better filtering for subtheme files
parent
b797ae5a
Changes
1
Hide whitespace changes
Inline
Side-by-side
includes/theme.inc
View file @
af9b327e
...
...
@@ -754,25 +754,33 @@ function drupal_find_theme_functions($cache, $prefixes) {
function
drupal_find_theme_templates
(
$cache
,
$extension
,
$path
)
{
$templates
=
array
();
// Escape the periods in the extension.
$regex
=
str_replace
(
'.'
,
'\.'
,
$extension
)
.
'$'
;
// Collect sub-themes for the current theme. This allows base themes to have
// sub-themes in its folder hierarchy without affecting the base theme.
global
$theme
;
$sub_themes
=
array
();
// Collect paths to all sub-themes grouped by base themes. These will be
// used for filtering. This allows base themes to have sub-themes in its
// folder hierarchy without affecting the base themes template discovery.
$theme_paths
=
array
();
foreach
(
list_themes
()
as
$theme_info
)
{
if
(
!
empty
(
$theme_info
->
base_theme
)
&&
$theme_info
->
base_theme
==
$theme
)
{
$sub_themes
[]
=
dirname
(
$theme_info
->
filename
);
if
(
!
empty
(
$theme_info
->
base_theme
))
{
$theme_paths
[
$theme_info
->
base_theme
][
$theme_info
->
name
]
=
dirname
(
$theme_info
->
filename
);
}
}
foreach
(
$theme_paths
as
$basetheme
=>
$subthemes
)
{
foreach
(
$subthemes
as
$subtheme
=>
$subtheme_path
)
{
if
(
isset
(
$theme_paths
[
$subtheme
]))
{
$theme_paths
[
$basetheme
]
=
array_merge
(
$theme_paths
[
$basetheme
],
$theme_paths
[
$subtheme
]);
}
}
}
global
$theme
;
$subtheme_paths
=
isset
(
$theme_paths
[
$theme
])
?
$theme_paths
[
$theme
]
:
array
();
// Escape the periods in the extension.
$regex
=
str_replace
(
'.'
,
'\.'
,
$extension
)
.
'$'
;
// Because drupal_system_listing works the way it does, we check for real
// templates separately from checking for patterns.
$files
=
drupal_system_listing
(
$regex
,
$path
,
'name'
,
0
);
foreach
(
$files
as
$template
=>
$file
)
{
//
Catch
sub-theme
s and skip
.
if
(
strpos
(
$file
->
filename
,
str_replace
(
$sub
_
themes
,
''
,
$file
->
filename
))
!==
0
)
{
//
Ignore
sub-theme
templates for the current theme
.
if
(
strpos
(
$file
->
filename
,
str_replace
(
$subtheme
_path
s
,
''
,
$file
->
filename
))
!==
0
)
{
continue
;
}
// Chop off the remaining extensions if there are any. $template already
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment