I got these are my local giant for $2 and $3 a piece, plastic with rubber suction cups, slits on the bottom to let water in/roots out
edit: A copy and pasted from another forum I posted in, sometimes suction cups give out so here's my solution for it. Old photos before filling in my ripariums more.
DIY Riparium Basket
plastic shower basket with holes
'size' 12 coated copper wire-green
plastic window/door screen (optional)
Needle Nose Pliers
wire cutters/clippers/dykes (old school name)
Other Material and Tool Options:
crafting mesh (optional)
nylon stocking (optional)
other sizes or colors for coated copper wire
Ripariums are a great way bring more color and beauty to a tank as well as take up nitrates, but without taking up too much space under water. Having the leaves directly exposed to air lets the plants get their co2 much quicker so they can grow faster which means absorbing nitrates from the water more rapidly (plus fish and shrimp love the under water roots).
Some people spend over $20 for riparium specific baskets with suction cups, mesh, and media. I decided to save more $ and use left over window/door screen (optional depending on media used), expanded clay pebble media (used commonly for aquaponic style gardening), and show baskets. Make sure the baskets are plastic and not painted (could chip off), and have holes/slits to let water in and roots grow out. You can skip the use of wire and just try the suction cups but the ones I got have issue staging in place and tend to sink below the water line. So I'll be using coated wire to keep them permanently in place! If you also use this DO NOT leave the exposed end of the copper in the water-it is not safe. I cut a length of wire and put it through the suction cup holes and against the tank to mold around the trim so it stays in place (if you have a rimless tank I'd not recommend doing this as the tension may damage the glass, use pliers instead to shape the wire). I used pliers to wrap the wire around itself on the back so it would not hand down past the black tank trim and be visible (alternatively you can just cut the wire).
Because I'm using a larger clay media (only because I have a large bag leftover from an aquaponics setup-the white chalky-ness on the above photo if from dried calcium deposits from the tap) I don't really need the mesh for these baskets, but if you use smaller gravel or have a basket with larger holes you may need it. I just cut it to fit in the basket and cover the holes then fill with media. If you also use clay media I'd recommended soaking it for a day beforehand as it tends to float the first time it gets wet but once it absorbs enough water it will sink. You can also use tank gravel or pea gravel for your media, or even broken up lava rock.