mod_menu > schlagwortausgabe mit verlinkter Artikelzahl

  • Hallo,


    ich habe ein Menü mit Schlagwörtern erstellt, nun möchte im mod_menu noch die Anzahl der bei den Schlagwörtern hinterlegten Artikel bei dem Menüpunkt ausgeben.
    Als Ansatz habe ich die JHelperTags schon ausprobiert. Aber das erste Problem ist das ich ja nur die Schlagwortnamen habe und nicht die ID dessen.


    Ich habe unter anderem auch versucht per method_getTagItemsQuery durch Eingabe von Hand einer ID eine Ausgabe zu erzeugen. Aber die Information welche ausgegeben wird überfordert mich dann doch etwas.
    Ich bekomm da das JDatabaseQueryMysqli Object ausgegeben. Aber ich kann hier auch keine wirklich sinnvolle Information bzgl. meines Problems finden welche ich nutzen könnte.


    Code
    $tagId = "39";
    $tagsHelper = new JHelperTags;
    $articleCount = $tagsHelper->getTagItemsQuery( $tagId, 'com_content.article', true, 'c.core_publish_up', 'DESC', true, 'all', '1' );


    Erstmal wäre es gut zu wissen wie ich an der Stelle an die Tag-ID mit dem Namen komme?


    Grüße und eine Gute Nacht

  • Ich hab mal ein Modul aus mod_tags_popular abgekupfert.
    EDIT: Viel habe ich da gar nicht gemacht...



    Ist aber lang nicht mehr in Betrieb, weil Disziplinlosigkeit von Vereinsmeiern zu endlos langem Menü führen würde ;)


    Weiß jetzt auch nicht, ob was mit anfangen kannst, weil ich immer nur so weit rumbastele bis es dann funktioniert bei Seiten, wo ich nix verdiene und obs noch funktioniert. Aber vielleicht der Helpercode. Letztlich kannst ja auch innerhalb mod_menu ein anderes Modul als "Zweig" rendern oder irgend andere Idee wie JLayout verwenden. Kommt immer aufs Umfeld drauf an. Wenns nur für 1 spezielle Seite ist, ist ja alles erlaubt...


    Keine Garantie für gar nix!!!


    mod_tags_popularghsvs.zip



  • Hi,
    danke für das Modul, leider bringt mir das nicht viel.
    Ich habe mir dieses Modul auch schon angepasst gehabt so das ich alle existierende Tags ausgeben konnte, das größte Problem hier war jedoch das die TagRoute die verbidnung zum Link innerhalb des Moduls verliert. so habe ich versucht die Route (<?php echo JRoute::_(TagsHelperRoute::getTagRoute($tag->tag_id . '-' . $tag->alias . $itemId_string)) ?>) anzupassen was aber bei eingeschaltetem SEF dazu geführt hat das meine hinzugefügte Itemid immer hinten drangehängt wurde und somit keine Auswirkung hatte.
    Dann habe ich versucht die TagsHelperRoute-klasse zu erweitern in der Hoffnung das dies dazu führt das die SEF meine Erweiterung der URL richtig übernimmt. Leider falsch gedacht.


    Also im Grunde das selbe Problem was Pyron im alten Forum hier hat: http://www.joomlaportal.de/mod…-mit-men-verkn-pfung.html


    Deshalb habe ich das Menü dann von Hand über Menüpunkte aufgebaut. Aber dort habe ich eben das Problem die evrschlagworteten Artikel auszugeben.
    Es ist zum verrückt werden :).


    Meine aktuelle Idee ist die $item->flink wieder in ein Array zu überführen und dann daraus an die Tag-ID zu kommen. Dann hab ichs zwar immer noch nciht geschafft aber schonmal eine besser Ausgangssituation.

  • Ich habe jetzt wie folgt das geschrieben:

    Code
    $parts = parse_url($item->flink);parse_str($parts['query'], $query);$tagId = $query['amp;id']['0'];/* $tagId = intval($tagId); */$db         = JFactory::getDBO();$tagsHelper = new JHelperTags;$query      = $tagsHelper->getTagItemsQuery( $tagId, 'com_content.article', true, 'c.core_publish_up', 'DESC', true, 'all', '1' );$db->setQuery($query);$list       = $db->loadObjectList();


    Ich bekomm hier aber ein SQL-Fehler ausgegeben:

    Code
    1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND c.core_access IN (0,1,2,3,6) GROUP BY m.type_alias, m.content_item_id, m.c' at line 7 SQL=SELECT m.type_alias, m.content_item_id, m.core_content_id, count(m.tag_id) AS match_count, MAX(m.tag_date) as tag_date, MAX(c.core_title) AS core_title, MAX(c.core_params) AS core_params,MAX(c.core_alias) AS core_alias, MAX(c.core_body) AS core_body, MAX(c.core_state) AS core_state, MAX(c.core_access) AS core_access,MAX(c.core_metadata) AS core_metadata, MAX(c.core_created_user_id) AS core_created_user_id, MAX(c.core_created_by_alias) AS core_created_by_alias,MAX(c.core_created_time) as core_created_time, MAX(c.core_images) as core_images,CASE WHEN c.core_modified_time = '0000-00-00 00:00:00' THEN c.core_created_time ELSE c.core_modified_time END as core_modified_time,MAX(c.core_language) AS core_language, MAX(c.core_catid) AS core_catid,MAX(c.core_publish_up) AS core_publish_up, MAX(c.core_publish_down) as core_publish_down,MAX(ct.type_title) AS content_type_title, MAX(ct.router) AS router,CASE WHEN c.core_created_by_alias > ' ' THEN c.core_created_by_alias ELSE ua.name END AS author,ua.email AS author_email FROM #__contentitem_tag_map AS m INNER JOIN #__ucm_content AS c ON m.type_alias = c.core_type_alias AND m.core_content_id = c.core_content_id AND c.core_state IN (1) AND (c.core_publish_up = '0000-00-00 00:00:00' OR c.core_publish_up <= '2016-07-29 01:46:32') AND (c.core_publish_down = '0000-00-00 00:00:00' OR c.core_publish_down >= '2016-07-29 01:46:32') INNER JOIN #__content_types AS ct ON ct.type_alias = m.type_alias INNER JOIN #__categories AS tc ON tc.id = c.core_catid AND tc.published = 1 LEFT JOIN #__users AS ua ON ua.id = c.core_created_user_id WHERE m.tag_id IN (39) AND m.type_alias IN () AND c.core_access IN (0,1,2,3,6) GROUP BY m.type_alias, m.content_item_id, m.core_content_id, core_modified_time, core_created_time, core_created_by_alias, name, author_email ORDER BY MAX(`c`.`core_publish_up`) DESC


    Mir ist nicht so ganz klar wo ich hier einen Fehler mache. Ich müsste ja zumindest eine Ausgabe von NULL bekommen?
    Hab jetzt aber auch nicht die größten Erfahrungen mit SQL direkt bzw. dem DB-Objekt von Joomla.


    Grüße

  • So die Odyssee neigt sich dem Ende.
    Ich hab mir jetzt die Artikelzahlausgabe mittels direkter Datenbankabfrage zusammengebaut und auch so das diese mit SEF funktioniert.
    Man muss nur aufpassen das die Aliasnamen dem Titel entsprechen.



    Man kann das Ganze natürlich noch etwas schöner machen, so das es eben auch direkt mit der ID für normale URLs funktioniert und die Abfrage dann noch in eine Funktion packen. Aber irgendwann reichts auch.


    Viele Grüße