Linkhandler + tt_news: Single PID pro Kategorie setzen [Gelöst]

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    10. 08. 2009, 16:32

    [b]Problem:[/b]
    Über die Extension linkhandler können auch Redakteure ganz einfach interne Links auf tt_news Detailansichten setzen - und natürlich auch auf andere Detailansichten (tt_address, wt_directory, etc...).
    Jedoch kann es sein, dass verschiedene News auf verschiedenen Seiten angezeigt werden sollen - eben je nach News Kategorie.

    [b]Idee:[/b]
    Linkhandler macht es einem wirklich nicht schwer über Typoscript dementsprechend einzugreifen und den Ablauf zu ändern: Also muss eine kleine userFunc her. Interessant ist auch, dass die tt_news Kategorien bereits ein Feld "Single PID" (Single-Anzeige (Newsdetails) für Nachrichten dieser Kategorie) beinhalten (war mir bis vor kurzem unbekannt) - das kann gleich hierfür benutzt werden.

    [b]Umsetzung:[/b]
    Beispiel TS:
    [TS]includeLibs.linkhandler_helper = fileadmin/user_linkhandler_helper.php

    # TS for linkhandler
    plugin.tx_linkhandler {
    tt_news {
    forceLink = 1
    #parameter = 15
    parameter.stdWrap.cObject = USER
    parameter.stdWrap.cObject {
    userFunc = user_linkhandler_helper->main
    userFunc {
    # tt_news uid
    uid = TEXT
    uid.field = uid

    # Default pid if no pid given
    pid = TEXT
    pid.value = 13
    }
    }
    additionalParams = &tx_ttnews[tt_news]={field:uid}
    additionalParams.insertData = 1
    useCacheHash = 1
    }
    }
    [/TS]

    Dann noch eine kleine userFunc direkt mit Namen "user_linkhandler_helper.php" in fileadmin ablegen:

    1. <?php
    2.  
    3. // This class could manipulate the target pid of the linkhandler
    4. class user_linkhandler_helper {
    5.  
    6. // Main function linkhandler pid change
    7. function main($content = '', $conf = array()) {
    8. $this->conf = $conf['userFunc.']; // ts configuration
    9. $uid = $this->cObj->cObjGetSingle($this->conf['uid'], $this->conf['uid.']); // get tt_news uid
    10. $pid = $this->cObj->cObjGetSingle($this->conf['pid'], $this->conf['pid.']); // get default pid
    11. $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery (
    12. 'tt_news_cat.single_pid',
    13. 'tt_news LEFT JOIN tt_news_cat_mm ON (tt_news.uid = tt_news_cat_mm.uid_local) LEFT JOIN tt_news_cat ON (tt_news_cat_mm.uid_foreign = tt_news_cat.uid)',
    14. 'tt_news.uid = ' . intval($uid),
    15. '',
    16. 'tt_news_cat_mm.sorting',
    17. 1
    18. );
    19. if ($res) $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
    20. if (is_array($row) && intval($row['single_pid']) > 0) { // if there is a category to the current news and if there is the single_pid field filled
    21. return intval($row['single_pid']); // give single pid from category back
    22. } else { // no cat given or no single pid given
    23. return intval($pid); // give default pid back
    24. }
    25.  
    26. }
    27. }
    28. ?>

    Danach kann man die Single PID einfach über die Newskategorie setzen:
    [img]http://www.design-and-style.de/temp/typo3/tt_news_cat_single_pid.jpg[/img]

    [b]Abschließend:[/b]
    Über TS kann man eine alternative PID eintragen, falls eine Kategorie keinen Single PID Eintrag beinhaltet.

    Cheers, Alex

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/


  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    10. 08. 2009, 16:36

    das geht doch schon seit ewigkeiten per default. pro news kategorie kann man die single seite angeben, oder versteh ich da was falsch?

    georg

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    10. 08. 2009, 16:38

    [quote="just2b"]
    das geht doch schon seit ewigkeiten per default. pro news kategorie kann man die single seite angeben, oder versteh ich da was falsch?
    [/quote]

    Na ich kann mich natürlich auch geirrt haben, jedoch ging das bei mir nicht per Default...

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    10. 08. 2009, 16:40

    ts muss mans halt noch aktivieren, aber das feature gibts

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    10. 08. 2009, 16:42

    Blamage hin oder her - ich lass den Post mal stehen, falls es anderen Leuten ähnlich geht :D

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • kimpixel kimpixel
    TYPO3-Anwärter
    0 x
    6 Beiträge
    0 Hilfreiche Beiträge
    12. 08. 2009, 09:20

    ob das bei der News Extension geht weis ich nicht aber ich habe mich sehr über den post gefreut da das ich das für meine eigene Extension dringend gebraucht habe.
    Danke

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    12. 08. 2009, 10:08

    [quote="kimpixel"]
    ob das bei der News Extension geht weis ich nicht aber ich habe mich sehr über den post gefreut da das ich das für meine eigene Extension dringend gebraucht habe.
    Danke
    [/quote]

    Na dann war es doch nicht ganz umsonst :)

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • 0 x
    23 Beiträge
    0 Hilfreiche Beiträge
    31. 08. 2009, 10:03

    Hallo Alex,

    die Userfunction von Dir funktioniert bei mir schon mal ganz gut, allerdings habe ich bei manchen News das Problem, dass der Redakteur vergisst eine Kategorie auszuwählen, da die News auch ohne eine Kategorie angezeigt wird.
    Im TSConfig des Sysfolders in dem sich die News befindet, ist per tx_ttnews.singlePid die PID der Einzelseite gesetzt.
    Wie könnte man diese PID in der Userfunction auslesen und zurückgeben, wenn keine Kategorie ausgewählt wurde?
    Vielen Dank schon mal im Voraus.

    Tobias

  • j-spot j-spot
    T3PO
    0 x
    21 Beiträge
    0 Hilfreiche Beiträge
    10. 10. 2011, 21:23

    Schon ein Weilchen her, aber ich habs wie folgt gelöst:

    1. plugin.tx_linkhandler {
    2. tt_news {
    3. forceLink = 1
    4. parameter.stdWrap.cObject = CONTENT
    5. parameter.stdWrap.cObject {
    6. table = tt_news_cat
    7. fields = tt_news_cat.single_pid
    8. join = tt_news_cat_mm ON tt_news_cat_mm.uid_foreign = tt_news_cat.uid INNER JOIN tt_news ON tt_news.uid = tt_news_cat_mm.uid_local
    9. where = 1
    10. andWhere = tt_news.uid = '{field:uid}'
    11. andWhere.insertData = 1
    12. # PID der Kategorien (bzw. des Seitenbaum)
    13. pidInList = 1
    14. # ggf. notwendig, wenn Kategorien über den Seitenbaum verteilt sind
    15. #recursive = 5
    16. max = 1
    17. orderBy = tt_news_cat_mm.sorting
    18. }
    19. renderObj = COA
    20. renderObj {
    21. 10 = TEXT
    22. 10.field = single_pid
    23. }
    24. }
    25. additionalParams = &tx_ttnews[tt_news]={field:uid}
    26. additionalParams.insertData = 1
    27. useCacheHash = 1
    28. }
    29. }

  • 0 x
    23 Beiträge
    0 Hilfreiche Beiträge
    26. 10. 2011, 11:18

    Ich habe das TS von j-spot getestet, woraufhin die Links im Frontend nicht mehr angezeigt wurden.
    @j-spot: Welche TYPO3 und tt_news-Version setzt Du ein?