如何在contao详细信息页面和列表页面中获取上一个和下一个事件的活动? f.e<上一个活动|当前事件(id - 4)|下一个活动>

时间:2016-04-18 13:41:08

标签: contao

如何在contao详细信息页面和列表页面中获取事件上一个和下一个事件? f.e<上一个活动|当前事件(id - 4)|下一个活动

  

块引用

1 个答案:

答案 0 :(得分:0)

我知道没有Contao 3的扩展名。但是,您可以执行以下操作。

event_full模板的顶部插入以下PHP代码:

<?php

$this->getEventUrl = function($objEvent)
{
  global $objPage;
  return \Controller::generateFrontendUrl($objPage->row(), '/' . $objEvent->alias, null, true );
};

$objNextEvent = \CalendarEventsModel::findOneBy(
  array("startDate > ?", "published = '1'", "pid = ?"), 
  array($this->startDate, $this->pid), 
  array('order' => 'startDate ASC'));
$objPreviousEvent = \CalendarEventsModel::findOneBy(
  array("startDate < ?", "published = '1'", "pid = ?"), 
  array($this->startDate, $this->pid), 
  array('order' => 'startDate DESC'));

?>

这将尝试以最简单的方式获取上一个和下一个事件。

event_full模板中的某处插入以下内容(例如,在上一次结束</div>之前:

<?php if ($objPreviousEvent || $objNextEvent): ?>
  <div class="pagination">
    <?php if ($objPreviousEvent): ?>
    <div class="prev">
      <a href="<?= $this->getEventUrl( $objPreviousEvent ) ?>" title="<?= $objPreviousEvent->title ?>">
        &laquo;&nbsp;<?= $objPreviousEvent->title ?>
      </a>
    </div>
    <?php endif ?>
    <?php if ($objNextEvent): ?>
    <div class="next">
      <a href="<?= $this->getEventUrl( $objNextEvent ) ?>" title="<?= $objNextEvent->title ?>">
        <?= $objNextEvent->title ?>&nbsp;&raquo;
      </a>
    </div>
    <?php endif ?>
  </div>
<?php endif ?>

这将回显一些HTML代码中前一个和下一个事件的URL。

有一些缺点:

  • 上面的代码不考虑startend字段
  • 这只会显示同一日历的上一个和下一个事件(否则目标网址可能有误)
  • 这只适用于已启用的auto_item参数

更新:我在这里创建了一个Github Gist:https://gist.github.com/fritzmg/aa4632be2231d77e7d6ec0e5e0a854ae