[!!!][BUGFIX] Prefer root templates for template evaluation 19/34319/3
authorMarkus Klein <klein.t3@reelworx.at>
Tue, 18 Nov 2014 20:01:32 +0000 (21:01 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Thu, 20 Nov 2014 23:10:50 +0000 (00:10 +0100)
The Core always tries to use the first template according to their
sorting on a page. This totally ignores the root-flag of a template.

Change the evaluation to give root templates precedence over
extension templates independent of the sorting.

Resolves: #19737
Releases: master
Change-Id: I78948d8bde4d373bc5b26eb912d1789fc74bbbb1
Reviewed-on: http://review.typo3.org/34319
Reviewed-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Tested-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Reviewed-by: Benjamin Mack <benni@typo3.org>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/core/Classes/TypoScript/TemplateService.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-19737-PreferRootTemplate.rst [new file with mode: 0644]

index 16e0c51..51b613e 100644 (file)
@@ -582,7 +582,7 @@ class TemplateService {
                        if ($a == $c - 1 && $start_template_uid) {
                                $addC = ' AND uid=' . (int)$start_template_uid;
                        }
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_template', 'pid=' . (int)$this->absoluteRootLine[$a]['uid'] . $addC . ' ' . $this->whereClause, '', 'sorting', 1);
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_template', 'pid=' . (int)$this->absoluteRootLine[$a]['uid'] . $addC . ' ' . $this->whereClause, '', 'root DESC, sorting', 1);
                        if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                $this->versionOL($row);
                                if (is_array($row)) {
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-19737-PreferRootTemplate.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-19737-PreferRootTemplate.rst
new file mode 100644 (file)
index 0000000..9817fac
--- /dev/null
@@ -0,0 +1,27 @@
+==================================================
+Breaking: #19737 - Prefer root templates for pages
+==================================================
+
+Description
+===========
+
+The Core now gives templates having set the root-flag precedence over normal extension templates.
+This ignores the fact that normally the first template of the current page is chosen, following their sorting.
+
+This improves user experience as the user expects the root template to be the one with highest priority.
+
+Impact
+======
+
+Pages where multiple templates are present not having a root-template as the topmost template
+in the list will encounter different results when templates are evaluated.
+
+Affected installations
+======================
+
+Installations with pages where multiple templates are present not having a/the root-template as the topmost template.
+
+Migration
+=========
+
+Ensure the templates have correct flags set.