We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 36613
    • 328 Posts
    Ciao ragazzi spero che mi possiate aiutare.
    In un sito volevo realizzare un correlazione frà news e prodotti. La situazione è questa:
    - Product 1 (ID:82)
    - Product 2 (ID:1182)
    - Product 3 (ID:1822)
    - Product 4 (ID:51)

    Ogni news ha una TV che multi-select box e la c'è una tendina di valori con le id dei prodotti. Per spiegarci è così:
    - News 1 -> Product 2;Product 3 (prod_rel_id:1182,1822)
    - News 2 -> Product 2;Product 4 (prod_rel_id:1182,51)
    - News 3 -> Product 1;Product 4 (prod_rel_id:82,51)

    Vorrei che nella pagina di "Product 1" si vedano tutte le news a cui quel prodotto è stato collegato, però se uso il getResources
    con tvFilters così:

    &tvFilters=`prod_rel_id==%82%`

    mi cerca dove c'è 82 dentro alla variabile prod_rel_id, che ha database è una stringa di id e quindi mi escono tutte le news.
    Invece a me piacerebbe avere solo News 3.
    Come posso fare è da na settimana che ci sbatto la testa.

    This question has been answered by cristianb88. See the first response.

    • mm..nella multi-select box c'è verso di passare dei caratteri oltre all'id della risorsa? in modo da "isolare" gli id, che ne so, del tipo "£82£"
        TilliLab | MODX Ambassador
        website
        • 36613
        • 328 Posts
        Eh ho provato a cambiare separatore, però ho visto che nel db comunque vengono salvati così:
        82||1128||51|| ecc...
          • 20215
          • 144 Posts
          Ciao ragazzi

          il problema di cristian mi suonava familiare, ho fatto qaulche ricerca e ho trovato dove e quando ci incappai..

          la mia soluzioen è stata piuttosto creativa e poco elegante
          te la riassumo di seguito:

          Ho utilizzato un'ulteriore TV d'appoggio (che può essere anche nascosta "hidden")
          la quale valorizzavo tramite uno script OnDocFormSave prendendo il valore della TV multi-select
          e aggiungendoci il separatore all'inizio e alla fine in modo da ottenere ||82||1128||51|| così da avere nella TV d'appoggio con una stringa utile per essere filtrata &tvFilters=`TVappoggio==%||82||%`

          na schifezza insomma ma funzionava, peccato che il progetto in questione non andò in porto wink
            ----------------------------------
            canale irc Italiano #modx server: tophost.azzurra.org
          • discuss.answer
            • 36613
            • 328 Posts
            Ho risolto smiley Grazie al mitico Bruno17 ecco la soluzione:

            Con questo snippets estraggo gli id:
            [[!migxLoopCollection?
            &classname=`modTemplateVarResource`
            &where=`{"tmplvarid":"19","1":[
            {"value":"[[*id]]"},
            {"OR:value:LIKE":"%||[[*id]]||%"},
            {"OR:value:LIKE":"[[*id]]||%"},
            {"OR:value:LIKE":"%||[[*id]]"}
            ]}`
            &tpl=`@CODE:[[+contentid]]`
            &outputSeparator=`,`
            &toPlaceholder=`resource_ids`
            ]]


            19 -> è l'id della TV
            [[!+resource_ids]] -> mi da l'elenco degli id da usare.

            E con questo li faccio vedere (si può usare anche il getResource):

            [[!pdoResources?
            &parents=`0`
            &includeTVs=`1`
            &prepareTVs=`1`
            &showHidden=`1`
            &where=`{"parent":"[[++news_id]]","id:IN":[ [[!+resource_ids]] ]}`
            &tpl=`el-items-news-homepage`
            &depth=`10`
            ]]


            Pensavo di dove sputare sangue per far sta cosa.