Я создаю пакет, который отображает местоположения на карте на основе атрибутов страницы, используя блок списка страниц с пользовательским шаблоном блока.
Я хочу загрузить файл шаблона страницы для страницы карты и еще один для страницы местоположения, чтобы я мог создать макеты для этих страниц в файлах шаблона.Поскольку этот пакет не содержит темы, у меня возникают трудности с получением Concrete5 для загрузки файлов шаблонов из пакета.Типы страниц и шаблоны перечислены в Concrete5, и форма композитора загружается правильно при создании новой страницы.К сожалению, макет из файлов шаблонов из пакета не загружается, поэтому все, что я получаю, это макет шаблона по умолчанию из установленной темы.Любая помощь будет принята с благодарностью!
Это построено на Concrete5.7.5.13
Вот моя файловая структура:
[Package root]
- blocks
- - page_list
- - - templates
- - - - page_list_map.php
- controller.php
- controllers
- - single_page
- - - dashboard
- - - - locations_map_page_list
- - - - - settings
- - - - locations_map_page_list.php
- page_templates
- - location.php
- - locations_map.php
- single_pages
- - dashboard
- - - locations_map_page_list
- - - - settings.php
- - - locations_map_page_list.php
В моем контроллере пакетов у меня естьдобавлен код для настройки шаблона страницы и типов страниц.
Функция добавления шаблона (при этом должен загружаться файл шаблона)
public function addPageTemplates($pkg) {
if (!is_object(PageTemplate::getByHandle('locations_map'))){
$pageTemplate = PageTemplate::add('locations_map', 'Locations Map (Default)', 'full.png', $pkg);
}
if (!is_object(PageTemplate::getByHandle('location'))){
$pageTemplate = PageTemplate::add('location', 'Location (Default)', 'full.png', $pkg);
}
}
Функция добавления типов страниц
public function addPageTypes($pkg) {
// Locations Map Page Type
$mapPageType = PageType::getByHandle('lmpl_locations_map');
if (!is_object($mapPageType)) {
$mapPageTemplate = PageTemplate::getByHandle('locations_map'); // Should match the template file name without the extension
$mapPageType = PageType::add(
array(
'handle' => 'lmpl_locations_map',
'name' => 'Locations Map', //Note: it does not appear you can pass the t() function in the name
'defaultTemplate' => $mapPageTemplate, // This should load the template file from the package
'allowedTemplates' => 'C', //A is all, C is selected only, X is not selected only. Defaults to A if key is not included
'templates' => array($mapPageTemplate), //So, in this case, with C above, ONLY the template listed can be used
'ptLaunchInComposer' => true, //optional, defaults to false, but need to set to true to display the composer form
'ptIsFrequentlyAdded' => false, //optional, defaults to false. Determines whether or not it shows up in the add page type frequent list
'ptPublishTargetTypeID' => 1,
'cParentID' => 1
),
$pkg //this would come from the install or upgrade function usually
);
// Code to setup composer omitted...
// Location Page Type
$locPageType = PageType::getByHandle('lmpl_location');
if (!is_object($location)) {
$locPageTemplate = PageTemplate::getByHandle('location'); // Should match the template file name without the extension
$locPageType = PageType::add(
array(
'handle' => 'lmpl_location',
'name' => 'Location',
'defaultTemplate' => $locPageTemplate, // This should load the template file from the package
'allowedTemplates' => 'C', //A is all, C is selected only, X is not selected only. Defaults to A if key is not included
'templates' => array($locPageTemplate), //So, in this case, with C above, ONLY the template listed can be used
'ptLaunchInComposer' => true, //optional, defaults to false, but need to set to true to display the composer form
'ptIsFrequentlyAdded' => false, //optional, defaults to false. Determines whether or not it shows up in the add page type frequent list
'ptPublishTargetTypeID' => 1,
'cParentID' => 1
),
$pkg //this would come from the install or upgrade function usually
);
// Code to setup composer omitted...
}
Прямо сейчас все файлы шаблонов кодируются для отображения их собственных имен в абзаце, чтобы я мог видеть, правильно ли они загружаются, но все, что я получаю, - это шаблон страницы по умолчанию из активной темы.Как только я получу это, я добавлю макет по умолчанию для этих страниц, чтобы имя местоположения, адрес и карта отображались из атрибутов страницы, которые устанавливает этот пакет.
Я пытаюсь избежать множества настроек для клиента, поэтому я не просто настроил блок, так как это заставило бы редактора добавлять блоки на страницу.В спецификациях этого проекта также указано, что в каждом местоположении должна быть своя собственная страница с возможностью поиска, поэтому использование таблицы базы данных для извлечения данных создает новые проблемы.
Я открыт для предложений относительно лучшего способа сделать это, если файл шаблона страницы не может быть загружен, но я скоро достигну своего бюджетного времени для этого, поэтому я предпочел бы получить файл шаблона для загрузки, еслина все возможно.Спасибо за вашу помощь!