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;
}
ビューの管理ページから通常の方法で注文するのはなぜですか?なぜあなたはコードからそれをしなければならないのですか? – MilanG
これは優れたヒントでした。何らかの理由で、私はこれについて考えなかった。ありがとうMilanG – Tajuddin
あなたがバックエンドから行うことができるすべて - フォームバックエンドを行う。それがCMSの使用のポイントです。 :) – MilanG