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

Views Filter: Location Modul : PHP Code für Umkreissuche

Eingetragen von xip (65)
am 02.10.2012 - 14:12 Uhr in
  • Views
  • Drupal 7.x oder neuer

Hallo ihr,

ich wollte bei Views über das Location Modul eine Umkreissuche erstellen. Das klappt auch alles super. Nur jetzt wollte ich das der Ursprungspunkt automatisch aus den Userpositionen berechnet wird. Die User speichern Ihre Daten von Latitude und Longitude in ihrem Profil ab.

Das Abfragen der Position klappt auch laut query. Bekomme die beiden Werte angezeigt.

Nur irgendwie klappt das mit der Rückgabe nicht. Glaube an dem return haut da was nicht nicht.

Anbei der Code:

Configure filter criterion: Location: Distance / Proximity
PHP code for latitude, longitude

global $user;
$latitude="";
$longitude="";
$latitudeset = db_query('SELECT latitude FROM location WHERE lid = (SELECT lid FROM location_instance WHERE uid = (SELECT uid FROM users WHERE uid = :uid))', array(':uid' => $user->uid));
$longitudeset  = db_query('SELECT longitude  FROM location WHERE lid = (SELECT lid FROM location_instance WHERE uid = (SELECT uid FROM users WHERE uid = :uid))', array(':uid' => $user->uid));

foreach ($latitudeset as $lat) {
$latitude = $lat;
}
foreach ($longitudeset as $long) {
$longitude = $long;
}
debug($longitude); // Hier stehen die richtigen Koordinaten
debug($latitude); // Hier stehen die richtigen Koordinaten
return array(
'longitude' => $longitude ,
'latitude' => $latitude
);

Habt ihr da eine Idee für mich?

‹ [gelöst] Node-Title als Title-Tag bei Image-Field in Viewausgabe Views Filter auf letzte Profiänderung des User ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Mach das doch mit Views und

Eingetragen von sklausing (288)
am 02.10.2012 - 16:37 Uhr

Mach das doch mit Views und lass die Entfernung von den Userdaten aus berechnen. Da musst Du gar nicht selbst in PHP coden.
Dort kanns Du doch direkt von Users Latidude / Longitude die Proximity berechnen / ausgeben lassen.

Als Argument habe ich da die Node ID genommen und bei Feldern einfach von Location die Entfernung (Proximity ) ausgewählt. Dann habe ich noch einen Filter in Views gesetzt, dass was angezeigt wird wenn die Daten beim User auch hinterlegt sind.
Das ganze hab ich dann in einen Block gepackt und diesen unter den Nodes einblenden lassen.
Der Export dieses Views schaut bei mir so aus:
$view = new view; $view->name = '01_test_entfernungen'; $view->description = 'Test für Entfernungen zwischen Nodes'; $view->tag = 'Entfernungen'; $view->base_table = 'location'; $view->core = 0; $view->api_version = '2'; $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ $handler = $view->new_display('default', '01_test_entfernungen', 'default'); $handler->override_option('fields', array( 'distance' => array( 'label' => '', 'alter' => array( 'alter_text' => 1, 'text' => 'Dieser Beitrag handelt [distance] von Deinem Wohnort entfernt.', 'make_link' => 0, 'path' => '', 'link_class' => '', 'alt' => '', 'prefix' => '', 'suffix' => '', 'target' => '', 'help' => '', 'trim' => 0, 'max_length' => '', 'word_boundary' => 1, 'ellipsis' => 1, 'html' => 0, 'strip_tags' => 0, ), 'empty' => '', 'hide_empty' => 1, 'empty_zero' => 0, 'origin' => 'user', 'units' => 'km', 'latitude' => '', 'longitude' => '', 'postal_code' => '', 'country' => '', 'php_code' => '', 'nid_arg' => 'nid', 'nid_loc_field' => 'node', 'uid_arg' => '', 'exclude' => 0, 'id' => 'distance', 'table' => 'location', 'field' => 'distance', 'override' => array( 'button' => 'Übersteuern', ), 'relationship' => 'none', ), )); $handler->override_option('sorts', array( 'distance' => array( 'order' => 'ASC', 'origin' => 'user', 'latitude' => '', 'longitude' => '', 'postal_code' => '', 'country' => '', 'php_code' => '', 'nid_arg' => 'nid', 'nid_loc_field' => 'node', 'uid_arg' => 'uid', 'id' => 'distance', 'table' => 'location', 'field' => 'distance', 'override' => array( 'button' => 'Übersteuern', ), 'relationship' => 'none', ), )); $handler->override_option('arguments', array( 'nid' => array( 'default_action' => 'default', 'style_plugin' => 'default_summary', 'style_options' => array(), 'wildcard' => 'all', 'wildcard_substitution' => 'Alle', 'title' => '', 'breadcrumb' => '', 'default_argument_type' => 'node', 'default_argument' => '', 'validate_type' => 'none', 'validate_fail' => 'not found', 'break_phrase' => 0, 'not' => 0, 'id' => 'nid', 'table' => 'node', 'field' => 'nid', 'validate_user_argument_type' => 'uid', 'validate_user_roles' => array( 2 => 0, 3 => 0, 4 => 0, ), 'override' => array( 'button' => 'Übersteuern', ), 'relationship' => 'none', 'default_options_div_prefix' => '', 'default_argument_image_size' => '_original', 'default_argument_fixed' => '', 'default_argument_user' => 0, 'default_argument_php' => '', 'image_size' => array( '_original' => '_original', 'thumbnail' => 'thumbnail', 'preview' => 'preview', ), 'validate_argument_node_type' => array( 'image' => 'image', 'poll' => 'poll', 'book' => 'book', 'gpx_artikel' => 'gpx_artikel', 'guestbook' => 'guestbook', 'page' => 'page', 'story' => 'story', 'test' => 'test', 'url' => 'url', 'fusioncharts' => 0, ), 'validate_argument_node_access' => 0, 'validate_argument_nid_type' => 'nid', 'validate_argument_vocabulary' => array( 1 => 0, 4 => 0, 3 => 0, ), 'validate_argument_type' => 'tid', 'validate_argument_transform' => 0, 'validate_user_restrict_roles' => 0, 'validate_argument_php' => '', ), )); $handler->override_option('filters', array( 'latitude' => array( 'operator' => '!=', 'value' => array( 'value' => '0', 'min' => '', 'max' => '', ), 'group' => '0', 'exposed' => FALSE, 'expose' => array( 'operator' => FALSE, 'label' => '', ), 'id' => 'latitude', 'table' => 'location', 'field' => 'latitude', 'relationship' => 'none', ), 'type' => array( 'operator' => 'in', 'value' => array( 'image' => 'image', 'poll' => 'poll', 'book' => 'book', 'gpx_artikel' => 'gpx_artikel', 'guestbook' => 'guestbook', 'page' => 'page', 'story' => 'story', 'test' => 'test', 'url' => 'url', ), 'group' => '0', 'exposed' => FALSE, 'expose' => array( 'operator' => FALSE, 'label' => '', ), 'id' => 'type', 'table' => 'node', 'field' => 'type', 'override' => array( 'button' => 'Übersteuern', ), 'relationship' => 'none', ), )); $handler->override_option('access', array( 'type' => 'none', )); $handler->override_option('cache', array( 'type' => 'none', )); $handler->override_option('title', ' '); $handler->override_option('empty', 'Solltest Du hier keine Angaben sehen, dann hast Du wahrscheinlich keinen Wohnort in Deinem Profil eingetragen.'); $handler->override_option('empty_format', '1'); $handler = $view->new_display('block', '01_test_userentfernung', 'block_1'); $handler->override_option('empty', 'Solltest Du hier keine Angaben sehen, dann hast Du wahrscheinlich keinen Wohnort in Deinem Profil eingetragen oder dem Beitrag wurde keine Ortsangabe hinzugefügt.'); $handler->override_option('block_description', ''); $handler->override_option('block_caching', -1);
Den kannst Du ja bei Dir in Views mal importieren um Dir das ganze anzuschauen.
Am Ende erscheint bei mir ein simpler Satz, dass der gerade gesehene Beitrag x km von seinem Heimatort entfernt ist. BZW wenn nichts erscheint, dann der Hinweis, dass bei ihm oder in der Node keine Geodaten hinterlegt sind.

Wenn Du nun einen exposed Filter für die Proximity nimmst hast Du Deine Suche.

  • Anmelden oder Registrieren um Kommentare zu schreiben

hey dank dir. Super

Eingetragen von xip (65)
am 02.10.2012 - 23:10 Uhr

hey dank dir. Super Tipp.

Hast mir einen Schubs in die absolut richtig Richtig gegeben.

Dank dir. hat geklappt! :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • [gelöst]Vermaledeite Feeds
  • кракен сайт кто владелец
  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
Weiter

Neue Kommentare

  • кракен маркетплейс форум
    vor 1 Stunde 23 Minuten
  • Rollen
    vor 8 Stunden 20 Minuten
  • Inzwischen sind wir bei
    vor 1 Woche 4 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 4 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 1 Tag
  • Hey danke
    vor 9 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 19 Stunden
  • Da scheint die Terminologie
    vor 10 Wochen 23 Stunden
  • Kannst doch auch alles direkt
    vor 10 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250239
Registrierte User: 20464

Neue User:

  • Tawer3sowar
  • ocvk2810
  • marouane.blel

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 20 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