I don't know what I am doing wrong but it is driving me mad.
I am searching through Blog Sites and displaying posts including the PostCategory.
I have exported the CQWP and updated viewcommonfields to include PostCategory,Lookup
I have edited the itemlist.xsl to display #PostCategory
When I use a CQWP on a single Posts list the PostCategory is displayed (show items from the following list). It doesn't seem to matter which posts list I choose, it works fine.
As soon as I change the query to Show Items from the Following Site and all subsites or Show items from all sites in this collection, the category is no longer displayed. I have tried typing allsorts into the Fields to Display under PostCategory, e.g. PostCategory, Category, Category [Custom Types], but all to no avail.
What am I doing wrong?
Thanks
Stewart.
I'm not able to test it right now by myself, but try to use Guid instead of field name.
For example I have similar case, but need to show post title for comment. I use
{a131e489-d3d6-4f0c-a152-a3beb89f12be},Lookup;
in CommonViewFields, and
<xsl:variable name="PostTitle">
<xsl:value-of select="string(#_x007B_a131e489_x002D_d3d6_x002D_4f0c_x002D_a152_x002D_a3beb89f12be_x007D_)" />
</xsl:variable>
in XSL.
Also you can specify which lists in which sites should be queried by filling 'ListsOverride' and 'WebsOverride' properties of CQWP
http://www.glynblogs.com/2011/06/querying-specific-lists-with-the-content-query-web-part.html
Related
I'm using OpenSearchServer to provide search functionality on a web site. I want to crawl all pages on the site for links to follow but I want to exclude some pages from the index. I can't work out how to do this.
Specifically the website includes a shop that has its own product search and I am keeping this search for products and categories. The product pages have URLs like http://www.thesite/p/123 so I don't want to include any page like this in the search results. However some product pages reference background info pages and I want these to be included in the search index.
The problem I have is that the filter has no effect on the results - it doesn't filter out the /p/ and /c/ results. If I change the filter by unticking the negative box I get no results so it seems to be either the contents of the field or the filter criteria that is causing the problem.
I've tried adding a negative filter to the default query called search in the Query > Filter tab on the index with url:"http://www.thesite/p/*"
but it seems that wildcards are not supported for query filters although they are supported for Crawler > Exclusion list filters.
I've tried adding a new field called urlField in Schema > Fields and populating it using an analyzer configured using the Whitespace Tokenizer and a regular expression (http://www.thesite/(c|p)/). When I use the Test button it seems to generate two tokens for my test URL http://www.thesite/p/123:
http://www.thesite/p/
p
I'd hoped to be able to use the first one in a Query > Filter to exclude all the shop results and optionally be able to use the p (for product) or c (for category) if I need to search the product pages sometime in the future.
The urlShop field in the schema is set up as follows:
Indexed: yes
Stored: no (because I don't need the field back, just want to be able to filter on it)
TermVector: No
Analyzer: urlShop
Copy of: url
I've added urlFilter:"http://www.thesite/p/" to Query > Filters with the negative box ticked.
This seems to have no effect on the results when I use the default renderer.
To see whether it affects the returned results I unticked the negative box in the query filter I get no results in the default renderer. This leads me to believe that the urlShop field is not being populated but I'm not sure how to check this directly.
I would like to know whether there is an easier way to do this but if my approach makes sense in the context of OpenSearchServer please can you help me identify what's wrong?
The website is running under IIS and OpenSearchServer will be configured on the same server running in Tomcat.
Finally figured this out...
Go to query and hit edit for your configured query. Then go to the filters tab. Add a query filter like this:
urlExact:"http://myurltoexclude*"
Check the "negative" box. Click add.
Now make sure to click "save in the tiny little button on the right hand side. This is the part I missed. The URLS are still in the DB and crawl, but at least they aren't returned in results.
I am having the same problem as this post: social.msdn.com.
I am aware that they have an answer but I can't seem to understand what they mean.
So I have set up a managed property and then added it to my refinement panel using this code:
<Category Title="Loan Category" Description="Use this filter to restrict results by Loan Category" Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator" MetadataThreshold="5" NumberOfFiltersToDisplay="4" MaxNumberOfFilters="20" SortBy="Frequency" SortByForMoreFilters="Name" SortDirection="Descending" SortDirectionForMoreFilters="Ascending" ShowMoreLink="True" MappedProperty="LoanCategory" MoreLinkText="show more" LessLinkText="show fewer" />
However when I do a search it displays all kinds of GUIDs for the categories as well as the categories I am looking for. I am pretty sure this did not happen when I just had this set up in test.
The crawled properties that I have mapped to this managed property are as follows:
Loan Category(Text), ows_Loan_x0020_Category(Text), Loan_x0020_Category(Text)
I originally had "ows_taxId_Loan_x0020_Category(Text)" mapped as well however I removed it after reading this might be the issue. Ran a full crawl and still no luck. I have also reset the search index and run a full crawl.
Any advice would be greatly appreciated.
Here is the link that is being generated by the refinement panel:
<a title="Refine By: #96dbf06d-8bf8-4ec5-971b-36e27fba1f62;Loan Sale:Participation and Servicing Agreement;#4ac5410c-79e9-4a9a-99fb-66592342ed16;#51e388cd-62df-4e50-98b4-01af5f776aea;#04ac5410c-79e9-4a9a-99fb-66592342ed16" class="ms-searchref-filterlink" id="ext-gen151" href="/Search/Pages/results.aspx?k=LoanCategory%3AServicing&r=loancategory%3D%22%2396dbf06d%2D8bf8%2D4ec5%2D971b%2D36e27fba1f62%3BLoan%20Sale%3AParticipation%20and%20Servicing%20Agreement%3B%234ac5410c%2D79e9%2D4a9a%2D99fb%2D66592342ed16%3B%2351e388cd%2D62df%2D4e50%2D98b4%2D01af5f776aea%3B%2304ac5410c%2D79e9%2D4a9a%2D99fb%2D66592342ed16%22">
I determined that the GUIDs were showing in my refinement panel because they were in fact the contents of one of the crawled properties that was mapped to my managed property.
In order to determine which one I created a managed property for each of the crawled properties and added them individually. I then did an search index reset from central administration and re-ran a full crawl.
I found the guid in the database which gave me the heads up. In the database go to your search db and look for the table MSSManagedProperties. Your db name may be different.
Select * from [_SearchDB].[dbo].[MSSManagedProperties]
Get the managed property you want and then do a query on PropertyStore database table MSSDocProps based on the Pid.
Select strVal2 FROM [_SearchDB_PropertyStore].[dbo].[MSSDocProps] where Pid = ?
This gives you an idea of what data you are getting for that managed property.
short: A listview webpart contains a table with an ID composed of two GUID's, how do I find these?
I am working on adding some additional behaviour to a standard sharepoint listview-webpart.
Preferably I don't want to actually edit the webpart itself. I want to put javascript in a helper webpart to add some onclick events to the table rows which pass the values of the id and status columns to the helper webpart, which then displays some buttons depending on the row's status.
I searched around to see how others tackled this problem, and usually they use the webpart container div with ID WebPartWPQ _n_". The problem is that these webparts are going to be used on lots of sites, and I have no way of knowing the value of _n_.
A bit further down in the hierarchy is the main table of the view, and it also has an ID. In my test-case: {BF3FB0FA-7E7F-4920-A326-B5E46826B693}-{BD0777BD-455D-4554-A80E-8A11D990D1A5}
I figured these two guids must stand for something and could possibly be looked up.
So I went on a search through Sharepoint Manager to try to find those GUIDs, but I can't find them. Neither is the list ID, nor the original View ID, nor the web ID or the site ID.
So my question: Does anybody know what these ID's stand for, and how I can find them with my webpart code?
Have you considered using XSLT to customize the output of the webpart? You could then customize the output HTML and include any identifiers you wish so that you could reference them in your javascript. This is a pretty good description of how to do this: Overriding the presentation of an XSLT List View Web Part.
I have a content query web part showing 3 events for todays date on our Intranet homepage. However, when a user deletes an event from a recurring series, SP changes the title of that event to "Deleted: [original title]". My content query web part still shows these and I don't see a way to filter them out.
For my list views I get around it with a field and a formula in that field of the following.
=IF(ISNUMBER(FIND("Deleted:",Title)),"Yes","No").
However, that field isn't available to me within the CQWP filter drop-down.
how does one prevent these deleted occurrences from showing in a CQWP?
UPDATE: This is a publishing page BTW.
While you can perform the filter via XSLT, it may be preferable to do so in the CAML query itself. This article from Microsoft, How to: Customize the Content Query Web Part by using Custom Properties, shows how the CAML Where clause is constructed (and may be modified). Good luck!
Have you tried the DataFormWebPart (DFWP) before? It is basically the most basic of databound webparts, but strangely the most customizable as well.
To try it out, open SharePoint designer and create a dummy aspx page to work on / play around with. Then open the datasources pane and find the list you want to use. then click on that list and select "view data". Drag the appropriate fields onto the aspx page. You now have a (very) basic grid displaying your data.
The cool thing is though, all layout is xsl driven, so completely customizable. You can even make the xsl reusable by switching to source view and cut and paste the xs,l into a separate xsl file. To then use this file instead of the inline xsl, after moving the inline xsl, change the DFWP property xsl (that contained the inline xsl) from
<xsl><!-- .... this is where the moved inline xsl used to be... --></xsl>
to
<xsllink>/server relative url to xsl file</xsllink>
The only remaining problem is that the DFWP's datasource is now bound a single list. To do roll-ups cross site collection (if you have say multiple event lists you want to include), you need to change the DFWP's SPDataSource's select query and datasourcemode. How to do that is explained here.
Now to address your actual question: (after my blatant plug of the underappreciated DFWP :-D) The DFWP's SPDataSource basically uses either an SPQuery or an SPSiteDataQuery (depending on the datasourcemode) to retrieve the data, and you can do way more filtering wise. Either in the CAML query itself or by just filter out the unneeded rows using something like the following:
<xsl:if test="not(contains(#Title, 'Deleted:'))">
<xsl:apply-templates />
</xsl:if>
I would like to add a field to a list with displays an Image, but acts as a hyperlink. In other words like the "Hyperlink or Picture" column, but "Hyperlink AND Picture" instead.
Where the two fields you input would be the URL to the image to display, and the URL of the hyperlink.
This must be possible. I notice that the Type (in a document library) column does just that, and also includes the views that are currently being used (in the case of a folder).
Is it possible to duplicate the computed Type field in a document library to read two other fields in the list (which will act as the image url, and the redirect link)? What would the CAML be?
Thanks in advance if anyone could offer any insight.
Arnhem
This can be done but you would need to develop a custom field type. As you have found, SharePoint's default rendering for pictures is without the hyperlink. You need to change how the rendering behaves in Display mode in your own custom field. Check Patterns in Custom Field Rendering for more info.
There are also several examples of creating custom field types on the web. The MSDN articles give a lot of detail about how it all works but don't let that put you off as it's not too tricky.