Añadir portlet Buscador en liferay

por

Por fin legamos al último de los portlets que os voy a presentar, el buscador.

Este portlet se implementa como el resto de portlets en el tema, y como todos, tiene sus peculiaridades.

Para incluirlo sólo debeis incluir los siguiente códigos en el portal_normal.vm de vuestro tema:


$velocityPortletPreferences.setValue("portlet-setup-show-borders", 
"false")

Hacemos que no muestre los bordes del portlet. Podemos ponerlos o no, como queramos.


$velocityPortletPreferences.setValue("group-id", "$group_id")

Establecemos el identificador del grupo al que pertenece el portlet. Es necesario ponerlo.


$theme.runtime("3_INSTANCE_abcd", "",
 $velocityPortletPreferences.toString())

Establecemos el tipo de portlet que queremos, en este caso el 3, le damos una instance que será el identificador de portlet único y lo lanzamos.


$velocityPortletPreferences.reset()

Por último reseteamos las preferencias del portlet.

Os pongo también el código completo de para añadirlo:


$velocityPortletPreferences.setValue("portlet-setup-show-borders", "false")
$velocityPortletPreferences.setValue("group-id", "$group_id")
$theme.runtime("3_INSTANCE_abcd", "", $velocityPortletPreferences.toString())
$velocityPortletPreferences.reset()

Como os dije antes, añadiendolo en el portal-normal directamente o en un archivo a parte y luego incluyendo en el portal normal tendríamos listo nuestro portlet Buscador para usarlo.

Antes de terminar con este artículo sobre el portlet buscador debo daros una pequeña reseña.Cuando querais cambiar el icono del buscador tendreis que machacar la imagen _diffs/images/common/search.png por la que vosotros querais.

En esta serie de artículos os he ido mostrando los portlets más usados y como se pueden incluir en el tema. A partir de aquí el resto de portlets podeis incrutarlos en vuestros temas de la misma manera, tan sólo debeis ponerle el id correspondiente del portlet y setear las preferencias de cada uno. Tanto el id como las preferencias las podeis ver usando el firebug e inspeccionando el portlet incluyendolo a mano sobre la web.

Si alguien tiene alguna duda de como incluir algún otro portlet que no dude en preguntarme.

Espero que os sea de utilidad.

COMENTARIOS

22-12-2015 22:36:13
Gracias @Carlos Gómes. El portlet tiene un selectbox cuando lo tiras en el portal en el que puede elegir el ambito de búsqueda (Todos o Este sitio web). Tienes dos opciones, o fijas el valor del select y lo ocultas o realizas un hook que modifique el portlet para eliminar el selectbox y manda un input hidden al formulario con el mismo name del select box que has eliminado y el value correspondiente al valor de "Este sitio web"
22-12-2015 15:00:14
Estimado gracias por el dato, tengo una duda como puedo hacer que mi buscador traiga solamente el contenido del actual sitio web donde realizó la búsqueda, de antemano gracias.
27-05-2013 21:42:59
Hola @Alberto. Tal y como muestras lo que has hecho yo diría que lo estás haciendo bien. ¿Has comprobado que se haya desplegado bien tu hook? Prueba a añadir un texto por ejemplo a la JSP que estas modificando a ver si se muestra. Si es así es que estás en la JSP adecuada si no tendremos que buscar la que es exactamente auqnue yo creo que estas en la correcta.
27-05-2013 12:51:18
Hola, he incluido el portlet search en mi tema así: $theme.search(). Estoy en la versión 6.1. he intentado crear un hook en el portlet search para que no aparezca el select con las opciones de \"Todo\" y \"En este sitio web\" tal como indicas en uno de tus post, pero no me ha dado resultado. No sé si estoy en el archivo adecuado a modificar, he cogido \"search.jsp\" del portlet \"search\". Y he sustituido esto: <aui:select inlineField=\"<%= true %>\" label=\"\" name=\"groupId\"> <aui:option label=\"everything\" selected=\"<%= groupId == 0 %>\" value=\"0\" /> <aui:option label=\'<%= \"this-\" + (group.isOrganization() ? \"organization\" : \"site\") %>\' selected=\"<%= groupId != 0 %>\" value=\"<%= group.getGroupId() %>\" /> </aui:select> Por esto: <aui:input name=\"groupId\" type=\"hidden\" value=\"<%= group.getGroupId() %>\" /> Pero no parece funcionar, me falta algun paso?
06-05-2013 22:02:31
Hola @Alvaro, muchas gracias por tu comentario. Para realizar lo que pides tienes 2 opciones. La primera de ellas es la que te muestro en el artículo que es incluir el portlet en las templates de un tema de apariencia. La segunda opción solo es posible si estás usando la version 6.1 y es la de utilizar las plantillas de página que te permiten crear páginas preformateadas con ciertos portlets pero estas sólo podrás configurarlas para que salgan en el contenido central mientras que a través del tema de apariencia las podrás poner en cualquier sitio. Existe una tercera opción que es incrustarla en una layout que crees a tu medida. Espero haberte ayudado :)
06-05-2013 16:47:17
Sabes cómo puedo incluirlo por defecto cuando cree una página? Muchas gracias
16-01-2013 18:23:27
Por defecto busca en todo el portal. Si quieres eliminar el select y hacer que por defecto busque en tu sitio web debes hacer un hook que modique ese trozo de código. Sería bastante simple ya que sería borrar el "select" y crear un input type="hidden" con el mismo "name" que el "select" y como "value" el de la opción de buscar en este sitio web.
16-01-2013 16:13:33
¿Sabes si es posible establecer por defecto la opción de que solamente busque en el sitio web actual y no en todo? Quiero que funcione así por defecto y que desaparezca el select que se muestra a la derecha del textinput con estas opciones de búsqueda... Gracias!
28-07-2011 08:19:47
El buscador incialmente solo busca dentro de tu portal, a lo largo de todas las páginas de tu portal. Si quisieras ampliar la busqueda ya no te sabría decir como deberías hacerlo(habria que modificar el código del portlet) pero lo que si te puedo decir es que por defecto el buscador esta programado para buscar a lo largo de todas las páginas de tu portal.
27-07-2011 23:44:55
Hola, Gracias me ha servido tu post, quisiera preguntarte algo respecto al buscador y es si..se le puede configurar el alcance para que busque en varios sitios? o unicamente busca en las paginas del sitio en el cual es incluido? Muchas Gracias

DEJA TU COMENTARIO