Dritten Sortier-Parameter für Mosets Tree Listings hinzufügen

In Mosets Tree, einer Link- oder Firmenverzeichnis Komponente für Joomla, lassen sich Listings nach maximal zwei Parameter sortieren. Zum Beispiel Featured Listing und Erstell-Datum. Dies war mir nicht genug und deshalb habe ich ein drittes Sortier-Kriterium hinzugefügt.

Ich benutzte Version 2.1.3, der Hack sollte aber auch mit jeder 2.1.x Version möglich sein, da keine Änderungen an der Programm-Logik erfolgen.

Als Minimum sind 4 Dateien zu editieren und 2 Datenbankeinträge, in die Tabelle jos_mt_config, hinzuzufügen.

  1. Als erstes ein Backup durchführen. Verwendung auf eigene Gefahr hin! Ich übernehme keine Verantwortung bei Daten-Verlust.
  2. SQL-Statments erweitern. Mit Hilfe des Editors der Wahl, das gesamte Installationsverzeichnis von Joomla nach dem folgenden String durchsuchen: first_listing_order1. Uns interessieren nur die SQL-Statments, da nur hier der neue Parameter angehängt wird. Am Ende des SQL Abfrage den folgenden Code anhängen:
    . ', ' . $mtconf->get('third_listing_order1') . '
    ' . $mtconf->get('third_listing_order2')
  3. Beim einfügen des Codeschnippsel ist unbedingt darauf aufzupassen, dass nicht alle SQL-Statements in der gleichen Weise enden. Im Prinzip geht es darum, and das Ende der Order Klausel einen weiteren ORDER BY Parameter anzuhängen. Wobei der dritte Sortier-Parameter durch ein Komma getrennt wird.

    Beispiel: components/com_mtree/mtree.php, in Zeile 509 und ersetze den existierenden Code:

    if( $mtconf->get('min_votes_to_show_rating') > 0
      && $mtconf->get('first_listing_order1') == 'link_rating' )
    {
      $sql .= "\n ORDER BY link_votes >= " .
      $mtconf->get('min_votes_to_show_rating') . ' DESC,
      ' . $mtconf->get('first_listing_order1') . '
      ' . $mtconf->get('first_listing_order2') . ',
      ' . $mtconf->get('second_listing_order1') . '
      ' . $mtconf->get('second_listing_order2');
    } else {
      $sql .= "\n ORDER BY " . $mtconf->get('first_listing_order1') . '
      ' . $mtconf->get('first_listing_order2') . ',
      ' . $mtconf->get('second_listing_order1') . '
      ' . $mtconf->get('second_listing_order2');
    }

    mit:

    if( $mtconf->get('min_votes_to_show_rating') > 0
      && $mtconf->get('first_listing_order1') == 'link_rating' )
    {
      $sql .= "\n ORDER BY link_votes >= " .
      $mtconf->get('min_votes_to_show_rating') . ' DESC,
      ' . $mtconf->get('first_listing_order1') . '
      ' . $mtconf->get('first_listing_order2') . ',
      ' . $mtconf->get('second_listing_order1') . '
      ' . $mtconf->get('second_listing_order2') . ',
      ' . $mtconf->get('third_listing_order1') . '
      ' . $mtconf->get('third_listing_order2');
    } else {
      $sql .= "\n ORDER BY " . $mtconf->get('first_listing_order1') . '
      ' . $mtconf->get('first_listing_order2') . ',
      ' . $mtconf->get('second_listing_order1') . '
      ' . $mtconf->get('second_listing_order2') . ',
      ' . $mtconf->get('third_listing_order1') . '
      ' . $mtconf->get('third_listing_order2');
    

    Dies dient in erster Linie der Illustration, was zu tun ist. Die Schritte sind für die folgenden Dateien zu wiederholen
    /administrator/components/com_mtree/admin.mtree.php
    Zeilen #: 1734, 1736, 1741, 1743

    /administrator/components/com_mtree/mAdvancedSearch .class.php
    Zeilen #: 146, 148

    /components/com_mtree/mtree.php
    Zeilen #: 510, 512, 547, 549, 685, 911, 1210, 1212, 1399, 1401, 1581, 1583

  4. Hinzufügen eines Beschreibungs-Strings in die ini-Datei
    Als nächstes fügen wir eine neue Zeile in die Datei:
    /administrator/language/en-GB/en-GB.com_mtree.ini ein. Dazu suchen wir nach: FIRST_LISTING_ORDER1 in Zeile # 315 und fügen als eine neue Zeile ein:

    CONFIGNAME THIRD_LISTING_ORDER1=Tertiary ordering
  5. Einfügen zweier Datensätze in die Tabelle: jos_mt_config
  6. INSERT INTO `jos_mt_config` (`varname`, `groupname`, `value`, `default`,
      `configcode`, `ordering`, `displayed`)
      VALUES('third_listing_order1', 'listing',
      'link_created', 'link_created', 'listing_order', 2200, 1);
    INSERT INTO `jos_mt_config` (`varname`, `groupname`, `value`, `default`,
      `configcode`, `ordering`, `displayed`)
      VALUES('third_listing_order2', 'listing',
      'asc', 'asc', 'sort_direction', 2300, 1);
  7. Prüfen ob in der Verwaltung der dritte Parameter zur Verfügung steht
    Mosets Tree: Dritter Sortier Parameter
  8. [Optional] Anpassen des Installation-Scripts
    Um beim installieren der Komponente schon die Tabellen Einträge anzulegen, einfach die Datei /administrator/components/com_mtree/install.mtree.sql um die folgenden Zeilen ergänzen:
  9. INSERT IGNORE INTO `#__mt_config` VALUES ('third_listing_order1',
      'listing', 'link_created', 'link_created', 'listing_order', 2200, 1);
    INSERT IGNORE INTO `#__mt_config` VALUES ('third_listing_order2',
      'listing', 'asc', 'asc', 'sort_direction', 2300, 1);

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*