1. Vorbereitung: Plugins installieren
Für diese Lösung benötigst du zwei kostenlose Community-Plugins in Obsidian:
- Dataview: Dieses Plugin liest deine Mengenangaben aus und generiert daraus die gefilterte Einkaufsliste.
- Meta Bind (Optional, aber empfohlen): Mit diesem Plugin kannst du Plus- und Minus-Buttons oder Eingabefelder direkt in deine Sortimentsliste einbauen, was besonders auf dem Smartphone im Supermarkt extrem praktisch ist.
2. Die Sortimentsliste anlegen
Erstelle eine Notiz namens Sortimentsliste. Hier listest du alle Produkte auf, die du regelmäßig kaufst, sortiert nach Kategorien oder Supermarkt-Gängen.
Nutze für jeden Artikel einen Aufzählungspunkt mit einem Inline-Feld (erkennbar am doppelten Doppelpunkt ::):
markdown
# Sortimentsliste
## Obst & Gemüse
- [ ] Äpfel (kg) | menge:: 0
- [ ] Bananen (Stück) | menge:: 2
- [ ] Tomaten (g) | menge:: 500
## Kühlregal
- [ ] Milch (Liter) | menge:: 1
- [ ] Gouda (Packung) | menge:: 0
- [ ] Butter | menge:: 0
## Vorräte
- [ ] Nudeln (500g) | menge:: 2
- [ ] Olivenöl | menge:: 0
Verwende Code mit Vorsicht.
Hinweis: Die Checkboxen (- [ ]) in der Sortimentsliste dienen hier nur der Optik oder falls du direkt dort abhaken möchtest. Wichtig für die Automatik ist der Teil menge:: 0.
3. Die Einkaufsliste automatisch generieren
Erstelle eine zweite Notiz namens Einkaufsliste. Füge dort folgenden Dataview-Codeblock ein:
markdown
# Aktuelle Einkaufsliste
```dataview
TABLE WITHOUT ID
regexreplace(L.text, "\s*\|\s*menge::.*", "") AS "Artikel",
L.menge AS "Menge",
regexreplace(meta(L.section).subpath, "^.* > ", "") AS "Kategorie"
FROM "Sortimentsliste"
FLATTEN file.lists AS L
WHERE L.menge > 0
SORT meta(L.section).subpath ASC
```
Verwende Code mit Vorsicht.
Was dieser Code macht:
- Filtert automatisch: Es werden nur Zeilen angezeigt, bei denen
mengegrößer als0ist. - Bereinigt den Text: Der Befehl
regexreplaceschneidet den technischen Teil| menge:: 2aus dem Artikelnamen heraus, sodass dort sauber „Bananen (Stück)“ steht. - Zeigt die Kategorie: Durch
meta(L.section).subpathwird automatisch die Überschrift (z. B. „Obst & Gemüse“) aus deiner Sortimentsliste als Kategorie übernommen.
What I’m trying to do
1. Vorbereitung: Plugins installieren
Für diese Lösung benötigst du zwei kostenlose Community-Plugins in Obsidian:
- Dataview: Dieses Plugin liest deine Mengenangaben aus und generiert daraus die gefilterte Einkaufsliste.
- Meta Bind (Optional, aber empfohlen): Mit diesem Plugin kannst du Plus- und Minus-Buttons oder Eingabefelder direkt in deine Sortimentsliste einbauen, was besonders auf dem Smartphone im Supermarkt extrem praktisch ist.
2. Die Sortimentsliste anlegen
Erstelle eine Notiz namens Sortimentsliste. Hier listest du alle Produkte auf, die du regelmäßig kaufst, sortiert nach Kategorien oder Supermarkt-Gängen.
Nutze für jeden Artikel einen Aufzählungspunkt mit einem Inline-Feld (erkennbar am doppelten Doppelpunkt ::):
markdown
# Sortimentsliste
## Obst & Gemüse
- [ ] Äpfel (kg) | menge:: 0
- [ ] Bananen (Stück) | menge:: 2
- [ ] Tomaten (g) | menge:: 500
## Kühlregal
- [ ] Milch (Liter) | menge:: 1
- [ ] Gouda (Packung) | menge:: 0
- [ ] Butter | menge:: 0
## Vorräte
- [ ] Nudeln (500g) | menge:: 2
- [ ] Olivenöl | menge:: 0
Verwende Code mit Vorsicht.
Hinweis: Die Checkboxen (- [ ]) in der Sortimentsliste dienen hier nur der Optik oder falls du direkt dort abhaken möchtest. Wichtig für die Automatik ist der Teil menge:: 0.
3. Die Einkaufsliste automatisch generieren
Erstelle eine zweite Notiz namens Einkaufsliste. Füge dort folgenden Dataview-Codeblock ein:
markdown
# Aktuelle Einkaufsliste
```dataview
TABLE WITHOUT ID
regexreplace(L.text, "\s*\|\s*menge::.*", "") AS "Artikel",
L.menge AS "Menge",
regexreplace(meta(L.section).subpath, "^.* > ", "") AS "Kategorie"
FROM "Sortimentsliste"
FLATTEN file.lists AS L
WHERE L.menge > 0
SORT meta(L.section).subpath ASC
```
Verwende Code mit Vorsicht.
Was dieser Code macht:
- Filtert automatisch: Es werden nur Zeilen angezeigt, bei denen
mengegrößer als0ist. - Bereinigt den Text: Der Befehl
regexreplaceschneidet den technischen Teil| menge:: 2aus dem Artikelnamen heraus, sodass dort sauber „Bananen (Stück)“ steht. - Zeigt die Kategorie: Durch
meta(L.section).subpathwird automatisch die Überschrift (z. B. „Obst & Gemüse“) aus deiner Sortimentsliste als Kategorie übernommen.