it-swarm-eu.dev

Shlédnutí 3 Obsluha vztahů

Snažím se napsat popisovač vztahů pro Zobrazení 3 v Drupal 7, ale selhávám ani na začátku).

V zásadě mám spoustu uzlů různých typů, všechny se stejným polem připojeným k nim. Toto pole je referenční pole navazující na kontakt Civicrm - ale to není důležité, protože v podstatě tato pole obsahují pouze celá čísla.

Nyní řekněme, že mám uzel typu obsahu „příběh“ a jeho referenční pole obsahuje celé číslo, oh, řekněme 55. Kromě toho existují uzly typu obsahu „novinky“, které také obsahují referenční ID 55.

Chci sestavit blokové zobrazení, které je umístěno na stránce příběhu, které čte v uzlu nid jako jeho argument, a pak prostřednictvím vztahu zjistí všechny ostatní uzly, které obsahují stejné referenční číslo jako samotné.

(V mé hlavě vypadá sql takto: SELECT n.nid FROM node n INNER JOIN node n2 ON n.reference = n2.reference [Za předpokladu jednoduchosti jsou data pole uložena v tabulce uzlů]).

Jak vytvořím obslužný program Zobrazení, který zajišťuje tento vztah? Jediná dokumentace, kterou mohu najít, je zobrazení API, které je pro verzi 2 a ne 3, a kromě toho je naprosto neužitečné. Čtení popisovačů zobrazení různých modulů také nepomáhá a návody k prohlížení na webu téměř neexistují.

5
Torrance

Jste si opravdu jisti, že k tomu potřebujete obsluhy vztahů?

Obecně je výchozí popisovač vztahů již poměrně flexibilní, protože používá výchozí třídu spojení, která je opravdu silná.

Existuje několik případů použití pro obsluhy vztahů, například relační modul, ale tento modul provádí vodoo věci.

Takže zpět k problému. Mohlo by to nastat, pokud definujete „vztah“ se správným polem a základním polem.

PS: Existuje velký důvod, proč neexistuje dokumentace o api = 3, protože rozdíl oproti api = 2 není vůbec velký.

Zde je příklad, jak definovat vztah.

  $data['node_revision']['vid'] = array(
    'relationship' => array(
      'handler' => 'views_handler_relationship',
      'base' => 'node',
      'base field' => 'nid',
      'title' => t('Content'),
      'label' => t('Get the actual content from a content revision.'),
    ),
  );
9
Daniel Wehner