Frontpage Component Updated

A little while ago an article was published on this website titled “Joomla Template – Front Page Component Modification“. In this article we covered how to enable the frontpage component to work in an “Out of the box” styled scenario when building your own custom template. Since then a website has being getting built that is using the frontpage component. During the development of this site I have developed the frontpage component further.

The Joomla Frontpage Component is split up in to 3 different files on a templating level. These are listed below along with a sample of the code used to develop your own. Keep in mind that this has not been fully customized for a specific site and you can still make your own custom classes and apply your own custom modifications to the code. I have not included any css as this is something that is not hard to work out and really should be left for you to develop for your own websites theme.

Default.php contains:

<?php // @version $Id: default.php 10498 2008-07-04 00:05:36Z ian $
defined(‘_JEXEC’) or die(‘Restricted access’);
?>
<?php if ($this->params->get(‘show_page_title’,1)) : ?>
<h1><?php echo $this->escape($this->params->get(‘page_title’)); ?></h1>
<?php endif; ?>
<div>
<?php $i = $this->pagination->limitstart;
$rowcount = $this->params->def(‘num_leading_articles’, 1);
for ($y = 0; $y < $rowcount && $i < $this->total; $y++, $i++) : ?>
<div>
<?php $this->item =& $this->getItem($i, $this->params);
echo $this->loadTemplate(‘item’); ?>
</div>
<span>&nbsp;</span>
<?php endfor; ?>
<?php $introcount = $this->params->def(‘num_intro_articles’, 4);
if ($introcount) :
$colcount = $this->params->def(‘num_columns’, 2);
if ($colcount == 0) :
$colcount = 1;
endif;
$rowcount = (int) $introcount / $colcount;
$ii = 0;
for ($y = 0; $y < $rowcount && $i < $this->total; $y++) : ?>
<div>
<?php for ($z = 0; $z < $colcount && $ii < $introcount && $i < $this->total; $z++, $i++, $ii++) : ?>
<div >
<?php $this->item =& $this->getItem($i, $this->params);
echo $this->loadTemplate(‘item’); ?>
</div>
<!– <span>&nbsp;</span>–>
<?php endfor; ?>
<span>&nbsp;</span>
</div>
<?php endfor;
endif; ?>
<?php $numlinks = $this->params->def(‘num_links’, 4);
if ($numlinks && $i < $this->total) : ?>
<div>
<?php $this->links = array_slice($this->items, $i – $this->pagination->limitstart, $i – $this->pagination->limitstart + $numlinks);
echo $this->loadTemplate(‘links’); ?>
</div>
<?php endif; ?>
<?php if ($this->params->def(‘show_pagination’, 2) == 1  || ($this->params->get(‘show_pagination’) == 2 && $this->pagination->get(‘pages.total’) > 1)) : ?>
<?php if( $this->pagination->get(‘pages.total’) > 1 ) : ?>
<div>
<?php echo $this->pagination->getPagesCounter(); ?>
</div>
<?php endif; ?>
<?php if ($this->params->def(‘show_pagination_results’, 1)) : ?>
<?php echo $this->pagination->getPagesLinks(); ?>
<?php endif; ?>
<?php endif; ?>
</div>

<?php // @version $Id: default.php 10498 2008-07-04 00:05:36Z ian $defined(‘_JEXEC’) or die(‘Restricted access’);?>
<?php if ($this->params->get(‘show_page_title’,1)) : ?><h1><?php echo $this->escape($this->params->get(‘page_title’)); ?></h1><?php endif; ?>
<div>
<?php $i = $this->pagination->limitstart; $rowcount = $this->params->def(‘num_leading_articles’, 1); for ($y = 0; $y < $rowcount && $i < $this->total; $y++, $i++) : ?> <div> <?php $this->item =& $this->getItem($i, $this->params); echo $this->loadTemplate(‘item’); ?> </div> <span>&nbsp;</span> <?php endfor; ?>
<?php $introcount = $this->params->def(‘num_intro_articles’, 4); if ($introcount) : $colcount = $this->params->def(‘num_columns’, 2); if ($colcount == 0) : $colcount = 1; endif; $rowcount = (int) $introcount / $colcount; $ii = 0; for ($y = 0; $y < $rowcount && $i < $this->total; $y++) : ?> <div> <?php for ($z = 0; $z < $colcount && $ii < $introcount && $i < $this->total; $z++, $i++, $ii++) : ?> <div > <?php $this->item =& $this->getItem($i, $this->params); echo $this->loadTemplate(‘item’); ?> </div> <!– <span>&nbsp;</span>–> <?php endfor; ?> <span>&nbsp;</span> </div> <?php endfor; endif; ?>
<?php $numlinks = $this->params->def(‘num_links’, 4); if ($numlinks && $i < $this->total) : ?> <div> <?php $this->links = array_slice($this->items, $i – $this->pagination->limitstart, $i – $this->pagination->limitstart + $numlinks); echo $this->loadTemplate(‘links’); ?> </div> <?php endif; ?>
<?php if ($this->params->def(‘show_pagination’, 2) == 1  || ($this->params->get(‘show_pagination’) == 2 && $this->pagination->get(‘pages.total’) > 1)) : ?> <?php if( $this->pagination->get(‘pages.total’) > 1 ) : ?> <div> <?php echo $this->pagination->getPagesCounter(); ?> </div> <?php endif; ?> <?php if ($this->params->def(‘show_pagination_results’, 1)) : ?> <?php echo $this->pagination->getPagesLinks(); ?> <?php endif; ?> <?php endif; ?></div>

The next file is default_item.php

<?php // @version $Id: default_item.php 11386 2009-01-04 02:34:35Z ian $

defined(‘_JEXEC’) or die(‘Restricted access’);

?>

<div class=”<?php echo $this->item->params->get(‘pageclass_sfx’); ?>”>

<?php if ($this->user->authorize(‘com_content’, ‘edit’, ‘content’, ‘all’) || $this->user->authorize(‘com_content’, ‘edit’, ‘content’, ‘own’)) : ?>

<div class=”contentpaneopen_edit”>

<?php echo JHTML::_(‘icon.edit’, $this->item, $this->item->params, $this->access); ?>

</div>

<?php endif; ?>

<div class=”article-rel-wrapper”>

<?php if ($this->item->params->get(‘show_title’)) : ?>

<h2 class=”contentheading”>

<?php if ($this->item->params->get(‘link_titles’) && $this->item->readmore_link != ”) : ?>

<a href=”<?php echo $this->item->readmore_link; ?>” class=”contentpagetitle”>

<?php echo $this->escape($this->item->title); ?></a>

<?php else :

echo $this->escape($this->item->title);

endif; ?>

</h2>

<?php endif; ?>

<?php if (!$this->item->params->get(‘show_intro’)) :

echo $this->item->event->afterDisplayTitle;

endif; ?>

</div>

<?php if (($this->item->params->get(‘show_section’) && $this->item->sectionid) || ($this->item->params->get(‘show_category’) && $this->item->catid)) : ?>

<p class=”pageinfo”>

<?php if ($this->item->params->get(‘show_section’) && $this->item->sectionid && isset($this->item->section)) : ?>

<span>

<?php if ($this->item->params->get(‘link_section’)) : ?>

<?php echo ‘<a href=”‘.JRoute::_(ContentHelperRoute::getSectionRoute($this->item->sectionid)).’”>’; ?>

<?php endif; ?>

<?php echo $this->item->section; ?>

<?php if ($this->item->params->get(‘link_section’)) : ?>

<?php echo ‘</a>’; ?>

<?php endif; ?>

<?php if ($this->item->params->get(‘show_category’)) : ?>

<?php echo ‘ – ‘; ?>

<?php endif; ?>

</span>

<?php endif; ?>

<?php if ($this->item->params->get(‘show_category’) && $this->item->catid) : ?>

<span>

<?php if ($this->item->params->get(‘link_category’)) : ?>

<?php echo ‘<a href=”‘.JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->catslug, $this->item->sectionid)).’”>’; ?>

<?php endif; ?>

<?php echo $this->item->category; ?>

<?php if ($this->item->params->get(‘link_category’)) : ?>

<?php echo ‘</a>’; ?>

<?php endif; ?>

</span>

<?php endif; ?>

</p>

<?php endif; ?>

<?php if ((intval($this->item->modified) !=0 && $this->item->params->get(‘show_modify_date’)) || ($this->item->params->get(‘show_author’) && ($this->item->author != “”)) || ($this->item->params->get(‘show_create_date’))) : ?>

<div class=”article-info-surround”>

<div class=”article-info-surround2″>

<?php if ($this->item->params->get(‘show_pdf_icon’) || $this->item->params->get(‘show_print_icon’) || $this->item->params->get(‘show_email_icon’)) : ?>

<p class=”buttonheading”>

<?php if ($this->item->params->get(‘show_pdf_icon’)) :

echo JHTML::_(‘icon.pdf’, $this->item, $this->item->params, $this->access);

endif;

if ($this->item->params->get(‘show_print_icon’)) :

echo JHTML::_(‘icon.print_popup’, $this->item, $this->item->params, $this->access);

endif;

if ($this->item->params->get(‘show_email_icon’)) :

echo JHTML::_(‘icon.email’, $this->item, $this->item->params, $this->access);

endif; ?>

</p>

<?php endif; ?>

<p class=”iteminfo”>

<?php if (intval($this->item->modified) !=0 && $this->item->params->get(‘show_modify_date’)) : ?>

<span class=”modifydate”>

<?php echo JText::sprintf(‘LAST_UPDATED2′, JHTML::_(‘date’, $this->item->modified, JText::_(‘DATE_FORMAT_LC2′))); ?>

</span>

<?php endif; ?>

<?php if (($this->item->params->get(‘show_author’)) && ($this->item->author != “”)) : ?>

<span class=”createdby”>

<?php JText::printf(‘Written by’, ($this->item->created_by_alias ? $this->item->created_by_alias : $this->item->author)); ?>

</span>

<?php endif; ?>

<?php if ($this->item->params->get(‘show_create_date’)) : ?>

<span class=”createdate”>

<?php echo JHTML::_(‘date’, $this->item->created, JText::_(‘DATE_FORMAT_LC2′)); ?>

</span>

<?php endif; ?>

</p>

</div>

</div>

<?php endif; ?>

<?php echo $this->item->event->beforeDisplayContent; ?>

<?php if ($this->item->params->get(‘show_url’) && $this->item->urls) : ?>

<span class=”small”>

<a href=”<?php echo $this->item->urls; ?>” target=”_blank”><?php echo $this->item->urls; ?></a>

</span>

<?php endif; ?>

<?php if (isset ($this->item->toc)) :

echo $this->item->toc;

endif; ?>

<?php echo JFilterOutput::ampReplace($this->item->text); ?>

<?php if ($this->item->params->get(‘show_readmore’) && $this->item->readmore) : ?>

<p>

<a href=”<?php echo $this->item->readmore_link; ?>” class=”readon”>

<?php if ($this->item->readmore_register) :

echo JText::_(‘Register to read more…’);

elseif ($readmore = $this->item->params->get(‘readmore’)) :

echo $readmore;

else :

echo “Read more >>”;

endif; ?>

</a>

</p>

<?php endif; ?>

</div>

<?php echo $this->item->event->afterDisplayContent;

The last file is default_links.php
<?php // @version $Id: default_links.php 10381 2008-06-01 03:35:53Z pasamio $
defined(‘_JEXEC’) or die(‘Restricted access’);
?>
<div class=”article-info-surround”><div class=”article-info-surround2″>
<h2>
<?php echo JText::_(‘More Articles…’); ?>
</h2>
</div></div>
<ul>
<?php foreach ($this->links as $link) : ?>
<li>
<a class=”blogsection” href=”<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($link->slug, $link->catslug, $link->sectionid)); ?>”>
<?php echo $link->title; ?></a>
</li>
<?php endforeach; ?>
</ul>
These files are to be stored in templates/{templatename}/html/com_content/frontpage. If you have found this useful or would like to share what you have done please post a comment and share it with others.