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
|
Quarta-Feira, 9 de Setembro de 2009, 21:25:34
Resultado da pesquisaComo mostrar o resultado da pesquisa na center-column da frontpage?Pode ser tambem no folder, se der o mesmo resultado. |
|
|
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? |
|
|
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 |
|
|
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? |
|
|
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 |
|
|
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? |
|
|
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 |
|
|
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, |
|
|
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 |
|
|
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. |
|
|
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 |
|
|
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? |
|
|
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 |
|
|
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? |
|
|
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. |
|
|
Segunda-Feira, 5 de Outubro de 2009, 12:14:09
|
