Webseiten und ZubehörProgrammierung UmsetzungPflege Backups BetreuungJoomla-Spezialist

JoomlaSchnipsel

Mich nerven die Suchwerkzeuge im Backend. Weil sie immer verschwinden, wenn in den Filterboxen nichts ausgewählt ist oder, wenn man auf Zurücksetzen klickt. Diese wiederholte Klickerei, um sie wieder anzuzeigen kann man mit einem Joomla-Layout-Override abschaffen und den Suchwerkzeugebutton zugleich verstecken. Der Override wird für das ganze Backend mit Isis-Template angelegt.

Für Interessierte: Kurze Begriffsklärung: Layouts vs. JLayouts

Seit Joomla 3.2 werden viele, häufiger verwendeten Grund-Elemente im /layouts/-Ordner abgelegt. Sowohl Backend- als auch Frontenderweiterungen können darauf zugreifen. Es werden stetig mehr. Alle PHP-Dateien in diesem Verzeichnis sind updatesicher überschreibbar, also Teil des berühmten Joomla-Override-Systems. Liest man irgendwo was über "JLayout" oder "JLayouts" sind meist Files in diesem Ordner gemeint. Musste ich auch erst kapieren. Will nur sagen: Suche nach Layout-Override, ein Begriff der schon lange vor JLayouts im Joomla-Jargon verwendet wurde, kann einen ganz schön in die Irre führen, manchmal aber auch JLayouts meinen. Ein Hoch auf die Transparenz!

Der Joomla-Ordner /layouts/ mit den JLayouts
Der Joomla-Ordner /layouts/ mit den JLayouts

JLayout-Override für Suchwerkzeuge (Searchtools)

Im /layouts/-Ordner liegen mehrere, voneinander abhängige Ausgabedateien für die Suchwerkzeuge (Ordner /layouts/joomla/searchtools/), die in Joomla im Backend in den Listenansichten zu sehen sind, wenn man das ISIS-Template verwendet.

Ein Button Suchwerkzeuge, der bei Anklicken die Filter-Dropdown-Boxen aufklappt oder wieder versteckt. Setzt man einen einmal gesetzten Filter wieder auf den Urzustand zurück, verschwinden alle Boxen. Das ist ein Feature, kein Bug. Mit dem folgend beschriebenen Override für eine einzelne JLayout-Datei, den man am Ende des Beitrags zum Herunterladen findet, wird man das Verhalten los und den Knopf auch gleich..

Nach einem JLayouts-Override im Isis-Template bleiben Filterfelder sichtbar
Nach einem JLayouts-Override im Isis-Template bleiben Filterfelder sichtbar

Wir müssen lediglich 1 Datei überschreiben, indem wir eine gleichbenannte (inklusive der zugehörigen /layouts/-Ordnerhierarchie) im /html/-Ordner des Backendtemplates Isis anlegen.

Fehlende Ordner innerhalb des Isis-Templates müssen Sie folgend zuvor selbst anlegen.

Unser Override wird im Backend die folgende Datei ersetzen, besser: überschreiben.

An dieser Datei selbst dürfen wir nichts ändern! Sonst wäre es kein updatesicherer Override, sondern ein verbotener Core-Hack.

/layouts/joomla/searchtools/default.php

Die JLayout-Stammdatei default.php fuer die Suchwerkzeuge im Backend
Die JLayout-Stammdatei default.php fuer die Suchwerkzeuge im Backend

Override erstellen

Tipp: Alle Schritte können per FTP, aber auch mit dem Template-Editor im Joomla-Backend erfolgen.

Legen Sie für das Isis-Template folgende Ordnerstruktur an, soweit noch nicht vorhanden. Hier kommt unsere Override-Datei gleich rein.

/administrator/templates/isis/html/layouts/joomla/searchtools/

Der JLayout Overridei fuer die Suchwerkzeuge im Isis Template
Der JLayout Overridei fuer die Suchwerkzeuge im Isis Template
Variante 1: Code kopieren

Legen Sie eine leere Datei default.php in diesem Ordner an und kopieren Sie den folgenden Overridecode hinein.

<?php
/**
 * @package     Joomla.Site
 * @subpackage  Layout
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
/**
 * Override by GHSVS 2016-02-13
 * @link http://www.ghsvs.de/programmierer-schnipsel/joomla/165-suchwerkzeuge-filter-immer-eingeblendet
*/
defined('JPATH_BASE') or die;

$data = $displayData;

// Receive overridable options
$data['options'] = !empty($data['options']) ? $data['options'] : array();

// Set some basic options
$customOptions = array(
 'filtersHidden'       => isset($data['options']['filtersHidden']) ? $data['options']['filtersHidden'] : empty($data['view']->activeFilters),
 'defaultLimit'        => isset($data['options']['defaultLimit']) ? $data['options']['defaultLimit'] : JFactory::getApplication()->get('list_limit', 20),
 'searchFieldSelector' => '#filter_search',
 'orderFieldSelector'  => '#list_fullordering'
);

$customOptions['filterButton'] = 0;

$data['options'] = array_merge($customOptions, $data['options']);

$formSelector = !empty($data['options']['formSelector']) ? $data['options']['formSelector'] : '#adminForm';

// Load search tools
JHtml::_('searchtools.form', $formSelector, $data['options']);

?>
<div class="js-stools clearfix">
 <div class="clearfix">
  <div class="js-stools-container-bar">
   <?php echo JLayoutHelper::render('joomla.searchtools.default.bar', $data); ?>
  </div>
  <div class="js-stools-container-list hidden-phone hidden-tablet">
   <?php echo JLayoutHelper::render('joomla.searchtools.default.list', $data); ?>
  </div>
 </div>
 <!-- Filters div -->
 <div class="js-stools-container-filters hidden-phone clearfix">
  <?php echo JLayoutHelper::render('joomla.searchtools.default.filters', $data); ?>
 </div>
</div>
<script>
(function($){
$(document).ready(function(){
$(".js-stools-container-filters").show();
});
})(jQuery);
</script>
Variante 2: Download des Overrides

Laden Sie sich die ZIP-Datei am Ende dieses Beitrags herunter und entpacken Sie sie. Darin finden Sie die Datei default.php, die Sie in den oben angelegten Ordner hochladen.

Der Override-Code (siehe oben)

Zeile 28: Eine Option, die einen der Unter-JLayouts unserer default.php anweist, den Suchwerkzeuge-Button NICHT anzuzeigen.

Sie können statt 0 auch eine 1 setzen. So bleibt der Knopf sichtbar und Sie können die Dropdown-Felder vorübergehend aus-/ein-blenden. Mit diesem Override sind jedoch für das erstmalige Ausblenden 2 Klicks nötig. Nicht ganz sauberes Verhalten also.

Zeilen 52 bis 58: Ein JQuery-Javascript, das die Filter-Dropdownboxen immer anzeigt, wenn eine Listenansicht neu geladen wird.

Download und Info

jlayout_searchtools_show-always

JLayout-Override für die so genannten Searchtools, um Suchwerkzeuge-Button im Isis-Template zu verbergen und Ausblenden der Filter-Dropdowns zu unterbinden.

Download Version 2016.02.13

Letzter Test: Joomla 3.5.0

Unterstützt NICHT Updateserver. KEINE Benachrichtigung im Backend über Aktualisierungen.

Verbesserungsvorschläge und Feature-Wünsche sind willkommen.

Alle nicht explizit als fertige Erweiterung markierten Skripte und Codes von www.ghsvs.de dienen als Ansätze / Ideen für eigene Ausarbeitung. GHSVS bzw. die jeweiligen Autoren übernehmen keinerlei Garantien beim Einsatz Ihrer kostenlosen Erweiterungen, Programme, Codes und Skripte, helfen aber gerne bei Rückfragen, soweit zeitlich möglich.

Joomla Backend Override Download