Se o nó de feeds pai (importação) não estiver publicado, como não o incluo na programação de importação?

11

Se o feed pai importar um nó (o formulário / nó para inserir o URL do feed, não o importador de feeds) que não está publicado, eu gostaria que ele (o URL do feed) não fosse incluído na programação do cron para atualizar / importar os itens de feed. Como isso é feito? Por exemplo, um usuário envia um feed, mas o administrador precisa verificá-lo antes de publicá-lo e importá-lo.

Consulte também Não importar itens se o feed pai não estiver publicado .

hellomobe
fonte
Você teve alguma sorte em entender este? Tentei isso com o Importador de feeds padrão (RSS) e parecia funcionar conforme o esperado - não foi importado quando o nó do feed não foi publicado.
Jan Tomka
Hmm, isso é estranho. Um dos importadores de feeds está configurado para usar o Common Syndicate Parser e o outro usa o QueryPath Parser. Confirmei que o nó do feed (pai) não está publicado. Você viu a nota de que ele está importando feeds em uma descarga de cache - isso é estranho ou normal? Não deveria fazer isso independentemente do status, certo? Como estou no local, o cron ainda não está configurado.
hellomobe
1
O artigo vinculado tem informações muito melhores, inclusive código de exemplo. Considere adicionar isso à pergunta aqui.
berkes

Respostas:

1

Parece que, quando um nó é salvo, o módulo Feeds começa a importar o feed desse nó.

function feeds_node_insert($node) {
  // Source attached to node.
  feeds_node_update($node);
  if (isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type)) {
    $source = feeds_source($importer_id, $node->nid);
    // Start import if requested.
    if (feeds_importer($importer_id)->config['import_on_create'] && !isset($node->feeds['suppress_import'])) {
      $source->startImport();
    }
    // Schedule source and importer.
    $source->schedule();
    feeds_importer($importer_id)->schedule();
  }
}

Há uma opção na página de configuração do importador chamada Importar no envio . Se você desmarcar esta caixa, esperamos que seu feed não seja importado. O mantenedor de feeds ainda precisa fazer alterações em feed_cron () para não buscar os nós não publicados.

Enquanto você espera uma correção melhor dos mantenedores do módulo, é possível corrigir rapidamente esse código alterando a primeira instrução if para adicionar a condição $ node-> status == 1 da seguinte maneira:

if ($node->status==1 && isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type))
Ajinkya Kulkarni
fonte