-2

K2 で joomla を使用しており、最初にアーカイブ モジュールで年ごとにニュースを注文したいと考えています。The year をクリックすると、その年のすべての記事を表示する必要があります。ビット モジュールも拡張する必要があります より深くフィルタリングする月

このように動作するようにモジュールを変更するにはどうすればよいですか?

あいさつ

これが私の言いたいことです

2012年 - 1月 - 2月 - 3月 - など 2013 - 1月 - 2月 - 3月 - など

年と月の両方がフィルター可能である必要があります

このように動作するようにモジュールを変更するにはどうすればよいですか?

あいさつ

これが私の言いたいことです

リスト項目

  • 2012年
  • 1月
  • 2月あり
  • 行進
  • などなど

  • 2013年

    • 1月
    • 2月あり
    • 行進
    • などなど

年と月の両方がフィルター可能である必要があります

このように動作するようにモジュールを変更するにはどうすればよいですか?

あいさつ

<div id="k2ModuleBox<?php echo $module->id; ?>" class="k2ArchivesBlock<?php if($params->get('moduleclass_sfx')) echo ' '.$params->get('moduleclass_sfx'); ?>">
  <ul>
    <?php foreach ($months as $month): ?>
    <li>
      <?php if ($params->get('archiveCategory', 0) > 0): ?>
      <a href="<?php echo JRoute::_('index.php?option=com_k2&view=itemlist&task=date&month='.$month->m.'&year='.$month->y.'&catid='.$params->get('archiveCategory')); ?>">
        <?php echo $month->name.' '.$month->y; ?>
        <?php if ($params->get('archiveItemsCounter')) echo '('.$month->numOfItems.')'; ?>
      </a>
      <?php else: ?>
      <a href="<?php echo JRoute::_('index.php?option=com_k2&view=itemlist&task=date&month='.$month->m.'&year='.$month->y); ?>">
        <?php echo $month->name.' '.$month->y; ?>
        <?php if ($params->get('archiveItemsCounter')) echo '('.$month->numOfItems.')'; ?>
      </a>
      <?php endif; ?>
    </li>
    <?php endforeach; ?>
  </ul>
</div>

クエリは別のファイルからのものです

    public static function getArchive(&$params)
{

    $mainframe = JFactory::getApplication();
    $user = JFactory::getUser();
    $aid = (int)$user->get('aid');
    $db = JFactory::getDBO();

    $jnow = JFactory::getDate();
    $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql();

    $nullDate = $db->getNullDate();

    $query = "SELECT DISTINCT MONTH(created) as m, YEAR(created) as y FROM #__k2_items  WHERE published=1 AND ( publish_up = ".$db->Quote($nullDate)." OR publish_up <= ".$db->Quote($now)." ) AND ( publish_down = ".$db->Quote($nullDate)." OR publish_down >= ".$db->Quote($now)." ) AND trash=0";
    if (K2_JVERSION != '15')
    {
        $query .= " AND access IN(".implode(',', $user->getAuthorisedViewLevels()).") ";
        if ($mainframe->getLanguageFilter())
        {
            $languageTag = JFactory::getLanguage()->getTag();
            $query .= " AND language IN (".$db->Quote($languageTag).", ".$db->Quote('*').") ";
        }
    }
    else
    {
        $query .= " AND access<={$aid} ";
    }

    $catid = $params->get('archiveCategory', 0);
    if ($catid > 0)
        $query .= " AND catid=".(int)$catid;

    $query .= " ORDER BY created DESC";

    $db->setQuery($query);
    $rows = $db->loadObjectList();
    $months = array(JText::_('K2_JANUARY'), JText::_('K2_FEBRUARY'), JText::_('K2_MARCH'), JText::_('K2_APRIL'), JText::_('K2_MAY'), JText::_('K2_JUNE'), JText::_('K2_JULY'), JText::_('K2_AUGUST'), JText::_('K2_SEPTEMBER'), JText::_('K2_OCTOBER'), JText::_('K2_NOVEMBER'), JText::_('K2_DECEMBER'), );
    if (count($rows))
    {

        foreach ($rows as $row)
        {
            if ($params->get('archiveItemsCounter'))
            {
                $row->numOfItems = modK2ToolsHelper::countArchiveItems($row->m, $row->y, $catid);
            }
            else
            {
                $row->numOfItems = '';
            }
            $row->name = $months[($row->m) - 1];
            $archives[] = $row;
        }

        return $archives;

    }
}
4

1 に答える 1

0

これは私の問題を解決しました:

<div id="k2ModuleBox<?php echo $module->id; ?>" class="k2ArchivesBlock<?php if($params->get('moduleclass_sfx')) echo ' '.$params->get('moduleclass_sfx'); ?>">

  <?php
    foreach ($months as $month) {
        $years[$month->y][] = $month;
    }
  ?>
  <?php foreach ($years as $year => $months) : ?>
    <h4><?php echo $year; ?></h4>
    <ul>
        <?php foreach ($months as $month): ?>
        <li>
        <?php if ($params->get('archiveCategory', 0) > 0): ?>
        <a href="<?php echo JRoute::_('index.php?option=com_k2&view=itemlist&task=date&month='.$month->m.'&year='.$month->y.'&catid='.$params->get('archiveCategory')); ?>">
            <?php echo $month->name.' '.$month->y; ?>
            <?php if ($params->get('archiveItemsCounter')) echo '('.$month->numOfItems.')'; ?>
        </a>
        <?php else: ?>
        <a href="<?php echo JRoute::_('index.php?option=com_k2&view=itemlist&task=date&month='.$month->m.'&year='.$month->y); ?>">
            <?php echo $month->name.' '.$month->y; ?>
          <?php if ($params->get('archiveItemsCounter')) echo '('.$month->numOfItems.')'; ?>
          </a>
        <?php endif; ?>
        </li>
        <?php endforeach; ?>
    </ul>
    <?php endforeach; ?>
</div>
于 2012-12-05T22:48:25.413 に答える