2017-11-22 5 views
0

私はDrupalの初心者です。私の無知を受け入れてください。私はビューをオーバーライドし、デフォルトのソートまたはソートなしでポストのリストを表示するためのカスタムフックを持つページを持っています。ノードの作成日に基づいて配列をソートする必要があります。しかし、並べ替えの引数をどこにプラグインするか分からない。誰でも助けてくれますか? my_view.moduleファイルにこのコードブロックがあります。drupalで配列をソートする7

function _sites_by_park_page_get_node_references($fieldName, $property, $park_id) { 
     $results = array(); 
     $parks = _sites_by_park_page_get_sites($park_id); 
     foreach ($parks['features'] as $feature) { 
     foreach($feature['properties'][$property] as $key => $value) { 
      if (!array_key_exists($key, $results)) { 
      $query = new EntityFieldQuery(); 
      $query->entityCondition('entity_type', 'node'); 
      $query->fieldCondition($fieldName, 'value', $value); 
      $result = $query->execute(); 
      $node = node_load(array_shift(array_keys($result['node']))); 
      $results[$key] = $node->title; 
      } 
     } 
     } 
     return $results; 
    } 

    /** 
    * Return GeoJSON formatted park data 
    */ 
    function _sites_by_park_page_get_sites($park_id) { 
     // Uses a lot of memory thanks to views and GD image resizing, could use some garbage collection opimisation 
     ini_set('memory_limit', '512M'); 
     $data_view = views_get_view('sites_by_park_data'); 
     $data_view->set_arguments(array($park_id)); 
     $data_view->execute('page'); 

     // Build our own, more lightweight geojson structure for faster page loads (Leaflet module generated 2MB of data vs this custom module's 40kb-ish for 140 parks) 
     $results = array(
     'type' => 'FeatureCollection', 
     'features' => array(), 
    ); 
     foreach($data_view->result as $result) { 
     // Initialise some arrays that may be merged between result sets (for instance when multiple activities contribute to a site's overall data) 
     if (!isset($results['features'][$result->nid])) { 
      $results['features'][$result->nid] = array(
      'type' => 'Feature', 
      'properties' => array() 
     ); 
     } 



    } 
    $results['features'] = array_values($results['features']); 
    return $results; 
} 
+1

ビューの管理ページから通常の方法で注文するのはなぜですか?なぜあなたはコードからそれをしなければならないのですか? – MilanG

+0

これは優れたヒントでした。何らかの理由で、私はこれについて考えなかった。ありがとうMilanG – Tajuddin

+1

あなたがバックエンドから行うことができるすべて - フォームバックエンドを行う。それがCMSの使用のポイントです。 :) – MilanG

答えて

0

ミラノGの提案によれば、私はこれを管理セクションで行っています。並べ替え順序を変更すると、今すぐ正常に動作します。

関連する問題