{"id":1935,"date":"2015-11-24T11:00:57","date_gmt":"2015-11-24T10:00:57","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1935"},"modified":"2015-11-24T11:25:04","modified_gmt":"2015-11-24T10:25:04","slug":"extendiendo-webpart-content-by-search","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/","title":{"rendered":"Extendiendo el WebPart Content By Search con audiencias"},"content":{"rendered":"<p>Una de las grandes ventajas que nos dan las <strong>FarmSolutions<\/strong> es que nos <strong>permiten extender los WebParts <\/strong>implementados por el propio equipo de producto.\u00a0En versiones anteriores (2007 y 2010) era com\u00fan extender el funcionamiento de WebParts como el OWA, o el cl\u00e1sico Content Query.<\/p>\n<p>En la versi\u00f3n 2013 el WebPart m\u00e1s utilizado por todos es el\u00a0<strong>Content By Search. <\/strong>Su funcionamiento, tal y como indica su nombre, muestra el contenido de la b\u00fasqueda.\u00a0Adem\u00e1s, podemos dise\u00f1ar diversas plantillas para mostrar datos de acuerdo a nuestras necesidades.<\/p>\n<p>Ahora bien, hay algunos casos en los que la <strong>funcionalidad de serie se queda corta<\/strong>. \u00bfC\u00f3mo podemos solucionarlo? Pues extendiendo el componente y agreg\u00e1ndole nuestra funcionalidad. \u00bfLo vemos?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero17\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\/figura1.jpg\" alt=\"\" width=\"600\" height=\"300\" \/><!--more--><\/p>\n<h2>Caso de uso<\/h2>\n<p>Tenemos una <strong>Intranet<\/strong> en la que el departamento de Comunicaci\u00f3n va <strong>publicando diversas noticias.<\/strong> Estas noticias est\u00e1n clasificadas dependiendo de la audiencia a la que va dirigida.<\/p>\n<p><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/Sin-t\u00edtulo-1.jpgExtendiendo-el-WebPart-Content-By-Search-con-audiencias.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1962\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/Sin-t\u00edtulo-1.jpgExtendiendo-el-WebPart-Content-By-Search-con-audiencias.jpg\" alt=\"Sin-t\u00edtulo-1.jpgExtendiendo-el-WebPart-Content-By-Search-con-audiencias\" width=\"600\" height=\"400\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/Sin-t\u00edtulo-1.jpgExtendiendo-el-WebPart-Content-By-Search-con-audiencias.jpg 600w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/11\/Sin-t\u00edtulo-1.jpgExtendiendo-el-WebPart-Content-By-Search-con-audiencias-300x200.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Partamos del caso que en nuestra organizaci\u00f3n tenemos los siguientes bloques: Negocio, RSC, Recursos Humanos, etc. \u00a0Cada bloque contiene una tem\u00e1tica diferente, pero se crean desde el mismo lugar.<\/p>\n<h2>\u00bfC\u00f3mo lo hacemos?<\/h2>\n<p>Est\u00e1 claro que <strong>SharePoint es la mejor plataforma empresarial para tener la Intranet corporativa<\/strong>, \u00bfno? Ahora bien, utilizando la infraestructura de publicaci\u00f3n que hay en SharePoint junto con el servicio de b\u00fasqueda, podemos gestionar el contenido de las noticias.<\/p>\n<p>Pero&#8230; \u00bfC\u00f3mo podemos hacer para que en cada bloque aparezca las noticias de su \u00e1rea ? Podemos\u00a0aprovechar la buena <strong>gesti\u00f3n de grupos del Active Directory (AD) y de SharePoint<\/strong>. Esta buena gesti\u00f3n pasa por sacarle partido a\u00a0los grupos que tenemos en el AD. Por ejemplo, en casi todos los AD tenemos un grupo dependiendo del \u00e1rea de la organizaci\u00f3n. En SharePoint creamos un grupo por cada \u00e1rea y dentro de dicho grupo incluimos el grupo de AD. De esta forma evitamos tener el doble mantenimiento, cada vez que agregamos un miembro a nuestro grupo de AD se sincroniza con nuestro SharePoint.<\/p>\n<p>Ahora que ya sabemos que podemos clasificar a una persona dependiendo del \u00e1rea a la\u00a0que pertenece, tenemos que<strong> consultar y mostrar la informaci\u00f3n<\/strong>. Tenemos dos opciones:<\/p>\n<ol>\n<li>Hacer un desarrollo personalizado<\/li>\n<li>Extender el Out-of-the-box que viene por defecto en SharePoint<\/li>\n<\/ol>\n<p>En nuestro caso, <strong>vamos a optar por la segunda opci\u00f3n<\/strong> por varias razones: la utilizaci\u00f3n de la infraestructura que viene de serie en SharePoint, displayTemplates, servicio de b\u00fasqueda, etc. Es preferible frente a plantear un desarrollo desde cero, que puede ser muy costoso y laborioso dependiendo de los requisitos a los que nos enfrentemos.<\/p>\n<h2>Extendiendo el WebPart<\/h2>\n<p>En primer lugar, nos crearemos una <strong>clase\u00a0ExtendedCSWP<\/strong> que herede de la clase\u00a0ContentBySearchWebPart que est\u00e1 dentro de la .dll\u00a0\u00a0Microsoft.Office.Server.Search.WebControls;<\/p>\n<p>A continuaci\u00f3n, en el m\u00e9todo OnLoad de nuestro WebPart, agregamos un nuevo evento al m\u00e9todo <strong>BeforeSerialiceToClient. <\/strong>Este evento lo que hace es crear la consulta sobre el servicio de b\u00fasqueda.<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nprotected override void OnLoad(EventArgs e)\r\n        {\r\n            if (this.AppManager != null)\r\n            {\r\n                if (this.AppManager.QueryGroups.ContainsKey(this.QueryGroupName) &amp;amp;amp;&amp;amp;amp;\r\n                 this.AppManager.QueryGroups&#x5B;this.QueryGroupName].DataProvider != null)\r\n                {\r\n                    this.AppManager.QueryGroups&#x5B;this.QueryGroupName].DataProvider.BeforeSerializeToClient +=\r\n                                        new BeforeSerializeToClientEventHandler(UpdateQueryText);\r\n                }\r\n            }\r\n            base.OnLoad(e);\r\n        }\r\n<\/pre>\n<p>Dentro de este evento, tenemos que a\u00f1adir la funcionalidad que queremos hacer. En nuestro caso, lo que vamos a realizar es la <strong>consulta predefinida<\/strong>. Le agregaremos que filtre por los grupos a los que pertenece el usuario, de tal forma que en el <strong>Template solamente se mostrar\u00e1n las noticias que est\u00e9n vinculadas<\/strong> a la tem\u00e1tica que pertenece el usuario:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n private void UpdateQueryText(object sender, BeforeSerializeToClientEventArgs e)\r\n        {\r\n            DataProviderScriptWebPart dataProvider = sender as DataProviderScriptWebPart;\r\n\r\n            string currentQueryText = dataProvider.QueryTemplate;\r\n            var taQuery = BuildTAQuery();\r\n            if (!isInit)\r\n            {\r\n                dataProvider.QueryTemplate = string.Concat(currentQueryText, &quot; &quot;, taQuery);\r\n                Logger.Info(&quot;ExtendedCSWP Complete Query: &quot; + dataProvider.QueryTemplate);\r\n                isInit = true;\r\n            }\r\n        }\r\n\r\n        private string BuildTAQuery()\r\n        {\r\n            string query = string.Empty;\r\n            if (this.FieldName != null &amp;amp;amp;&amp;amp;amp; !string.IsNullOrWhiteSpace(this.FieldName))\r\n            {\r\n                using (SPSite site = new SPSite(SPContext.Current.Web.Url))\r\n                using (SPWeb web = site.OpenWeb())\r\n                {\r\n                    SPUser currentUser = web.CurrentUser;\r\n                    Logger.Info(&quot;ExtendedCSWP UserName: &quot; + currentUser.Name);\r\n                    SPGroupCollection grpColl = currentUser.Groups;\r\n                    var sb = new StringBuilder();\r\n                    if (grpColl.Count &amp;amp;gt; 0)\r\n                    {\r\n                        foreach (SPGroup grp in grpColl)\r\n                        {\r\n                            Logger.Info(&quot;ExtendedCSWP GroupName: &quot; + grp.Name);\r\n                            sb.Append(this.FieldName);\r\n                            if (!this.FieldName.Contains(&quot;OWS&quot;)) sb.Append(&quot;OWSUSER&quot;);\r\n                            sb.Append(&quot;:\\&quot;&quot;);\r\n                            sb.Append(grp.Name);\r\n                            sb.Append(&quot;\\&quot; OR &quot;);\r\n                        }\r\n                        query = sb.ToString(0, sb.Length - 4);\r\n                    }\r\n                }\r\n            }\r\n            return query;\r\n        }\r\n<\/pre>\n<p>\u00a1Una aclaraci\u00f3n! El servicio de b\u00fasqueda est\u00e1 claro que filtra dependiendo de los permisos que el usuario tenga. En nuestro caso, lo que estamos haciendo es <strong>mostrar el contenido seg\u00fan la tem\u00e1tica del usuario<\/strong> que est\u00e1 logado y no dependiendo de los permisos que uno tenga.<\/p>\n<p>Entre otras cosas, una mala gesti\u00f3n sobre los permisos puede provocar una lentitud en nuestro sistema. Adem\u00e1s,\u00a0si un usuario no tiene permisos sobre una noticia por mucho que pertenezca al grupo sobre el que se est\u00e1 buscando, el usuario no la visualiza.<\/p>\n<p>Por \u00faltimo, en nuestro caso hemos a\u00f1adido una propiedad dentro del ToolPart, de tal forma que podamos utilizar este WebPart en m\u00e1s escenarios.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>A veces escuchamos\u00a0que las Farm Solutions no son soluciones que debamos utilizar, principalmente porque en manos inexpertas pueden hacer que nuestra granja tenga problemas de rendimiento, ahora bien, no utilizarlas impide que se extienda el funcionamiento de algunos artefactos de una forma sencilla.<\/p>\n<p>En este art\u00edculo, como en muchas ocasiones, te he hablado del modelo de extender SharePoint que propone\u00a0Microsoft (plantea que apostemos por la creaci\u00f3n de soluciones que no est\u00e9n alojadas en SharePoint). Este modelo est\u00e1 pensando naturalmente en el Cloud, pero est\u00e1 claro que hay entornos OnPremise y en estos entornos tenemos alg\u00fan escenario que no es posible utilizarlos en\u00a0la nube pero no por ello es menos valido o \u00fatil.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Una de las grandes ventajas que nos dan las FarmSolutions es que nos permiten extender los WebParts implementados por el propio equipo de producto.\u00a0En versiones anteriores (2007 y 2010) era com\u00fan extender el funcionamiento de WebParts como el OWA, o &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[134,11],"tags":[98],"class_list":["post-1935","post","type-post","status-publish","format-standard","hentry","category-out-of-the-box","category-sharepoint-2013","tag-webpart"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Extendiendo el WebPart Content By Search con audiencias - Desarrollando sobre SharePoint<\/title>\n<meta name=\"description\" content=\"En este post vamos a ver como podemos personalizar el WebPart Content by Search para adaptarlo a nuestras necesidades\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Extendiendo el WebPart Content By Search con audiencias - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"En este post vamos a ver como podemos personalizar el WebPart Content by Search para adaptarlo a nuestras necesidades\" \/>\n<meta name=\"twitter:image\" content=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero17\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\/figura1.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Extendiendo el WebPart Content By Search con audiencias\",\"datePublished\":\"2015-11-24T10:00:57+00:00\",\"dateModified\":\"2015-11-24T10:25:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/\"},\"wordCount\":1011,\"commentCount\":0,\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero17\\\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\\\/figura1.jpg\",\"keywords\":[\"webpart\"],\"articleSection\":[\"out of the box\",\"sharepoint 2013\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/\",\"url\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/\",\"name\":\"Extendiendo el WebPart Content By Search con audiencias - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero17\\\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\\\/figura1.jpg\",\"datePublished\":\"2015-11-24T10:00:57+00:00\",\"dateModified\":\"2015-11-24T10:25:04+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"description\":\"En este post vamos a ver como podemos personalizar el WebPart Content by Search para adaptarlo a nuestras necesidades\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/extendiendo-webpart-content-by-search\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero17\\\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\\\/figura1.jpg\",\"contentUrl\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero17\\\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\\\/figura1.jpg\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Extendiendo el WebPart Content By Search con audiencias - Desarrollando sobre SharePoint","description":"En este post vamos a ver como podemos personalizar el WebPart Content by Search para adaptarlo a nuestras necesidades","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/","twitter_card":"summary_large_image","twitter_title":"Extendiendo el WebPart Content By Search con audiencias - Desarrollando sobre SharePoint","twitter_description":"En este post vamos a ver como podemos personalizar el WebPart Content by Search para adaptarlo a nuestras necesidades","twitter_image":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero17\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\/figura1.jpg","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/#article","isPartOf":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Extendiendo el WebPart Content By Search con audiencias","datePublished":"2015-11-24T10:00:57+00:00","dateModified":"2015-11-24T10:25:04+00:00","mainEntityOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/"},"wordCount":1011,"commentCount":0,"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/#primaryimage"},"thumbnailUrl":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero17\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\/figura1.jpg","keywords":["webpart"],"articleSection":["out of the box","sharepoint 2013"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/","url":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/","name":"Extendiendo el WebPart Content By Search con audiencias - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/#primaryimage"},"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/#primaryimage"},"thumbnailUrl":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero17\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\/figura1.jpg","datePublished":"2015-11-24T10:00:57+00:00","dateModified":"2015-11-24T10:25:04+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"description":"En este post vamos a ver como podemos personalizar el WebPart Content by Search para adaptarlo a nuestras necesidades","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/extendiendo-webpart-content-by-search\/#primaryimage","url":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero17\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\/figura1.jpg","contentUrl":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero17\/Introducci%C3%B3n-plantillas-elementos-contenido-Display-templates\/figura1.jpg"},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1935"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1935\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}