Přeskočit přímo na text


Views a specifické třídění

Kategorie: Jak na to?
Týká se verze: Drupal 6.x

Ahoj, můžete mi prosím poradit?

Potřebuji v plném zobrazení uzlu (např.: node/50) zobrazit blok se seznamem uzlů (včetně aktuálně zobrazeného) stejného typu jako je zobrazený uzel (to není problém), ale seznam musí být setříděný následovně:
  • na prvním místě aktuálně zobrazený uzel (Nid: 50)
  • a dále zbytek tříděný podle data vytvoření (node_created DESC)

Marně se snažím najít řešení přímo ve views, nebo i změnou dotazu v hook_views_qu­ery_alter()

Edit: Musí to být jeden dotaz v rámci jednoho displeje.

Dík za radu. Šurda

 

ten jeden bych tam frknul

ten jeden bych tam frknul jako display typu attachment s argumentem.

Dík

Dík, ale musí to být jeden dotaz v rámci jednoho displeje. To jsem neuvedl.

Data budou zobrazena jako ikony na mapě (gmap).

Na mapě budou použity dvě různě barevné ikony (markers). Aktuálně zobrazený uzel bude na mapě zobrazený třeba červenou ikonou zbytek uzlů modrou ikonou. Proto musí být jako první (respektive v určeném pořadí). Potom je možné přiřadit jednotlivým uzlům správné ikony. Třeba první uzel bude červená další tři zelené a zbytek modré.

gmap

Takto v SQL: SELECT

Takto v SQL:

SELECT IF(node.nid=21,1,0) AS mysort, node.nid AS nid, node.title AS node_title FROM node node WHERE (( (node.status = ‚1‘) AND (node.type IN (‚article‘)) )) ORDER BY mysort DESC, node_title ASC 

21 je vybrane node nid. Takze staci toto dostat do query.

Funguje, perfektní, děkuji

Pro ostatní kdyby někdo potřeboval.

 function mymodule_view­s_query_alter(&$vi­ew, &$query) { 
if ($view->name == ‚view_name‘ && $view->current_display == ‚display_name‘) {
/*
$nid vezme z URL nebo z $view
$arg = arg();
$nid = ($arg[0] == ‚node‘ && is_numeric($ar­g[1])) ? (int) $arg[1] : 0;
nebo přímo z view, pokud je v argumentech
$nid = ($view->args[xx]) ? (int) $view->args[xx] : 0;
*/
$nid = ($view->args[1]) ? (int) $view->args[1] : 0;
$query->fields[‚super_me­ga_ultra_sort_from_ha­vran‘][‚field‘] = „IF(node.nid=“ . $nid . „,1,0)“;
$query->fields[‚super_me­ga_ultra_sort_from_ha­vran‘][‚alias‘] = „super_mega_ul­tra_sort_from_ha­vran“;
$query->orderby[0] = „super_mega_ul­tra_sort_from_ha­vran DESC“;
$query->orderby[1] = „node_created DESC“;
}
}

Edit: aby kód fungoval správně, musí být ve views přidáno třídění podle node_created DESC

gmap-views-sort

Poslat nový komentář

  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <em> <strong> <b> <i> <br> <code> <ul> <ol> <li> <pre> <pre class="php">
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Více informací o možnostech formátování

Hledat

Přihlášení

Bezpečnost Drupalu

Z hlediska bezpečnosti je Drupal na velmi vysoké úrovni, díky propracovanému systému hlášení, prověřování a řešení možných problémů.

Čtěte více a odebírejte bezpečnostní aktuality

Poslední komentáře

Kdo je online

Momentálně je online 1 uživatel a 0 hostů.

Online uživatelé

Support

Psychologie - poradenství