Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

[gelöst] Alternative zu location

Eingetragen von jens78 (40)
am 09.10.2016 - 07:24 Uhr in
  • Module

Hallo,

leider ist location für Drupal 8 immer noch nicht verfügbar und wie es aussieht wird das wohl auch erstmal so bleiben.

Gibt es eine gleichwertige Alternative, mit der sich auch eine Umkreissuche realisieren lässt?

‹ Drupal 7.54 Canonical-Tag - "/node" wird angehängt [gelöst] Alternative zu location ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Moinsen, das einzige Modul,

Eingetragen von glycid (918)
am 09.10.2016 - 09:17 Uhr

Moinsen,

das einzige Modul, welches momentan proximity search views Integration hat, ist https://www.drupal.org/project/geolocation

Default muss der User in den exposed filter allerdings Längen und Breitengrad eintippen, was kaum jemanden zuzumuten ist. Ohne ein wenig custom code gehts also auch hier nicht. Ist aber nicht weiter schwierig. Wenn du willst, schick ich dir den von mir und du passt ihn für dich an. Das Ergebnis sieht dann so aus (Die Darstellung der Ergebnisse auf einer Map ist optional, nicht zwingend) :

Der Vorteil bei geolocation ist, dass es sehr schlanke Lösung ist. Es werden keine externen Libraries benötigt.

AnhangGröße
prox-geolocation.png 229.82 KB

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank

Eingetragen von jens78 (40)
am 09.10.2016 - 15:55 Uhr

Vielen Dank für deine Antwort.

Ich habe mir das Modul gerade mal angesehen und es scheint tatsächlich genau das zu sein was ich brauche :-)

Ich wäre dir sehr dankbar, wenn du mir den Code und einen kurzen Hinweis wo er eingebaut wird geben würdest.

Viele Grüße
Jens

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo glycid, würdest du

Eingetragen von sui (143)
am 09.10.2016 - 17:50 Uhr

Hallo glycid,

würdest du auch den Patch hier anbieten?
Ich kann mir vorstellen, dass es einige Interessiert wie sich eine Umkreissuche mit D8 realisieren lässt (mich eingeschlossen)

Wäre super wenn das okay für dch ist!

  • Anmelden oder Registrieren um Kommentare zu schreiben

jens78 schriebIch wäre dir

Eingetragen von glycid (918)
am 10.10.2016 - 09:55 Uhr
jens78 schrieb

Ich wäre dir sehr dankbar, wenn du mir den Code und einen kurzen Hinweis wo er eingebaut wird geben würdest.

Ich habs in einem custom Module, wo auch noch andere Sachen drin sind. Ich löse es raus und mache ein extra Modul. Denke, morgen oder übermorgen werde ich dazu kommen...

Nachtrag: Willst du die Umkreis- Kilometerauswahl auch als Dropdown wie in meinem Fall? Standard ist ein einfaches Textfeld zur freien Eingabe.

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

sui schrieb Hallo glycid,

Eingetragen von glycid (918)
am 10.10.2016 - 09:53 Uhr
sui schrieb

Hallo glycid, würdest du auch den Patch hier anbieten?

Patch isses nicht, sondern ein Ergänzungsmodul. Ich stelle den Download Link dann rein, wenn ich soweit bin.

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dropdown ist super!

Eingetragen von jens78 (40)
am 10.10.2016 - 10:04 Uhr

Dropdown ist super!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Top! Danke

Eingetragen von sui (143)
am 10.10.2016 - 11:27 Uhr

Top! Danke

  • Anmelden oder Registrieren um Kommentare zu schreiben

Anleitung und custom module

Eingetragen von glycid (918)
am 11.10.2016 - 08:05 Uhr

Anleitung und custom module Download

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank !!!!

Eingetragen von jens78 (40)
am 11.10.2016 - 14:18 Uhr

Hab es gerade ausprobiert und es tut genau was es soll :-)

In der Anleitung gibt es aber einen kleinen Fehler, du schreibst dass als Bezeichner für den Filter "Umkreis" eingeben werden soll im Modul-Code wird umkreis aber klein geschrieben.

Was denkst du wäre es möglich, dass Modul so anzupassen dass auch beim Eingabeformular die Engabe einer Adresse möglich wäre? Dann wäre location meiner Meinung nach komplett überflüssig.

Viele Grüße und nochmals vielen Dank!!

Jens

  • Anmelden oder Registrieren um Kommentare zu schreiben

jens78 schrieb In der

Eingetragen von glycid (918)
am 11.10.2016 - 15:18 Uhr
jens78 schrieb

In der Anleitung gibt es aber einen kleinen Fehler, du schreibst dass als Bezeichner für den Filter "Umkreis" eingeben werden soll im Modul-Code wird umkreis aber klein geschrieben.

Ah ja, danke, ist korrigiert

jens78 schrieb

Was denkst du wäre es möglich, dass Modul so anzupassen dass auch beim Eingabeformular die Engabe einer Adresse möglich wäre? Dann wäre location meiner Meinung nach komplett überflüssig.

Du meinst im location entity wo auch das geolocation Field ist?

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja genau

Eingetragen von jens78 (40)
am 11.10.2016 - 17:20 Uhr

Die Anfrage an die Google Maps api müsste zwar aus mehreren Feldern (Ort,Strasse,Plz) zusammengesetzt werden aber ansonsten ist das Prinzip doch eigentlich gleich oder?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, so ähnlich hab ichs auch

Eingetragen von glycid (918)
am 11.10.2016 - 17:43 Uhr

Ja, so ähnlich hab ichs auch in Anwendung. Nur kommen meine Adressdaten aus dem Address Field. Aber es gehen natürlich auch einfache Textfelder...

Address muss aber via Composer installiert werden.

Muss die Adresse auch im Node gerendert werden?

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin gar nicht auf die

Eingetragen von jens78 (40)
am 11.10.2016 - 20:38 Uhr

Ich bin gar nicht auf die Idee gekommen eine extra Erweiterung zur Eingabe von Adressen zu benutzen. Aber jetzt habe ich adress mal probeweise installiert und es gefällt mir richtig gut.

Zitat:

Muss die Adresse auch im Node gerendert werden?

Wenn du damit meinst ob neben den Geodaten auch die Adresse gespeichert und im node ausgegeben werden soll, dann ja.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit Addressfield

Eingetragen von glycid (918)
am 12.10.2016 - 13:40 Uhr

ok. dann holst du dir die Daten aus dem Addressfield und übergibst sie an Geolocation Field. Dazu erweiterst du einfach den better_proximity_search_form_alter() hook und fügst vor der letzten schließenden Klammer folgendes ein (natürlich ohne die

<?php

?>
tags):

<?php
if ($form_id == 'node_NODETYPE_form') { // Beim Inhaltstyp Article müsste hier stehen: 'node_article_form'
  // entity builder function hinzufügen
 
$form['#entity_builders'][] = 'NODETYPE_builder';
 
// Field Geodaten (wenn es bei dir so heisst, wenn nicht anpassen) kann im Node Form ausgeblendet werden, da die Werte progr. gesetzt werden
 
$form['field_geodaten']['#access'] = FALSE;
}
?>

Nach dem form_alter() hook fügst du folgende entity_builder function ein (ohne php tags):

<?php
use Drupal\node\NodeInterface;

function
NODETYPE_builder($entity_type, NodeInterface $node) {
 
// api key aus den Settings holen
 
$api_key = \Drupal::config('geolocation.settings')->get('google_map_api_key');
 
// Addressfield Daten holen
 
$address = $node->field_ADDRESSFIELDNAME->getValue(); // ADDRESSFIELDNAME = Maschinenname deines Addressfields
 
$addressdata = $address[0]['address_line1'] . ' ' . $address[0]['postal_code'] . ' ' . $address[0]['locality'];
 
 
// Geocoding
 
$user_location = urlencode($addressdata);
 
$request_url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . $user_location . '&key=' . $api_key . '&components=country:DE';
 
$response_json = file_get_contents($request_url);
 
$response = json_decode($response_json, TRUE);

  if (
$response['status'] == 'OK') {
   
$values = $node->field_geodaten->getValue();
   
$values[0] = array(
     
'lat' => $response['results'][0]['geometry']['location']['lat'],
     
'lng' => $response['results'][0]['geometry']['location']['lng']
    );

   
$node->field_geodaten->setValue($values);
  }

  else {
   
drupal_set_message(t('Error Message deiner Wahl'), 'error');
  }
}
?>

Wichtig: NODETYPE muss überall durch den Maschinennamen deines betreffenden Inhaltstypen ersetzt werden (kleingeschrieben). field_geodaten muss entsprechend geändert werden, wenn dein Geolocation Feld einen anderen Maschinennamen hat. Das Geolocation Form Field Widget muss glaub ich "Latitude / Longitude" sein.

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

Funktioniert super!!!

Eingetragen von jens78 (40)
am 12.10.2016 - 11:35 Uhr

Nur die Zeile

<?php
  $address
= $profile->field_ADDRESSFIELDNAME->getValue(); // ADDRESSFIELDNAME = Maschinenname deines Addressfields
?>

hat bei mir einen Ajax-Fehler verursacht. Nachdem ich $profile durch $node ersetzt habe, läuft aber alles wunderbar.

Denkst du nicht, dass es Sinn machen würde, das ganze in ein Modul zu packen und dann auf drupal.org zu veröffentlichen? Ich habe schon seit vielen Monaten nach einer Alternative zu location gesucht und habe dabei festgestellt, dass es vielen anderen genau so geht.

Mir hat deine Lösung auf jeden Fall sehr geholfen :-)

Vielen Dank
Jens

  • Anmelden oder Registrieren um Kommentare zu schreiben

jens78 schriebNur die Zeile

Eingetragen von glycid (918)
am 12.10.2016 - 14:02 Uhr
jens78 schrieb

Nur die Zeile

<?php
  $address
= $profile->field_ADDRESSFIELDNAME->getValue(); // ADDRESSFIELDNAME = Maschinenname deines Addressfields
?>

hat bei mir einen Ajax-Fehler verursacht. Nachdem ich $profile durch $node ersetzt habe, läuft aber alles wunderbar.

Ach, Scheiß copy 'n paste....habs geändert, sorry.

jens78 schrieb

Denkst du nicht, dass es Sinn machen würde, das ganze in ein Modul zu packen und dann auf drupal.org zu veröffentlichen? Ich habe schon seit vielen Monaten nach einer Alternative zu location gesucht und habe dabei festgestellt, dass es vielen anderen genau so geht.

Jein ;) Das eine "fertige" Proximity Search Lösung her sollte ist klar. Das wird häufig benötigt. Ein extra Modul macht für mich nur bedingt Sinn, denn:

  1. Steht in der Roadmap von Geolocation, dass eine Addressfield Integration ohnehin kommen wird.
  2. Ist Geolocation ein fantastisches Modul, es fehlt halt nur die Usability beim Proximity Filter

Mir ist eher der Gedanke gekommen, mich für diesen Part bei Geolocation mit einzubringen und entsprechende Patches zu schreiben. Mein Problem dabei ist im Moment, dass sich in D8 unter der Haube so viel geändert hat und ich gegenwärtig bei den Views Filtern noch nicht ganz durchblicke ;). Aber kommen wird das ganz sicher. Entweder von mir oder jemand anderem. Kurzfristig tuts ja erstmal das custom module.

jens78 schrieb

Mir hat deine Lösung auf jeden Fall sehr geholfen :-)

Sehr schön. Eine Bitte noch zum Schluss: Könntest du den Thread dann auf "gelöst" setzen?

Jondos Digital

  • Anmelden oder Registrieren um Kommentare zu schreiben

danke für das modul und

Eingetragen von narc (32)
am 14.05.2017 - 14:38 Uhr

danke für das modul und tutorial. habe jetzt alles aus deinem blog so umgesetzt wie beschrieben und hier aus dem forum versucht das ganze mit address zu kombinieren.

leider funktioniert es nicht wie gewünscht. das umkreis-feld wird auch noch in meiner form ausgegeben.
die verknüpfung zur google maps api funktioniert, zumindest kommen die requests im dashboard an. jedoch wenn ich zb einen eintrag aus dortmund suche, werden alle nodes ausgegeben... also dortmund, hamburg, berlin.

gibt es iwo ein gesamtes paket der integration?

also eingabe im backend über address modul, die ausgabe mit textfeld für ort und umkreis als dropdown, inkl. dem patch für das geo modul?

habe zum testen eine saubere d8 instanz aufgesetzt mit der version 8.2.3.
würde mich freuen wenn du mir helfen könntest.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Matomo(?) in Seite, aber Deinstalliert!
  • Upgrade Drupal 7 auf Drupal 9 / Inhalt erstellen zeigt nur Fehler an
  • Olivero veraendern
  • Fehlermeldung nach Update auf Drupal 10
  • Wie Button erstellen?
  • footnotes bei D10 und CKE5
  • ckeditor Bilder skalieren
  • Bild in welcher Form die Beschriftung!
  • Drupal 10 und Adaptive Theme 2.0
  • Drupal Commerce: Deprecated Module deinstallieren: CKEditor, RDF
  • [gelötst] Migration einer Seite von D8.9 auf 9 resp 10
  • Theme Olivero - Rand entfernen?
Weiter

Neue Kommentare

  • @onkel Bob,Erst mal
    vor 4 Tagen 7 Stunden
  • Prinzipiell geht das schon.
    vor 4 Tagen 7 Stunden
  • Rubi_2021 schriebWie genau
    vor 1 Woche 2 Tagen
  • Ok, war ein Versuch. ;-) Kann
    vor 1 Woche 3 Tagen
  • Danke
    vor 1 Woche 3 Tagen
  • Redest Du von dem
    vor 1 Woche 3 Tagen
  • Mit sticht das hier ins
    vor 1 Woche 3 Tagen
  • Mit welcher Version Drupal
    vor 1 Woche 3 Tagen
  • Bitte um Hilfe
    vor 1 Woche 3 Tagen
  • Fehler trotz Neuinstallation
    vor 1 Woche 3 Tagen

Statistik

Beiträge im Forum: 248796
Registrierte User: 19831

Neue User:

  • J. Berten
  • vohome
  • DerRalph

» Alle User anzeigen

User nach Punkten sortiert:
wla9333
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 3 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association