Как смешать просмотр месяца и просмотр списка на одной странице с расширением базы календаря в TYPO3 7.6.14

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

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

Пожалуйста направьте меня что путь разрешить его, не дайте мне код.

1 ответ

  1. Существует множество возможных конфигураций для EXT: cal.
    Я приведу только минимально необходимые конфигурации для EXT: cal версии 1.10.3 в TYPO3 CMS 7.6, поскольку я использовал для одного из своих проектов (не скользящий, как упоминалось в первом комментарии).

    Вы установили EXT: cal и включаете статические типоскрипты («стандартный шаблон на основе CSS» и, возможно, «стандартные стили CSS»).

    На Вашей странице календаря в TYPO3 вы создаете два contentelements типа plugin, где вы выбираете ‘TYPO3 calendar’ в качестве плагина.
    Первый contentelement для мини-представления месяца, второй contentelement для представления списка со следующими конфигурациями:

    1. Плагин Contentelement месяц-мини-просмотр:

    Вкладка «Общие настройки»
    поле «разрешенные представления»
    выберите только «месяц».

    Вкладка «просмотр месяца»
    поле «отображение в виде мини-календаря»
    активировать флажок.

    1. Список плагинов Contentelement:

    Вкладка «Общие настройки»
    поле «разрешенные представления»
    выберите ‘List’ и ‘Single Event’ в этом порядке.

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

    На frontend вы уже должны увидеть месяц-мини и список.

    Добавьте следующую конфигурацию typoscript (setup) в дерево страниц, которое я нашел полезным при использовании mont-mini и list view в сочетании:

    // General
    plugin.tx_cal_controller.pidList = [!!!-FILL_HERE_YOUR_CAL_STORAGE-PIDS-PLEASE-!!!]
    
    // List view
    plugin.tx_cal_controller.view.list.starttime = today
    // Use getdate and custom start&end date to use link from minical inside listview
    [globalVar = GP:tx_cal_controller|year >0]
      plugin.tx_cal_controller.view.list.useGetdate = 1
    [else]
      plugin.tx_cal_controller.view.list.useGetdate = 0
    [global]
    // Adapt list view for urls from monthMini view
    // year-view: if (yaer=true && month=false && week=false && day=false)
    [globalVar = GP:tx_cal_controller|year >0] && [globalVar = GP:tx_cal_controller|month <1] && [globalVar = GP:tx_cal_controller|week <1] && [globalVar = GP:tx_cal_controller|day <1]
      plugin.tx_cal_controller.view.list.useCustomStarttime = 1
      plugin.tx_cal_controller.view.list.useCustomEndtime = 1
      plugin.tx_cal_controller.view.list.customStarttimeRelativeToGetdate = 1
      plugin.tx_cal_controller.view.list.customEndtimeRelativeToGetdate = 1
      plugin.tx_cal_controller.view.list.starttime = yearstart
      plugin.tx_cal_controller.view.list.endtime = yearend
    [global]
    // month-view: if (month=true && day=false)
    [globalVar = GP:tx_cal_controller|month >0] && [globalVar = GP:tx_cal_controller|day <1]
      plugin.tx_cal_controller.view.list.useCustomStarttime = 1
      plugin.tx_cal_controller.view.list.useCustomEndtime = 1
      plugin.tx_cal_controller.view.list.customStarttimeRelativeToGetdate = 1
      plugin.tx_cal_controller.view.list.customEndtimeRelativeToGetdate = 1
      plugin.tx_cal_controller.view.list.starttime = monthstart
      plugin.tx_cal_controller.view.list.endtime = monthend
    [global]
    // week-view: if (week=true && (weekday=0 OR weekday=1 OR weekday>1)) // weekday>0 doesnt worx at all
    [globalVar = GP:tx_cal_controller|week >0]
      plugin.tx_cal_controller.view.list.useCustomEndtime = 1
      plugin.tx_cal_controller.view.list.customEndtimeRelativeToGetdate = 1
      plugin.tx_cal_controller.view.list.endtime = +1 week
    [global]
    // day-view: if (day=true && week=false (&& weekday=false))
    [globalVar = GP:tx_cal_controller|day >0] && [globalVar = GP:tx_cal_controller|week <1]
      # hide ' - enddate' in header (startdate - enddate)
      plugin.tx_cal_controller.view.list.heading.2 >
    [global]
    
    // Month view
    plugin.tx_cal_controller.view.month.monthMakeMiniCal = 1
    plugin.tx_cal_controller.view.month.endPointCorrection = 9024000
    plugin.tx_cal_controller.view.month.dayViewLink.prioriCalc >
    

    Теперь вы хотели бы получить номера недели в качестве ссылки на период недели или номера дня в качестве ссылки на этот день в текущем представлении.
    Начиная с EXT: cal версии 1.9 мне нужно XCLASS основной метод контроллера, чтобы установить view-pid для дня,недели,месяца,года,списка..вид.

    Вам понадобится расширение sitepackage, в следующем примере EXT:mysitepackage с минимальными следующими файлами:

    • Classes/Xclass / CalController.РНР
    • ext_localconf.РНР
    • ext_emconf.РНР
    • ext_icon.файл gif

    Содержимое для классов / Xclass / CalController.РНР

    <?php
    namespace Vendorname\Mysitepackage\Xclass;
    
    /**
     * Extended main controller for calendar base
     *
     * @package TYPO3
     * @subpackage tx_mysitepackage
     * @copyright Copyright belongs to the respective authors
     * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later
     */
    class CalController extends \TYPO3\CMS\Cal\Controller\Controller {
    
        /**
         * Override main controller function that serves as the entry point from TYPO3.
         * 
         * @param array The content array
         * @param array The conf array
         * @return string of calendar data
         */
        public function main($content, $conf) {
            /**
             * Use dynamic viewPid for links in month-mini view (day, week, month, year), as used in \TYPO3\CMS\Cal\View\New[VIEW]View->get[VIEW]Link().
             * Fx: Each monthMini view has dayLinks. These links are only enabled, if [VIEW]ViewPid is set (should be set to current page id).
             * TS setup configuration for 'plugin.tx_cal_controller.view.[VIEW].[VIEW]ViewPid' is not stdWrap'able.
             * 
             * See TS:
             * plugin.tx_cal_controller.view.[VIEW].[VIEW]ViewPid = TEXT
             * plugin.tx_cal_controller.view.[VIEW].[VIEW]ViewPid.data = TSFE:id
             * plugin.tx_cal_controller.view.[VIEW].[VIEW]ViewPid.insertData = 1
             */
            // Day
            if ($conf ['view.'] ['day.'] ['dayViewPid.']) {
                $conf ['view.'] ['day.'] ['dayViewPid'] = $this->cObj->cObjGetSingle($conf ['view.'] ['day.'] ['dayViewPid'], $conf ['view.'] ['day.'] ['dayViewPid.']);
            }
            // Week
            if ($conf ['view.'] ['week.'] ['weekViewPid.']) {
                $conf ['view.'] ['week.'] ['weekViewPid'] = $this->cObj->cObjGetSingle($conf ['view.'] ['week.'] ['weekViewPid'], $conf ['view.'] ['week.'] ['weekViewPid.']);
            }
            // Month
            if ($conf ['view.'] ['month.'] ['monthViewPid.']) {
                $conf ['view.'] ['month.'] ['monthViewPid'] = $this->cObj->cObjGetSingle($conf ['view.'] ['month.'] ['monthViewPid'], $conf ['view.'] ['month.'] ['monthViewPid.']);
            }
            // Year
            if ($conf ['view.'] ['year.'] ['yearViewPid.']) {
                $conf ['view.'] ['year.'] ['yearViewPid'] = $this->cObj->cObjGetSingle($conf ['view.'] ['year.'] ['yearViewPid'], $conf ['view.'] ['year.'] ['yearViewPid.']);
            }
            return parent::main($content, $conf);
        }
    }
    

    Содержимое для ext_localconf.РНР

    <?php
    if (!defined ('TYPO3_MODE')) die ('Access denied.');
    
    // XClass main controller class to adjust $conf. See EXT:mysitepackage/Classes/Xclass/CalController.php
    $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['TYPO3\CMS\Cal\Controller\Controller'] = array(
        'className' => 'Vendorname\Mysitepackage\Xclass\CalController',
    );
    

    Установите и убедитесь, что Xclass работает. Затем можно добавить следующую конфигурацию typoscript к существующей установке:

    /**
     * Xclass special
     *
     * Use dynamic viewPid for links in month-mini view (day, week, month, year), as used in \TYPO3\CMS\Cal\View\New[VIEW]View->get[VIEW]Link().
     * Fx: Each monthMini view has dayLinks. These links are only enabled, if [VIEW]ViewPid is set (should be set to current page id).
     * TS setup configuration for 'plugin.tx_cal_controller.view.[VIEW].[VIEW]ViewPid' is not stdWrap'able.
     *
     * XClass main controller class to adjust $conf. See EXT:mysitepackage/Classes/Xclass/CalController.php
     */
    # day
    plugin.tx_cal_controller.view.day.dayViewPid = TEXT
    plugin.tx_cal_controller.view.day.dayViewPid.data = TSFE:id
    plugin.tx_cal_controller.view.day.dayViewPid.insertData = 1
    # week
    plugin.tx_cal_controller.view.week.weekViewPid = TEXT
    plugin.tx_cal_controller.view.week.weekViewPid.data = TSFE:id
    plugin.tx_cal_controller.view.week.weekViewPid.insertData = 1
    # month
    plugin.tx_cal_controller.view.month.monthViewPid = TEXT
    plugin.tx_cal_controller.view.month.monthViewPid.data = TSFE:id
    plugin.tx_cal_controller.view.month.monthViewPid.insertData = 1
    # year
    plugin.tx_cal_controller.view.year.yearViewPid = TEXT
    plugin.tx_cal_controller.view.year.yearViewPid.data = TSFE:id
    plugin.tx_cal_controller.view.year.yearViewPid.insertData = 1
    

    И все номера в month-view должны быть связаны, если они содержат действительный день или период события.

    Вы пропустите ссылку на следующий или предыдущий месяц,который будет оставаться I текущий месяц-мини и список комбинации.
    Затем вам нужно адаптировать некоторые шаблоны. Взгляните на:

    плагин.tx_cal_controller.вид.месяц.monthMiniTemplate
    и маркеры для # # # PREV_MONTHLINK### и ###NEXT_MONTHLINK### .

    Я мог бы описать это в другом вопросе.