it-swarm-eu.dev

Nezahrnujte určité stránky z Vyhledávání

Mám 3 stránky, které bych chtěl vyloučit z vyhledávání. Existuje způsob, jak je vyloučit ze zobrazování výsledků vyhledávání? Mimochodem, je možné i jiné typy obsahu, než jsou stránky samotné?

5
enchance

Nezkoušel jsem to Drupal 7, ale zdá se, že se to moc nezměnilo. Existuje jednoduchý „hack“ a „lepší“ způsob, jak to udělat:

Snadný způsob je přepsat search-result.tpl.php . Můžete zkopírovat výchozí soubor search-result.tpl.php z modulu prohledávání jádra do svého motivu. Poté uvnitř šablony můžete použít kód jako je tento k vyloučení výsledků založených na ID uzlu:

 if ($result["node"]->nid != <excluded nid>) {
      // search result display code
 }

Jedinou nevýhodou tohoto přístupu je to, že budete mít určité stránky výsledků vyhledávání, které mají méně výsledků než jiné (pokud na jedné stránce zobrazíte 10 výsledků a na jedné stránce nezobrazíte 3 výsledky, budete mít pouze 7 výsledků). Podobné skrytí byste také mohli provést v template_preprocess_search_result se stejnou nevýhodou.

Správný/„lepší“ způsob, jak toho dosáhnout, je skutečně vyloučit seznam uzlů z indexování. K tomu budete muset implementovat hook_query_alter . Můžete se podívat na příspěvek popisující, jak přesně to provést na blogu Phase2 .

Jak můžete vidět v položce blogu, můžete také vyloučit podle typu obsahu.

Všimněte si, že Drupal 6 způsob byl použít hook_db_rewrite_sql . Existuje příspěvek přes na Lullabot na to .

7
hross

Výsledky můžete použít k přepsání výsledků vyhledávání (včetně všech jeho funkcí: filtrování, třídění atd.).
Vytvořte vlastní pole jako „Vyloučit tento uzel z vyhledávání“ a nastavte filtr tak, aby vylučoval uzly s tímto polem nebo určitými typy obsahu.

4
P4tient

Můžete také zkusit modul Hledat vyloučit nid . Použití je velmi snadné. Udělal jsem test a udělal přesně toto a nic jiného.

Další možnost: Zobrazí se Vyhledávací konfigurační modul ( search_config 7.x-1.1-beta2 nebo vyšší) mají také určitou schopnost omezit výsledky vyhledávání zobrazováním jednotlivých položek. Modul Konfigurace vyhledávání může také omezit výsledky vyhledávání podle typu obsahu. Toto je omezení založené na rolích.

2
eye-wonder

Pro Drupal 7. Můžete skrýt uzel z výsledků vyhledávání pomocí vlastního pole. V mém případě jsem vytvořil vlastní pole jménem Archiv do požadovaný typ obsahu a pomocí tohoto vlastního pole můžete napsat funkci my_module_query_alter.

Kód

function my_module_query_alter(QueryAlterableInterface $query) {
 $is_search = $is_node_search = FALSE;
 $node_alias = FALSE;
 foreach ( $query->getTables() as $table ) { 
   if ( $table['table'] == 'search_index' || $table['table'] == 'tracker_user') {
     $is_search = TRUE;
   }
   if ( $table['table'] == 'node' || $table['table'] == 'tracker_user') {
     $node_alias = $table['alias'];
     $is_node_search = TRUE;
   }
 }

 if ( $is_search && $is_node_search ) {
   $nids = [];
   // Run entity field query to get nodes that are 'suppressed from public'.
   $efq = new EntityFieldQuery();
   $efq->entityCondition('entity_type', 'node')
     ->fieldCondition('field_archive', 'value', 1, '=');
   $result = $efq->execute();
   if ( isset($result['node']) ) {
     $nids = array_keys($result['node']);
   }
   if ( count($nids) > 0 ) {
     $query->condition(sprintf('%s.nid', $node_alias), $nids, 'NOT IN');
   }
 }
}
0

Můžete použít modul Search Configuration . Po instalaci stačí přejít na uzel, který chcete vyloučit, přejít na jeho stránku úprav a posunout celou cestu dolů na „Možnosti publikování“ - uvidíte možnost vyloučit uzel z výsledků vyhledávání.

K dispozici je také modul Search vyloučit nid , který je lehčí ... ale budete muset ručně psát v každém uzel, který chcete vyloučit.

0
Jpoeng