Возникла задача - некоторые ноды в зависимости от определенного условия надо исключать из поисковой индексации...
Не из выдачи а именно из индексакии. Начинаю копать
Оказывается друпал не предусмтривает такого рода хуков.... вашу ноду он съест и заиндексит в любом случае.
Есть конешно модуль search_block котороый всего лишь заметает дерьмо из индексации.....
Сейчас оцениваю время разработки и ничего в голову не приходит как положить на принцип "не вмешиваться в ядро".
Причина - нужно туда вставлять свой хук, чтобы можно было не индексировать ноду, когда ее НЕ НАДО индексировать...
ура, товарищи.
и вставлять это дело в node_update_index в модуле node......
либо полностью переписывать поисковый механизм что приведет к полному выбиванию из канвы друпала.....
Комментарии
UPDATE - деревяннось search и node совместная
Разделите ноды по ролям и сделайте запрет на чтение выбранным роля. Все модули есть.
так вот не получится.... задачка не для разделения по ролям... ноды всем доступны.
задачка НЕ ВКЛЮЧАТЬ определенные ноды в поисковый индекс ибо не надо это.
Для вашей деревянной задачи есть отличное деревянное решение. После индексации по крону исключайте из индекса то, что вам не нужно.
жжжошь. тока не кажется ли тебе что это через ж?
решилось именно через з....
<?php
/**
* searchcorrector.module
*/
/**
* Implementation of hook_nodeapi
*/
function searchcorrector_nodeapi(&$node, $op, $teaser, $page) {
switch($op) {
case 'validate':
break;
case 'load':
break;
case 'insert':
break;
case 'delete':
break;
case 'view':
break;
case 'update index':
if('event' == $node->type){
// we do check if it's associated with cultural events
$result = db_query('SELECT * FROM {cultureevents_events} WHERE enid=%d', $node->nid);
if($o = db_fetch_object($result) ){
// insert into candidates for deleting
db_query('INSERT INTO {searchcorrector}(nid) VALUES(%d)', $node->nid);
}
}
echo 'updateindex';
return array();
break;
}
}
/**
* Implementatino of hook_update_index
*
* We might have a race condition here with other instances
* of module's hook_update_index, but I'm not sure and it's
* been working so far.
*/
function searchcorrector_update_index() {
$query = 'SELECT nid FROM {searchcorrector}';
$result = db_query($query);
$row = 0;
$nids = array();
while($o = db_fetch_object($result) ) $nids[] = $o->nid;
if(count($nids) ) foreach($nids as $nid){
watchdog('searchcorrector', 'Dropping index for nid ' . $nid);
search_index($nid, 'node', '');
$query = 'DELETE FROM {searchcorrector} WHERE nid=%d';
db_query($query, $nid);
}
}
?>
а не подскажете, куда этот код вставлять?
мне нужно, чтобы не индексировался и не выводился тип материала "pm"
в свой модуль..
а еще лучше - сделать похаканый модуль search и положить его с модулями сайта
а как и куда прописать, что мне нужно либо только мои типы материала, либо все кроме "pm"?
уже все сказано. не можете - наймите человека. тут кроме меня еще дофига народу который может - http://www.drupal.ru/profile/drupal_commerce_programming
чтож, и на том спасибо )