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);

geschrieben von: Chefkoch

Chefkoch

Als Chefkoch arbeite ich als Systemadministrator und Programmierer. Hier blogge ich über Joomla, Magento, WordPress und Windows. In meiner Freizeit fotografiere ich viel, fahre mit meiner Yamaha XT660R oder Jogge durch die Gegend.

Schreibe einen Kommentar

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

*