1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-09 08:17:12 +02:00

Additional update for custom page classes for repeater page items. processwire/processwire-requests#239

This commit is contained in:
Ryan Cramer
2024-01-18 11:24:37 -05:00
parent 1216340a46
commit 50a7b4c7c4

View File

@@ -872,11 +872,24 @@ class Templates extends WireSaveableItems {
// determine if custom class available (3.0.152+) // determine if custom class available (3.0.152+)
if($usePageClasses) { if($usePageClasses) {
// generate a CamelCase name + 'Page' from template name, i.e. 'blog-post' => 'BlogPostPage' $customPageClass = '';
$className = ucwords(str_replace(array('-', '_', '.'), ' ', $template->name)); // repeaters support a field-name based name strategy
$className = __NAMESPACE__ . "\\" . str_replace(' ', '', $className) . 'Page'; /** @var RepeaterField $field */
if(class_exists($className) && wireInstanceOf($className, $corePageClass)) { if(strpos($template->name, 'repeater_') === 0) {
$pageClass = $className; $field = $this->wire()->fields->get(ltrim(strstr($template->name, '_'), '_'));
if($field && wireInstanceOf($field->type, 'FieldtypeRepeater')) {
$customPageClass = $field->type->getCustomPageClass($field);
}
}
if($customPageClass) {
$pageClass = $customPageClass;
} else {
// generate a CamelCase name + 'Page' from template name, i.e. 'blog-post' => 'BlogPostPage'
$className = ucwords(str_replace(array('-', '_', '.'), ' ', $template->name));
$className = __NAMESPACE__ . "\\" . str_replace(' ', '', $className) . 'Page';
if(class_exists($className) && wireInstanceOf($className, $corePageClass)) {
$pageClass = $className;
}
} }
} }
@@ -1155,4 +1168,3 @@ class Templates extends WireSaveableItems {
*/ */
} }