code: protected function compile()
  	{
  		$objFaq = FaqModel::findPublishedByPids($this->faq_categories);
  
  		if ($objFaq === null)
  		{
  			$this->Template->faq = array();
  
  			return;
  		}
  
  		$arrFaq = array_fill_keys($this->faq_categories, array());
  
  		// Add FAQs
  		while ($objFaq->next())
  		{
  			$arrTemp = $objFaq->row();
  			$arrTemp['title'] = StringUtil::specialchars($objFaq->question, true);
  			$arrTemp['href'] = $this->generateFaqLink($objFaq);
  
  			/** @var FaqCategoryModel $objPid */
  			$objPid = $objFaq->getRelated('pid');
  
  			$arrFaq[$objFaq->pid]['items'][] = $arrTemp;
  			$arrFaq[$objFaq->pid]['headline'] = $objPid->headline;
  			$arrFaq[$objFaq->pid]['title'] = $objPid->title;
  		}
  
  		$arrFaq = array_values(array_filter($arrFaq));
  
  		$cat_count = 0;
  		$cat_limit = \count($arrFaq);
  
  		// Add classes
  		foreach ($arrFaq as $k=>$v)
  		{
  			$count = 0;
  			$limit = \count($v['items']);
  
  			for ($i=0; $i<$limit; $i++)
  			{
  				$arrFaq[$k]['items'][$i]['class'] = trim(((++$count == 1) ? ' first' : '') . (($count >= $limit) ? ' last' : '') . ((($count % 2) == 0) ? ' odd' : ' even'));
  			}
  
  			$arrFaq[$k]['class'] = trim(((++$cat_count == 1) ? ' first' : '') . (($cat_count >= $cat_limit) ? ' last' : '') . ((($cat_count % 2) == 0) ? ' odd' : ' even'));
  		}
  
  		$this->Template->faq = $arrFaq;
  	}
docs: Generate the module