Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 18. Februar 2014 16:43

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Suche nach PLZ

Hallo mal wieder,

hat jemand eine Idee, wie ich eine Liste von zB Zahnärzten auf folgende zwei Arten durchsuchen kann:

1. Als Text-Link und auf einer Deutschlandkarte, eingeteilt in grobe PLZ-Gebiete (00000 - 90000), sprich Bundesländern.

2. Als Einzel-PLZ-Suche über ein Suchfeld (zB 60845)

??

Der User soll drei Suchalternativen haben: Er kann a) auf die Bundesländer in der Karte klicken, er kann b) auf die 0-9-Linkliste oder c) eine individuelle Postleitzahl eingeben. In allen Fällen sollen die im jeweiligen Gebiet ansässigen Zahnärzte ausgegeben werden.

Fall 1 könnte man evtl. als Kategoriemenü zB mit ListIt oder News umsetzen. Aber Fall 2?

Danke schon mal für jeden Tipp.

Beitrag geändert von antibart (02. November 2015 13:01)

Offline

#2 19. Februar 2014 13:20

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Ich sehe gerade:

Listit2 hat auch ein eigenes Suchtemplate. Damit könnte es wohl klappen. Fall 1 über die Kategorien, Fall 2 über die modulinterne Suche.

Beitrag geändert von antibart (19. Februar 2014 13:27)

Offline

#3 27. Mai 2014 08:38

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Ich muss diesen alten Fall mal wieder aufgreifen.

Das mit der Kategoriensuche klappt ganz gut. Jede Kategorie entspricht einem PLZ-Bereich.

Ein kleines Problem besteht aber noch:

Die Ergebnisse sollen noch mal gesplittet werden. zB In "Zahnärzte mit Labor" und "Zahnärzte ohne Labor".

Der User klickt als auf zb PLZ-Bereich 200000 und kriegt dann folgendes Beispielergebnis

Zahnärzte ohne Labor
Peter Meyer | Alsterstraße 5 | 28 255 Hamburg
Sabine Schmidt | Kiez 16 | 28 445 Hamburg

Zahnärzte mit Labor
Kurt Kurtsen | Kurttraße 5 | 28 275 Hamburg
Inger Nielsen | Reeperbahn 18 | 28 000 Hamburg

Ich habe jetzt bei ListIt2 noch ein Extrafeld (Kontrollkastengruppe mit Labor / ohne Labor) eingefügt. Trotzdem habe ich noch keinen Plan, wie ich die Ergebnisse im Zusammenfassungstemplate splitten kann.

Eine Option wäre eventuell, unter jeder PLZ-Kategorie zwei Untergorien (mit/ohne Labor) anzulegen. Aber das erscehitn mir unnötig kompliziert.

Ich dachte an irgendwas in der Art:

{if $item->fielddefs.labor.value == 'mit Labor'}
Zeige alle mit Labor
{else}
Zeige alle anderen
{/if}

Aber genau bei der Ausgabe "Zeige alle ..." hört es bei mir leider auf smile

Ich glaube, die Bedingung ist eigentlich überflüssig. Ich kenne aber die Syntax nicht, wie ich direkt  nach bestimmten Variblen filtern kann. Vielleicht verschachtelte foreach-Schleifen?

Beitrag geändert von antibart (27. Mai 2014 15:24)

Offline

#4 27. Mai 2014 16:37

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Ich bin echt am verweifeln mit meiner Solonummer smile

Ich habe das, was ich da oben leichtfertig hingetippt habe, einfach mal ausprobiert:

antibart schrieb:

{if $item->fielddefs.labor.value == 'mit_labor'}
Mit Labor (Überschrift)
Listeneinträge
{else}
Ohne Labor (Überschrift)
Listeneinträge
{/if}

Tatsächlich werden die mit / ohne Labor richtig zugeordnet. Problem: Pack ich den Code in die foreach-Schleife, kriegt natürlich jeder Eintrag die Überschrift verpasst.

Etwa so:

Zahnärzte ohne Labor
Peter Meyer | Alsterstraße 5 | 28 255 Hamburg
Zahnärzte ohne Labor
Sabine Schmidt | Kiez 16 | 28 445 Hamburg
Zahnärzte mit Labor
Kurt Kurtsen | Kurttraße 5 | 28 275 Hamburg
Zahnärzte mit Labor
Inger Nielsen | Reeperbahn 18 | 28 000 Hamburg

Pack ich die Abfrage dagegen außerhalb der foreach-Schleife (also zwei foreach-Schleifen), funktioniert die Trennung nicht mehr.

Puuh ....

Beitrag geändert von antibart (27. Mai 2014 16:39)

Offline

#5 27. Mai 2014 16:43

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: Suche nach PLZ

Und wenn Du zwei foreach-Schleifen baust? Ist zwar nicht so toll für die Performance, aber damit könnte es klappen:
In der ersten foreach-Schleife alle anzeigen bei denen $item->fielddefs.labor.value == 'mit_labor' und in der zweiten die mit $item->fielddefs.labor.value != 'mit_labor'.
Die Überschrift kommt dann entsprechend jeweils for die foreach-Schleife.

Offline

#6 27. Mai 2014 16:45

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Danke schonmal.

Siehe mein Edit

Pack ich die Abfrage dagegen außerhalb der foreach-Schleife (also zwei foreach-Schleifen), funktioniert die Trennung nicht mehr.

.. aber ich versuch es einfach nochmal.

EDIT: klappt nicht.

Sobald ich zwei Schleifen benutze, werden alle Einträge unter {else} "Ohne Labor" gezeigt.

Ich kann den Code gern zeigen - aber ich denke, das ist insgesamt nicht nicht der richtige Weg.


	{if $item->fielddefs.labor.value == 'ja'}

<strong>Mit Labor</strong>
{foreach from=$items item=item}
	<div class="plz-suche">
		<ul>
<li>{$item->title}</li>
<li>{$item->fielddefs.stra_e.value}</li>
<li>{$item->fielddefs.plz.value} {$item->fielddefs.ort.value}</li>
<li>{$item->fielddefs.telefon.value}</li>
<li><a href="http://{$item->fielddefs.homepage.value}" target="_blank" title="Neues Fenster: Website der Osteopathieparaxis {$item->title}">Homepage</a></li>

</ul></div><div style="clear: both;"></div>
{/foreach}


{else}

	
<strong>Ohne Labor</strong>
{foreach from=$items item=item}
<div class="plz-suche">
		<ul>
<li>{$item->title}</li>
<li>{$item->fielddefs.stra_e.value}</li>
<li>{$item->fielddefs.plz.value} {$item->fielddefs.ort.value}</li>
<li>{$item->fielddefs.telefon.value}</li>
<li><a href="http://{$item->fielddefs.homepage.value}" target="_blank" title="Neues Fenster: Website der Osteopathieparaxis {$item->title}">Homepage</a></li>

</ul>
</div><div style="clear: both;"></div>{/foreach}{/if}

Beitrag geändert von antibart (27. Mai 2014 16:59)

Offline

#7 27. Mai 2014 17:09

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: Suche nach PLZ

Ich dachte eher so:

<strong>Mit Labor</strong>
{foreach from=$items item=item}
{if $item->fielddefs.labor.value == 'ja'}
	<div class="plz-suche">
		<ul>
<li>{$item->title}</li>
<li>{$item->fielddefs.stra_e.value}</li>
<li>{$item->fielddefs.plz.value} {$item->fielddefs.ort.value}</li>
<li>{$item->fielddefs.telefon.value}</li>
<li><a href="http://{$item->fielddefs.homepage.value}" target="_blank" title="Neues Fenster: Website der Osteopathieparaxis {$item->title}">Homepage</a></li>

</ul></div><div style="clear: both;"></div>
{/if}
{/foreach}


	
<strong>Ohne Labor</strong>
{foreach from=$items item=item}
{if $item->fielddefs.labor.value != 'ja'}
<div class="plz-suche">
		<ul>
<li>{$item->title}</li>
<li>{$item->fielddefs.stra_e.value}</li>
<li>{$item->fielddefs.plz.value} {$item->fielddefs.ort.value}</li>
<li>{$item->fielddefs.telefon.value}</li>
<li><a href="http://{$item->fielddefs.homepage.value}" target="_blank" title="Neues Fenster: Website der Osteopathieparaxis {$item->title}">Homepage</a></li>

</ul>
</div><div style="clear: both;"></div>{/if}{/foreach}

Offline

#8 27. Mai 2014 17:16

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Hä? Ich werde wahnsinnig. Das funktioniert.

Wo ist der Unterschied außer bei :

{if $item->fielddefs.labor.value != 'ja'}

.. das hatte ich nämlich auch schon erfolglos probiert.

Auf jeden Fall: Danke, danke, danke .....

EDIT: Ah - I see. Nochmal danke.

Beitrag geändert von antibart (27. Mai 2014 17:33)

Offline

#9 27. Mai 2014 17:32

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: Suche nach PLZ

Der "Clou" ist die if-Abfrage innerhalb der beiden foreach-Schleifen, nicht außerhalb wink

Offline

#10 27. Mai 2014 17:34

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Ja - gerade entdeckt. Super. Danke.

Wenigstens war mein Ansatz nicht völlig hirnrissig. Auch wenn die Ausführung zu wünschen übrig lies smile

Offline

#11 02. November 2015 12:23

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

... und wieder muss dieses alte Thema zu diesem alten Modul ausgraben.

Es besteht der Wunsch, die Items alphabetisch nach Titel auszugeben - ohne aber die Reihenfolge im Backend dementsprechend zu verschieben.

Es gibt dafür ja den Parameter orderby="item_title". Der scheint aber nicht zu funktionieren, wenn die Einträge erst über ein category-menu ausgeworfen werfen, welches in einem anderen Content-Block liegt.

Lässt sich diese Sortierung nicht auch irgendwie ins Zusammenfassungstemplate einpflanzen?

Offline

#12 02. November 2015 13:08

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: Suche nach PLZ

Stand mal vor nem ähnlichen Problem (samt Lösung):
http://www.cmsmadesimple.de/forum/viewtopic.php?id=4203

Offline

#13 02. November 2015 14:46

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Danke schon mal

Ich habe es jetzt folgendermaßen probiert:

UDT:

[== php ==]
  if (!function_exists('do_sort')) {
        function do_sort($a, $b) {
            return $a->fielddefs[plz][value] > $b->fielddefs[plz][value];
        }
    }
     
    $data = $params['data'];
    usort($data, 'do_sort');
    $smarty->assign('sorted', $data);

Im Template "searchresults"

[== smarty ==]
 {sort data=$item->fielddefs.plz.value}
{foreach from=$sorted item=item}

...

{/foreach}

Da kommt dann aber gar nichts mehr raus.

Offline

#14 02. November 2015 15:30

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

Ich habe jetzt die simple Lösung mit der Sortierung im Backend gewählt.

Ein Problem habe ich noch mit dem Verstädnis der Search-Paramter.

Ich hatte die Hoffnung, mit search_*='' hätte die die Option, nur bestimmte Felder durchsuchen zu lassen, aber das war wohl ein Missverstädnis.

Kann ich vielleicht im Template bestimmte Felder ausschlileßen bzw. umgekehrt?

Das heißt zB: Es sollen in der moduleigenen Volltext-Suche nur die Felder PLZ, Ort und Titel gesucht werden dürfen. Wenn ich als dort "20" eingebe, soll das Feld "Telefonnummer" nicht berücksichtigt werden.

Geht sowas?

Beitrag geändert von antibart (02. November 2015 15:30)

Offline

#15 04. November 2015 10:41

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: Suche nach PLZ

antibart schrieb:

Ich hatte die Hoffnung, mit search_*='' hätte die die Option, nur bestimmte Felder durchsuchen zu lassen, aber das war wohl ein Missverstädnis.

Vielleicht könnte mir jemand auf die Sprünge helfen, wie dieser Parameter genau funktionieren sollte, wenn er denn funktioniert?

In der Hilfe steht folgendes:

(optional) search="" - Search all fields. Uses fulltext search. Can be combined with filter search.

Wenn search="" alle Felder durchsucht, welche Angaben sind dort möglich, um nicht alle Felder zu durchsuchen?


(optional) serach_*="" - Search a particular field. You can use 'title' or the alias of a field definition, e.g. search_title. Can be combined with fulltext search. Multiple search_* params can be combined.


serach_* scheint mir doch ein Tippfehler zu sein und müsste eigentlich search_* heißen, oder? Das Sternchen steht für den Alias. Aber welche Angaben/Werte sind dort überhaupt erlaubt? 1/0? True/false? Sonstwas? Bislang hatte kein Test Auswirkungen.

Beitrag geändert von antibart (04. November 2015 10:44)

Offline

#16 04. November 2015 13:05

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: Suche nach PLZ

Es gibt bei der aktuellen Version von ListIt glaube ich tatsächlich ein Problem. In älteren Versionen (vor 1.2 oder sogar noch früher) hat es funktioniert. Danach wurde das Projekt ja von zwei anderen Entwicklern übernommen (u.a. Goran/uniqu3) und ordentlich umgebaut. Die letzte große Aktion an die ich mich erinnere waren die Kategorien. Vielleicht ist die Suche dabei einfach untergegangen bzw. wurde nicht mehr vollendet, da sich beide Entwickler ja (leider) von CMSms zurückgezogen haben.
Jedenfalls habe ich diese Funktionen in aktuellen Versionen auch nie ans Laufen gebracht.

Was das Sortieren angeht versuch mal

[== Smarty ==]
{sort data=$items}

Es muss ja das komplette Objekt übergeben werden, nicht bloß ein Feld. Das Feld nach dem Sortiert wird, gibst Du dann ja im UDT an.
Zu blöd, dass ich das seinerzeit nicht mitgepostet habe ... Versuche ich gleich mal nachzuholen.

Offline