如何将同一页面中的月视图和列表视图与TYPO3 7.6.14中的Calendar Base扩展混合

时间:2017-01-13 17:18:20

标签: typo3 extbase typo3-7.6.x

我一直在看日历基地的代码,但我还没有将其理解为代码中的工作标记及其功能。

我想知道是否有可能创建一个迷你日历,并且当我点击一天时,事件显示在他们下面的列表中。

请指导我解决问题的方法,而不是给我一个代码。

1 个答案:

答案 0 :(得分:0)

EXT有很多可能的配置:cal。 我将只为TYT3 CMS 7.6中的EXT:cal版本1.10.3提供所需的最低配置,因为我用于我的一个项目(不是滑动的,如我第一次评论所述)。

您已安装EXT:cal并包含静态typoscripts('基于标准CSS的模板'以及'标准CSS样式')。

在TYPO3的日历页面中,您可以创建两个类型插件的竞争对手,您可以选择'TYPO3 calendar'作为插件。 月份迷你视图的第一个contentelement,list-view的第二个contentelement,具有以下配置:

  1. Contentelement插件月份迷你视图:
  2. 标签'常规设置' 字段'允许的视图' 选择'月'

    标签'月视图' 字段'显示为迷你日历' 激活复选框。

    1. Contentelement插件列表视图:
    2. 标签'常规设置' 字段'允许的视图' 按此顺序选择'列表''单一事件'

      插件配置中的所有其他字段都为空或具有默认值。我更喜欢,不使用字段记录存储页面,而是使用typoscript 'plugin.tx_cal_controller.pidList'

      在前端,您应该已经看到了一个月份迷你列表视图。

      将以下typoscript配置(设置)添加到您的页面树中,我发现在组合使用mont-mini和列表视图时非常有用:

      // 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为day,week,month,year,list..view。

      您将需要一个sitepackage扩展,在以下示例EXT:mysitepackage中包含以下最少文件:

      • 类/ Xclass / CalController.php
      • ext_localconf.php
      • ext_emconf.php
      • ext_icon.gif

      Classes / Xclass / CalController.php的内容

      <?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的内容

      <?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
      

      月视图中的所有数字都应该是一个链接,如果它包含有效的事件日期或时间段。

      您将错过指向下个月或上个月的链接,这将保留当前月份迷你列表视图组合。 然后你需要调整一些模板。看看:

      plugin.tx_cal_controller.view.month.monthMiniTemplate ### PREV_MONTHLINK ### ### NEXT_MONTHLINK ### 的标记和标记。

      我可以在另一个问题中描述这一点。

相关问题