Hallo Silvia,
das Verhalten ist erklärbar: <we:ifObject classid="3"> innerhalb von <we:repeat> filtert die Treffer nicht, sondern prüft nur pro Treffer, ob es sich um ein Objekt der Klasse 3 handelt und gibt dann zusätzlich die Description aus. Die Suche selbst liefert weiterhin alle Objektklassen.
Die Filterung gehört direkt in den Listview-Tag:
<we:listview type="search" name="suche" rows="20" order="Title" classid="3">
Damit werden allerdings nur noch Objekte der Klasse 3 durchsucht.
Für Dokumente und Objekte müsstest du irgend sowas bauen...
<we:repeat>
<we:ifDocument>
<li>… Ausgabe Dokument …</li>
</we:ifDocument>
<we:ifObject classid="3">
<li>… Ausgabe Objekt …</li>
</we:ifObject>
</we:repeat>
Wichtiger Hinweis dazu: Bei dieser Variante stimmen Trefferzähler und Paginierung (rows="20", we:listviewStart/End) nicht mehr, weil die ausgefilterten Objekte mitgezählt werden. Das würde auch in deiner Variante so nicht klappen. Deshalb ist das classid-Attribut am Listview die sauberere Lösung, eventuell mit zwei Listviews hintereinander, einer für Dokumente und einer für Objekte oder mit PHP.
LG
Finn
Edit:
Wenn du die Doctypes definiert hast, sollte glaube ich auch sowas gehen:
<we:listview type="search" name="suche" rows="20" order="Title" doctype="Standard" classid="3">