Cant explain this (how to find field values including empty)

Try this:

<<list-links filter:"[all[]has:field[status]] :filter[{!!status}!match[Sold]!match[On Consignment]]">>

Notes:

  • The first filter run, [all[]has:field[status]], returns all tiddlers that have a status field. Note that has[status] is only true if the field is not empty, while has:field[status] is true as long as the status field exists, even if it is empty.
  • Similarly, in the second filter run, the get[status] filter operator only returns a value if the field is not empty. However, there is no equivalent get:field[status] that will return empty status fields. To address this, use {!!status} which always returns a value even if the field is empty or doesn’t exist.
  • Also, for simple string comparisons, you can use the more succinct !match[...] filter operator rather than compare:string:ne[...]. Note that both of these filters are case-sensitive. If you want to do case-insensitive comparisons, you can add a lowercase[] operator, and then compare with lower case string literals, like this:
<<list-links filter:"[all[]has:field[status]] :filter[{!!status}lowercase[]!match[sold]!match[on consignment]]">>

enjoy,
-e