Drupal user
Fórum
Drupal version

Ahoj, prosím o radu. Mám na webu živatele - ti mají tagy (záliby) pes, kočka, knížka, kino apod...

Jde mi o to, jak ve views nebo v profilech uživatelů ten soulad zobrazit (pokud to jde)? Je tam nějaké pole, které by vypisovalo tagy které patří tomu uživateli, který si to prohlíží (třeba profil druhého uživatele)? Případně jak se to pole nazývá? Stáhnul jsem si i devel, ale z toho moudrý moc nejsem :/

Díky za nakopnutí - Robert :)

Řešení téměř určitě  bude přes views a contextual filters, přičemž použijete hodnoty buď z URL, nebo z pole aktuálně přihlášeného uživatele.

Ale zadání mi nepřipadá úplně srozumitelné, kdybyste to popsal podrobněji jako uživatelský scénář (Uživatel X, který má tagy ABC, přijde na web a prohlíží si... a cheme, aby se mu zobrazilo... atd)., asi by se lépe hledalo / formulovalo řešení.

Ja jsem to zadání pochopil takhle:
Uživatel A má tagy: kočka, pes, mlok, veverka
Uživatel B má tagy: zebra, slon, mlok, pes
Uživatel B kouká na profil uživatele A a měl by vidět společné tagy: mlok a pes

To view asi bude složitější a nejsem si jistej že bude fungovat. :)
Zjednodušeně bych zkusil views postavit na tabulce taxonomy a nastavit kontextuální filtr(y) na ID uživatele (A) na kterého koukám (hodnota z URL). A další filtr nebo kontextuální filtr na přihlášeného uživatele (B). Plus v tom budou hrát roli ještě relationships. Tím by to mohlo vyfiltrovat ty tagy společné pro oba uživatele.

Taky je možný že to pujde nějak mnohem jednodušejc nebo složitějc. :)

Ahoj jedno řešení může být, že si načteš entity obou uživatelů a pak hodnoty polí kde máš tagy proženeš přes array_intersect nebo array_intersect_key to záleží..., nakonec by ti mělo zůstat pole kde jsou společné tids:

$terms = Term::loadMultiple($tids);

$output = '<ul>';

  foreach($terms as $term) {

   $name = $term->getName();

   $url = Url::fromRoute('entity.taxonomy_term.canonical', ['taxonomy_term' => $term->id()]);

   $link = Link::fromTextAndUrl($name, $url); $link = $link->toRenderable();

   $output .='<li>'.render($link).'</li>';

  }

$output .= '</ul>';

print $output;

 

Přidat komentář

Ktorá rieka preteká Bratislavou?