Resultado da pesquisa

« Tópico anterior
|
Desenvolvimento e design
|
Próximo tópico »

Entre com seu usuário e senha ou registre-se no site para participar do forum.

Autor Mensagem
Virgilio Lemos
Gravatar

Quarta-Feira, 9 de Setembro de 2009, 21:25:34

Resultado da pesquisa

Como mostrar o resultado da pesquisa na center-column da frontpage?

Pode ser tambem no folder, se der o mesmo resultado.
Gravatar
Virgilio Lemos

Segunda-Feira, 21 de Setembro de 2009, 11:21:55
Preciso integrar o resultado da pesquisa à uma pagina existente, mas o resultado é sempre mostrado em uma nova página que se sobrepõe à anterior, apagando tudo que estava sendo mostrado anteriormente.

A página segue o desenho básico do EzPublish, com 3 colunas e o resultado da pesquisa deve ser mostrado na coluna central, mas preservando o conteúdo das colunas da esquerda e direita.

A pesquisa está inserida no cabeçalho em pagelayout.tpl e a página principal é uma frontpage.
Customizei o search.tpl para mostrar o resultado na coluna central, mas apaga as demais colunas da frontpage.

Alguma idéia de como resolver isso?
Gravatar
Renan Leme

Terça-Feira, 22 de Setembro de 2009, 17:11:41
Oi Virgilio,

Copia o codigo do search.tpl para o template da página que você quer a busca funcionando, coloca o codigo a seguir antes de qualquer outro:

{set-block scope=root variable=cache_ttl}0{/set-block}

Envia os campos do formulário para essa página.

O responsável pela busca é a função search do módulo content.

Doc: http://ez.no/doc/ez_publish/techn...dules/content/fetch_functions/search

Abs
Gravatar
Virgilio Lemos

Quinta-Feira, 24 de Setembro de 2009, 8:39:52
Renan, ao substituir a action de
action={"/content/search"|ezurl}>

para
action={"/content/frontpage"|ezurl}>

recebo a seguinte mensagem:
Visualização não encontrada
A visualização solicitada não foi encontrada no módulo

Será que o ezurl não preve o frontpage?
Gravatar
Renan Leme

Quinta-Feira, 24 de Setembro de 2009, 12:15:19
Oi Virgilio,

Até onde eu sei, não existe função frontpage do módulo content, pois o padrão de urls internas seria assim:

www.meusite.com.br/content/search

Traduzindo:
content = módulo do eZ Publish solicitado
search = função ou visualização do módulo solicitado (content)

Tente utilizar a url amigavel desse frontpage como:
{$node.url_alias|ezurl}

Ou se for a raiz do site apenas o operador
{ezurl()}


Abs
Gravatar
Virgilio Lemos

Quinta-Feira, 24 de Setembro de 2009, 16:16:07
Renan,
Utiizei o action={ezurl()}, coloquei o {set-block scope=root variable=cache_ttl}0{/set-block} no início do template da frontpage e a mensagem mudou para:

Módulo não encontrado
O módulo SearchText= ....... solicitado não foi encontrado.
As possíveis razões para isso são:
* O nome do módulo foi digitado incorretamente. Tente mudar a URL.
* O módulo não existe neste site.
* Este site utiliza correspondência na URL no acesso de site e você não forneceu uma, tente inserir um nome de acesso de site antes do módulo na URL.

Alguma idéia?

Acredito que possa funcionar assim:
Alterei o form para submeter sem passar os parâmetros do search. Assim, na verdade o submit só recarrega o frontpage.
Inseri o código abaixo antes do início do código do search:
{def $search_text=(document.getElementById('search-text').value}

Inseri também outro código para controlar, de modo a não pesquisar na carga inicial da página, quando os argumentos ainda não foram selecionados.

Mas não consegui entender como o search.tpl pega os parâmetros postados na submissão do form, para que possa mudar para pegar a variável definida acima. Não encontrei o uso nem de ezhttp nem de module_params.

Você consegue me ajudar nisso?



Gravatar
Renan Leme

Sexta-Feira, 25 de Setembro de 2009, 14:03:24
Oi Virgilio,

Confira a sua url para ver se ela está correntamente formada para passar parametros via get, provavelmente você não deve estar utilizando a reescrita de urls e o ezurl pode apontar para index.php, então o correto seria {"/"|ezurl()}

Faça isso com as variaveis utilizadas para a busca:

{* verifica se foi passado a variavel search por GET *}
{def $search = false()}
{if ezhttp_hasvariable( 'search', 'get' )}
    {set $search = ezhttp( 'search', 'get' )}
{/if}


Documentação que você solicitou:
http://ez.no/doc/ez_publish/techn...ta_and_information_extraction/ezhttp
http://ez.no/doc/ez_publish/techn...information_extraction/module_params

Abs
Gravatar
Virgilio Lemos

Domingo, 27 de Setembro de 2009, 23:00:16
Renan,
Troquei a action para {"/"|ezurl()}, mas continua o mesmo problema: Módulo não encontrado.

Não entendi o que devo fazer com o teste de GET.

Após o click no botão de Pesquisar, a url muda de http://minhapagina/index.php para http://minhapagina/index.php?SearchText=%2BRJ+%2BNiteroi, mas não recarrega, dando o arro acima.

Eu já havia aberto um post no forum internacional, e após um tempo sem resposta, me deram 3 sugestões. Caso você queria ver: http://ez.no/developer/forum/setup_design/search_results_positioning
Aí você escolhe se quer contribuir lá ou aqui.

Um abraço,
Gravatar
Virgilio Lemos

Segunda-Feira, 28 de Setembro de 2009, 11:08:43
Renan,
Testei com {"/ /"|ezurl()} e recarregou o frontpage sem erro.
Agora vou continuar os testes com relação ao GET dos parâmetros.
A url ficou assim: http://minhapagina/index.php/?SearchText=%2BRJ+%2BNiteroi
Gravatar
Virgilio Lemos

Terça-Feira, 29 de Setembro de 2009, 14:32:25
Renan,
Os testes com o GET funcionaram ok.
Os dados para a pesquisa foram passados corretamente e recebidos pela frontpage.
Porém, a pesquisa não está funcionando. Vi que existem outros posts no forum internacional sobre problemas com search em user template.

Por isso resolvi partir para outra solução, misturando sua solução com a alternativa A do Gaetano (forum internacional).
O form da pesquisa chama o search template, que realiza a pesquisa e envia o resultado através de um submit automático para ser mostrado no frontpage. com isso, o seguinte codigo passa do search para a coluna central do frontpage:
{foreach $search_result as $result
         sequence array(bglight,bgdark) as $bgColor}
   {node_view_gui view=ezfind_line sequence=$bgColor use_url_translation=$use_url_translation content_node=$result}
{/foreach}

Isto ficou ok, mas preciso de ajuda para postar o search_results, pois ainda não entendo bem a estrutura de array:
<form name="Pesquisa1" action={"/ "|ezurl} method=get>
<input type="hidden" name="SearchResult[]" id="search-result" value="{$search_result}"/>
</form>

Outro ponto: Não encontrei a variável $result a não ser no código acima. Ela deve ser passada também ou é extraída do array?
Como recebo o array no frontpage? O código abaixo está ok?
    {set $search_result = ezhttp( 'SearchResult', 'get' )}


Por fim, desculpe-me por estar fazendo perguntas básicas de programação.
Gravatar
Renan Leme

Quarta-Feira, 30 de Setembro de 2009, 20:25:12
Oi Virgilio

Não entendi direito o que você está fazendo, tente ser mais claro se possível, se vc está tendo muitas dúvidas e dores de cabeça, convém ler a documentação de como trabalha os templates, as funcões de visualização (line, full, etc), as regras de sobrescrita de templates etc.

Pelo que estou vendo nos seus posts, o que você quer não é complicado, apenas trabalhoso, o eZ Publish tem uma curva de aprendizado e isso tem o tempo de cair a "ficha". Paciência é a chave...

Abs


Gravatar
Virgilio Lemos

Quarta-Feira, 30 de Setembro de 2009, 22:35:14
Renan,
Você tem razão, é realmente muito difícil para quem não teve o devido treinamento nos templates navegar por eles e mais ainda para quem é um programador experiente em mainframe tentando aprender linguagens para internet. Mas já aprendi coisas até mais complicadas. Com muito esforço e com a ajuda de pessoas como você, vou virar esta também.

O caminho que estou segundo agora é o seguinte:
A pesquisa está num pagelayout e o nó principal é um frontpage.
A pesquisa submete os parâmetros para o search. Até aqui, tudo normal.
O search realiza a busca, passa os resultados para o frontpage por submit automático para exibir os resultados em sua coluna central, através do ezfind_line. O código que chama o ezfind_line foi movido do search para o frontpage.

Com isso, o frontpage é chamado duas vezes: a primeira na carga inicial da página, mostrando as tres colunas, sendo a do meio reservada para o resultado da pesquisa e a segunda após o search, quando re-exibirá as colunas esquerda e direita e mostrará o resultado na coluna central.

Já está tudo funcionando assim, mas não estou conseguindo passar a array do search_result através do submit. Ao invés de passar o resultado, está passando a palavra Array.

O que está errado no form? (o código do form está no replay anterior).
Se não puder ser passado por form, qual a sua sugestão? Como seria por cookie, ou por node_view_gui, tanto para gravar como para ler?
Gravatar
Renan Leme

Quinta-Feira, 1 de Outubro de 2009, 12:35:05
Oi Virgílio,

Fico feliz de saber que vai persistir com o eZ.

Acho que a melhor ajuda que posso te dar pelo que entendi na sua dúvida, é te indicar o operador:

http://ez.no/doc/ez_publish/techn...te_operators/miscellaneous/attribute

Você usará ele assim:

{$search|attribute(show)}

Geralemente o search result é obtido no array do $search (se está foi a variavel utilizada para a função fetch de busca):

$search['SearchResult']
$search['SearchCount']
$search['StopWordArray']
O eZ Find também fornece:
$search['SearchExtras']

Veja se isso te ajuda.

Abs
Gravatar
Virgilio Lemos

Quinta-Feira, 1 de Outubro de 2009, 14:23:16
Renan,

O {$search|attribute(show)} me fez ver que está tudo ok com o $search_results.
Portanto, volto ao meu problema anterior: como passar o $search_results obtido no search.tpl para o frontpage.tpl, já que é um array?

Gravatar
Virgilio Lemos

Quinta-Feira, 1 de Outubro de 2009, 17:00:56
Renan,
Voltei a testar sua sugestão inicial de copiar o codigo do search.tpl para o frontpage.tpl e descobri porque não funcionava.
Este é o código original:
{def $search=false()}
{if $use_template_search}
    {set $page_limit=10}
    {def $facetParameters  = fetch( ezfind, facetParameters )
         $filterParameters = fetch( ezfind, filterParameters )}

    {set $search=fetch( ezfind,search,
                        hash( 'query', $search_text,
                              'offset', $view_parameters.offset,
                              'limit', $page_limit,
                              'sort_by', hash( 'author', 'asc', 'score', 'desc' ),
                              'facet', $facetParameters,
                              'filter', $filterParameters ))}

    {set $search_result=$search['SearchResult']}
    {set $search_count=$search['SearchCount']}
    {def $search_extras=$search['SearchExtras']}
    {def $facetField=$search_extras.facet_fields.0.field}
    {set $stop_word_array=$search['StopWordArray']}
    {set $search_data=$search}
{/if}

Foi só trocar todos os SET por DEF. Não sei porque no search.tpl funciona com set sem def.

Muito grato por seu inestimável apoio.
Gravatar
Renan Leme

Segunda-Feira, 5 de Outubro de 2009, 12:14:09



Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2010 eZ Systems AS (except where otherwise noted). All rights reserved.