Joomla! Template Override:

Linksammlung


Ein Template Override von com_weblinks. Wir haben die Ansicht der Weblink-Komponente verändert, sodass wir mehrere Kategorien untereinander darstellen können. Die Idee bzw. die Umsetzung entstand bei der Bearbeitung der Komponente für joomla.de in Zusammenarbeit mit Guido De Gobbis

Als Erstes erstellt Ihr Euch ein Override von com_weblinks > categories und ersetzt den Inhalt mit unten stehendem Code.

Nun erstellt Ihr Euch die gewünschten Kategorien in der Komponente und fügt Eure Links dort ein. Als Vorschaubild wird das "Erste Bild" verwendet. Ansonsten benötigt Ihr noch die Angaben "Titel", "URL" und "Beschreibung". Als Menüpunkt wählt Ihr als Typ "Alle Weblinksategorien auflisten" und lasst den Wert auf "ROOT". 

Leider scheint es in der aktuellen Komponente einen kleinen Bug zu geben, indem der Reiter "Bilder" zwei Mal vorkommt und dadurch ein Speichern nicht möglich ist. Hierzu gibt es ein offiziellen Bugfix. Alternativ könnt Ihr in der "/ administrator / components / com_weblinks / models / forms / weblink.xml" die Zeile 186 bearbeiten. Ersetzt dazu einfach die Zeile <fieldset name="images" label="JGLOBAL_FIELDSET_IMAGE_OPTIONS"> mit <fieldset>.

Das Override zeigt pro Kategorie nur fünf Einträge an, dies könnt Ihr einfach in den Optionen der Weblink-Komponente ändern. Öffnet hier zu eure Komponente, geht auf "Optionen" und dort ändert ihr den Wert "Anzahl Versionen" auf die von euch gewünschte Zahl.

Nun viel Spaß mit dem Template Override.

Benötigte Override-Dateien


  • <?php
    /**
     * @package     Joomla.Site
     * @subpackage  com_weblinks
     *
     * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    defined('_JEXEC') or die;
    JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
    require_once JPATH_SITE . '/components/com_weblinks/helpers/route.php';
    require_once JPATH_SITE . '/components/com_weblinks/helpers/category.php';
    JHtml::_('behavior.caption');
    echo JLayoutHelper::render('joomla.content.categories_default', $this);
    echo $this->loadTemplate('items');
  • <?php
    /**
     * @package     Joomla.Site
     * @subpackage  com_weblinks
     *
     * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    defined('_JEXEC') or die;
    $class = ' first';
    $child_images = false; ?>
    
    
    <?php foreach ($this->weblinks as $id => $child) :
        $child_images = json_decode($child->images);
            if (!isset($this->weblinks[$id + 1]))
            {
                $class = ' last"';
            }
            ?>
        <div class="row<?php echo $class; ?>">
            <?php $class = ''; ?>
            <div class="col-xs-12 col-sm-3">
                <?php if($child_images && $child_images->image_first != '') : ?>
                    <?php if($child_images->image_first_caption != '') : ?>
                    <figure>
                    <?php else : ?>
                    <div class="figure">
                    <?php endif; ?>
                        <img src="<?php echo $child_images->image_first; ?>" alt="<?php echo $child_images->image_first_alt; ?>" class="img-circle img-responsive img-thumbnail link-list"/>
                        <?php if($child_images->image_first_caption != '') : ?>
                            <figcaption><?php echo $this->escape($child_images->image_first_caption); ?></figcaption>
                        <?php endif; ?>
                    <?php if($child_images->image_first_caption != '') : ?>
                    </figure>
                    <?php else : ?>
                    </div>
                    <?php endif; ?>
                <?php endif; ?>
            </div>
            <div class="col-xs-12 col-sm-9">
                <h3 class="item-title link-list"><a target="_blank" title="<?php echo $this->escape($child->title); ?>" href="<?php echo JRoute::_(WeblinksHelperRoute::getWeblinkRoute($child->id, $child->catid)); ?>"><?php echo $this->escape($child->title); ?></a></h3>
                <?php if ($child->description) : ?>
                    <?php echo JHtml::_('content.prepare', $child->description, '', 'com_weblinks.categories'); ?>
                <?php endif; ?>
              <a target="_blank" title="<?php echo $this->escape($child->title); ?>" href="<?php echo JRoute::_(WeblinksHelperRoute::getWeblinkRoute($child->id, $child->catid)); ?>"><?php echo $this->escape($child->url); ?></a>
               
            </div>
        </div>
    <?php endforeach; ?>
  • <?php
    /**
     * @package     Joomla.Site
     * @subpackage  com_weblinks
     *
     * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    defined('_JEXEC') or die;
    JHtml::_('bootstrap.tooltip');
    $class = ' first';
    if (count($this->items[$this->parent->id]) > 0 && $this->maxLevelcat != 0) :
        ?>
        <?php foreach ($this->items[$this->parent->id] as $id => $item) :
        // Get an instance of the generic articles model
        $model = JModelLegacy::getInstance('Category', 'WeblinksModel', array('ignore_request' => true));
        // Set application parameters in model
        $app       = JFactory::getApplication();
        $appParams = $app->getParams();
        $model->setState('params', $appParams);
        // Set the filters based on the module params
        $model->setState('list.start', 0);
        $model->setState('list.limit', (int) $appParams->get('history_limit', 5));
        $model->setState('filter.state', 1);
        $model->setState('filter.publish_date', true);
        // Access filter
        $access = !JComponentHelper::getParams('com_weblinks')->get('show_noauth');
        $model->setState('filter.access', $access);
        $catid = (int) $item->id;
        $model->setState('category.id', $catid);
        // Create query object
        $db    = JFactory::getDbo();
        $query = $db->getQuery(true);
        $case_when1 = ' CASE WHEN ';
        $case_when1 .= $query->charLength('a.alias', '!=', '0');
        $case_when1 .= ' THEN ';
        $a_id = $query->castAsChar('a.id');
        $case_when1 .= $query->concatenate(array($a_id, 'a.alias'), ':');
        $case_when1 .= ' ELSE ';
        $case_when1 .= $a_id . ' END as slug';
        $case_when2 = ' CASE WHEN ';
        $case_when2 .= $query->charLength('c.alias', '!=', '0');
        $case_when2 .= ' THEN ';
        $c_id = $query->castAsChar('c.id');
        $case_when2 .= $query->concatenate(array($c_id, 'c.alias'), ':');
        $case_when2 .= ' ELSE ';
        $case_when2 .= $c_id . ' END as catslug';
        $model->setState(
            'list.select',
            'a.*, c.published AS c_published,' . $case_when1 . ',' . $case_when2 . ',' . 'DATE_FORMAT(a.created, "%Y-%m-%d") AS created'
        );
        $model->setState('filter.c.published', 1);
        // Filter by language
        $model->setState('filter.language', $app->getLanguageFilter());
        $childs = $model->getItems();
        if ($this->params->get('show_empty_categories_cat') || $item->numitems || count($item->getChildren())) :
            if (!isset($this->items[$this->parent->id][$id + 1]))
            {
                $class = ' last';
            }
            ?>
            <div  class="link-list category<?php echo $class; ?> clearfix" >
                <?php $class = ''; ?>
                <h2 class="page-header item-title">
                    <?php echo $this->escape($item->title); ?>
                    <?php if ($this->params->get('show_cat_num_articles_cat') == 1) : ?>
                        <span class="badge badge-info tip hasTooltip" title="<?php echo JHtml::tooltipText('COM_WEBLINKS_NUM_ITEMS'); ?>">
    							<?php echo $item->numitems; ?>
    						</span>
                    <?php endif; ?>
                </h2>
                <?php if ($this->params->get('show_description') && $item->description != '') : ?>
                    <div class="category-desc">
                        <?php echo JHtml::_('content.prepare', $item->description, '', 'com_weblinks.categories'); ?>
                    </div>
                <?php endif; ?>
    
                <?php if (count($childs) > 0) :
                    $this->weblinks = $childs;
                    echo $this->loadTemplate('childs');
                endif; ?>
            </div>
        <?php endif; ?>
    <?php endforeach; ?>
    <?php endif; ?>
  • /* ANFANG JOVER_WEBLINKS */
    .link-list.category .row {
        margin-bottom: 2rem;
    }
    /* ENDE JOVER_WEBLINKS */


j!-over




Fehler melden

Bitte beachte unsere Datenschutzerklärung

Alle mit (*) markierten Felder werden benötigt um eine E-Mail zu senden.

E-Mail für Kontakt
Nachricht hier eingeben.
Dieses Feld wird benötigt.