private:koding:hostcms:modules:informacionnye_sistemy:filtracija_po_godam

Фильтрация по годам

  1. Вставляем код решения в ТДС перед вызовом метода show():
    $oCore_QueryBuilder_Select = Core_QueryBuilder::select("extract( year from datetime) as res" )
    	->from('informationsystem_items')
    	->where('informationsystem_id', '=', Core_Array::get(Core_Page::instance()->libParams, 'informationsystemId'))
    	->where('informationsystem_group_id', '=', $Informationsystem_Controller_Show->group)
    	->where('active', '=', 1)
    	->where('deleted', '=', 0)
    	->groupby('res')
    ;
    $aYears = $oCore_QueryBuilder_Select->execute()->asAssoc()->result();
     
     
    $yearsXML = Core::factory('Core_Xml_Entity')->name('years');
    foreach ($aYears as $aYear)
    {
     $yearsXML->addEntity(
    		Core::factory('Core_Xml_Entity')
    			->name('year')->value($aYear['res'])
    	);
    }
     
    $Informationsystem_Controller_Show->addEntity($yearsXML);
    // /KAD
     
    // KAD: фильтрация по годам
     
    $year = (int)Core_Array::getGet("year", 0);
     
    if ($year)
    {
    	$datefrom = $year . "-01-01 00:00:00";
    	$dateto = ($year+1) . "-01-01 00:00:00";
     
    	if (!$Informationsystem_Controller_Show->item)
    	{
    		$Informationsystem_Controller_Show->informationsystemItems()->queryBuilder()
    			->where('datetime', '>', $datefrom) 
    			->where('datetime', '<', $dateto);
     
    		$Informationsystem_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')->name('year')->value($year));
    	}
    }
  2. В xsl там где нужен вывод годов, вставляем код:
    			<xsl:for-each select="years/year">
    				<xsl:sort select="." order="descending"/>
    				<a href="?year={.}">
    					<xsl:if test="/informationsystem/year = .">
    						<xsl:attribute name="class">active</xsl:attribute>
    					</xsl:if>
    					<xsl:value-of select="."/></a>
    			</xsl:for-each>
private/koding/hostcms/modules/informacionnye_sistemy/filtracija_po_godam.txt · Last modified: 27.06.17 в 14:57 by maximzasorin_gmail.com