eigenes Feld sortieren

  • Guten Tag,

    Ich nutze Joomla in der Version 4.0.6 und PHP 8.1. Das Template ist "Cassiopeia".

    In meiner Seite "https://edermuender.de/nachrichten" möchte ich die Nachrichten (Beiträge) sortieren können. Für die Spalten "Titel" und "Erstellungsdatum" (beides im Standart enthalten) funktioniert das auch. Für die Spalte "Name des Vereine", welche ein eigenes Feld ist, funktioiniert es nicht.

    Meine Frage ist nun wie ich den Code in der default_articles.php (liegt in: /templates/cassiopeia/html/com_content/category) im Bereich Zeile 149-151 (Header):

    <th scope="col" id="categorylist_header_name-des-verein">

    <?php echo HTMLHelper::_('grid.sort', $article->jcfields[22]->label, 'name-des-verein', $listDirn, $listOrder); ?>

    </th>

    oder 267 - 269 (Inhalt)

    <td class="categorylist_header_Verein">

    <?php echo JHtml::_('grid.sort', $article->jcfields[22]->value, 'name-des-verein', $listDirn, $listOrder, null, 'asc', '', 'adminForm'); ?>

    </td>

    ändern muß, damit es funktioniert?

    Für Fragen stehe ich gerne zu Verfügung.

    Mit freundlichem Gruß

    Mark

  • Guten Tag,

    ich habe die eingefügten Zeilen etwas vereinfacht ohne an Funktionalität zu verlieren.

    Header:

    <th scope="col" id="categorylist_header_Name_des_Verein">

    <?php echo HTMLHelper::_('grid.sort', $article->jcfields[22]->label, 'Name_des_Verein', $listDirn, $listOrder); ?>

    </th>

    Inhalt:

    <td class="list-Name_des_Verein">

    <?php echo $article->jcfields[22]->value; ?>

    </td>

    Wenn ich die Stelle 'Name_des_Verein' durch "a.title" oder "a.created" ersetze, kann ich nach der jeweiligen Spalte sortieren.

    Die Frage ist nur was ich an der "default_arcticles.php" verändern muß, damit ich auch nach der Spalte "Name des Verein" (eigenes Feld) sortieren kann?

    Vielleicht hat jemand eine Idee, der sich mit Joomla und PHP auskennt?

    Für Fragen stehe ich gerne zu Verfügung.

    Mit freundlichem Gruß

    Mark

  • Hallo Mark,

    Die Frage ist nur was ich an der "default_arcticles.php" verändern muß, damit ich auch nach der Spalte "Name des Verein" (eigenes Feld) sortieren kann?

    kann ich leider als "Nicht PHPler" nicht beantworten :)

    MIr fällt dazu in Moment nur ein, Dich zu fragen, ob Du eh Overrides verwendest?

    https://ghsvs.de/programmierer-…n-eigener-codes

    https://ghsvs.de/erweiterte-suc…earchphrase=all

    Liebe Grüße

    Christine

  • Hallo Christine,

    Danke für Deine Frage.

    Ja die Datei "default_arctiles.php" ist die Standart Datei die beim Anlegen eines Overrides via "System" --> "Site Templates" --> Komponenten "com_content" von Joomla angelegt wird.

    Da ich leider in Sachen PHP nur über ein gefährliches Halbwissen verfüge habe ich es bisher nur hinbekommen mein eigenes Feld "Name des Verein" dort einzufügen, aber eben ohne sortier Funktion. Das versuche ich halt auch noch hinzubekommen, weil ich denke das Problem haben andere doch sicher auch schon irgendwie gelöst bekommen mit PHP Kenntnissen?

    Mit freundlichem Gruß

    Mark

  • Wenn ich die Stelle 'Name_des_Verein' durch "a.title" oder "a.created" ersetze, kann ich nach der jeweiligen Spalte sortieren.

    Wie du siehst, sind a.title und a.created Werte, die direkt in der Datenbankabfrage im Hintergrund verwendet werden. In der Beiträge-Datenbank-Tabelle gibt es sowohl eine Spalte "title" als auch "created".

    Für eigene Felder geht das aber nicht, weil sie weder unmittelbar in der Beiträge-Datenbank-Tabelle abgelegt werden, geschweige denn die Werte der Felder. Dadurch würde die verwendete Datenbankabfrage des Joomla-Cores zum Auslesen von Artikeln viel zu komplex.

    Kurz: Da ist wirklich aufwändiges Programmieren notwendig, um mit der Joomla-Core-Listenanzeige ws zu bewerkstelligen und dann ist das nicht sonderlich performant, weil man zuviel, bis hin zu eigenen Datenbankabfragen (vermutlich) reinbasteln müsste. Jedenfalls zu viel Denkarbeit dabei, um in einem Forum eine Lösung mal so eben rauszuhauen, auch, wenn ich ähnliches ( eben nur ähnlich) schon mal gemacht habe, aber Jahre her und längst wieder gelöscht, weil "eklig zu pflegen und zu verstehen" ( christine2 Stichwort "Africa" ;) ) . Leider.

    Vielleicht ist das was für dich:

    https://joomcar.net/joomla-article…=141&Itemid=169

  • Wie du siehst, sind a.title und a.created Werte, die direkt in der Datenbankabfrage im Hintergrund verwendet werden. In der Beiträge-Datenbank-Tabelle gibt es sowohl eine Spalte "title" als auch "created".

    Für eigene Felder geht das aber nicht, weil sie weder unmittelbar in der Beiträge-Datenbank-Tabelle abgelegt werden, geschweige denn die Werte der Felder. Dadurch würde die verwendete Datenbankabfrage des Joomla-Cores zum Auslesen von Artikeln viel zu komplex.

    Kurz: Da ist wirklich aufwändiges Programmieren notwendig, um mit der Joomla-Core-Listenanzeige ws zu bewerkstelligen und dann ist das nicht sonderlich performant, weil man zuviel, bis hin zu eigenen Datenbankabfragen (vermutlich) reinbasteln müsste. Jedenfalls zu viel Denkarbeit dabei, um in einem Forum eine Lösung mal so eben rauszuhauen, auch, wenn ich ähnliches ( eben nur ähnlich) schon mal gemacht habe, aber Jahre her und längst wieder gelöscht, weil "eklig zu pflegen und zu verstehen" ( christine2 Stichwort "Africa" ;) ) . Leider.

    Vielleicht ist das was für dich:

    https://joomcar.net/joomla-article…=141&Itemid=169

    Guten Tag,

    wenn ich Dich richtig verstehe komme ich hier also mit den üblichen Joomla Boardmitteln nicht zum Ziel.

    Das ist zwar nicht die Antwort die ich mir erhofft hatte, aber dennoch bin ich Dir dankbar, weil ich dann nicht versuchen muß etwas hinzubekommen, was so nie gedacht war.

    Das Thema wäre dann für mich abgeschlossen und ich sage nochmal Danke für die Info.

    Mit freundlichem Gruß

    Mark

  • Hallo Christine,

    danke für Deinen Beitrag. Das war seinerzeit mein Ausgangsdokument mit dem ich mich mal auf den Weg gemacht habe. Hat ja bis hierher auch gut funktioniert.

    Ich habe dann den Abschnitt (Zitat aus: https://www.hosteurope.de/blog…tom-fields-ein-dreamteam/) übernommen:


    Die weiteren Spalten für Custom Fields bauen wir genauso ein:


    <th scope="col" id="categorylist_header_form">

    <?php echo JHtml::_('grid.sort', $article->jcfields[13]->label, 'a.title', $listDirn, $listOrder, null, 'asc', '', 'adminForm'); ?>

    </th>

    Mit diesem Code erreichen wir, dass die Spalte sortierbar ist (so wie die Spalte Beitragstitel).

    Weiter unten noch:


    <td headers="categorylist_header_funktion">

    <?php echo $article->jcfields[12]->value; ?>

    </td>

    <td headers="categorylist_header_form">

    <?php echo $article->jcfields[13]->value; ?>

    </td>


    und auf mein Problem versucht abzuändern.

    Leider wird beim klick auf "Name des Verein" in meinem Fall aber nur der Filter herausgenommen und nicht nach dieser Spalte sortiert:

    <th scope="col" id="categorylist_header_name-des-verein">

    <?php echo HTMLHelper::_('grid.sort', $article->jcfields[22]->label, 'name-des-verein', $listDirn,$listOrder, null, 'asc', '', 'adminForm'); ?>

    </th>

    <td headers="categorylist_header_name-des-verein">

    <?php echo $article->jcfields[22]->value; ?>

    </td>

    Es wäre noch denkbar das ich den Text an der falschen Stelle eingefügt habe (siehe Anhang) aber ich denke das ist nicht das Problem, weil er ja grundsätzlich angezeigt wird.

    Mit freundlichem Gruß

    Mark

  • Ich muss meinen Beitrag bei Hosteurope berichtigen, eine Sortierung der eigenen Feldern funktioniert nicht!

    Guten Tag,

    ich möchte mich an dieser Stelle noch mal ganz herzlich für die Unterstützung im Forum bedanken.

    Der Artikel https://www.hosteurope.de/blog…tom-fields-ein-dreamteam/) ist Top und hat mir seinerzeit sehr gut weiter geholfen.

    Zur Nachahmung also empfohlen. Der kleine Lapsus sei an dieser Stelle verziehen.

    Mit freundlichem Gruß

    Mark

  • Zuvor am besten Joomla-Updaten auf die aktuellste Version, derzeit 4.4.3

    Die Joomla-Version 4.0.6 hat Sicherheitslücken !

    Hast du in meinem obigen Linkziel von #12 auf Releases geklickt

    und anschließend dort in Assets die entsprechende Version bzw. zip-Datei(plg_system_sortbyfield) genommen?

    Siehe auch:

    github.com/nikosdion/sortbyfield/releases

  • Du hast die Funktion des Plugins offensichtlich leider noch nicht verstanden

    und im Menüeintrag "Nachrichten" auch das zusätzliche Tab(Sort by Custom Field)

    und darin die Einstellungsmöglichkeiten

    noch nicht entdeckt und genutzt bzw. getestet.

    Zitat

    Create a menu item for the category (list or blog view) and set it to order by the value of the ... custom field ascending.

    Du kannst also nur je Menüeintrag eine Reihenfolge der Sortierung von Beiträgen nach einem einzelnen "eigenen Feld" wählen bzw. festlegen...

  • OK, verstehe.

    Die Sortierung funktioniert mit dem Plugin in der Tat.

    Mein Custom Field " Name des Verein / Organisation)" ist jedoch ein Element vom Typ "Liste".

    Jeder Vereinsname hat also einen "Wert" in der Liste und das Plugin sortiert nach diesen Werten und nicht z.B. alphabetisch nach Vereinsname.

    Dennoch danke für den Hinweis, vielleicht hilft es anderen weiter.