Как вы загружаете файл шаблона страницы из пакета? - PullRequest
0 голосов
/ 09 июля 2019

Я создаю пакет, который отображает местоположения на карте на основе атрибутов страницы, используя блок списка страниц с пользовательским шаблоном блока.

Я хочу загрузить файл шаблона страницы для страницы карты и еще один для страницы местоположения, чтобы я мог создать макеты для этих страниц в файлах шаблона.Поскольку этот пакет не содержит темы, у меня возникают трудности с получением 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...
}

Прямо сейчас все файлы шаблонов кодируются для отображения их собственных имен в абзаце, чтобы я мог видеть, правильно ли они загружаются, но все, что я получаю, - это шаблон страницы по умолчанию из активной темы.Как только я получу это, я добавлю макет по умолчанию для этих страниц, чтобы имя местоположения, адрес и карта отображались из атрибутов страницы, которые устанавливает этот пакет.

Я пытаюсь избежать множества настроек для клиента, поэтому я не просто настроил блок, так как это заставило бы редактора добавлять блоки на страницу.В спецификациях этого проекта также указано, что в каждом местоположении должна быть своя собственная страница с возможностью поиска, поэтому использование таблицы базы данных для извлечения данных создает новые проблемы.

Я открыт для предложений относительно лучшего способа сделать это, если файл шаблона страницы не может быть загружен, но я скоро достигну своего бюджетного времени для этого, поэтому я предпочел бы получить файл шаблона для загрузки, еслина все возможно.Спасибо за вашу помощь!

...