Is there a plugin that will tells me where in the content tree a doctype is used and gives me a link to it?
My ultimate objective is to find a way to convert all doctypes of one type to another doctype programatically without losing data?
Any suggestions on how to do that as well?
when you are in the content section and select one of the content nodes, you have a tab called Info. In this tab you have a container which looks like this:
There you can find the used Document Type which also has a link to it.
My approach is a little bit hacky.. but create a test doc type and in the view add this script (probably a good idea to secure this page and / or delete it after).
It loops through all nodes, does a count by doctype. If you set the doctype you're interested in on the line that declares docTypeSearchNodes then you'll get a link to each instance of that doc type.
To convert - depends how many of these you have. There is an option in the back office to change doc type and map the properties though I'd probably do it in code using the content service.
@{
var umbracoHelper = new Umbraco.Web.UmbracoHelper(UmbracoContext.Current);
// either set your home node ID or just use the first typed content at root for simple single homepage sites
var homeNode = Umbraco.TypedContentAtRoot().First();
var allNodes = homeNode.Descendants();
var docTypeCount = new Dictionary<string, int>();
var docTypeSearchNodes = homeNode.Descendants().Where(x => x.DocumentTypeAlias == "contentPage"); @* change to your doc type alias*@
}
<table>
<tr>
<th>Id</th>
<th>Name</th>
<th>DocType</th>
<th>Url</th>
</tr>
@foreach (var curNode in allNodes)
{
// increment the count if in dictionary or add new key if not
int currentCount;
docTypeCount.TryGetValue(curNode.DocumentTypeAlias, out currentCount);
docTypeCount[curNode.DocumentTypeAlias] = currentCount + 1;
@* comment this table out or it will show you all nodes *@
@* <tr>
<td><a href="/umbraco#/content/content/edit/@curNode.Id" target="_blank">@curNode.Id</a></td>
<td>@curNode.Name</td>
<td>@curNode.DocumentTypeAlias</td>
<td><a href="@curNode.Url" target="_blank">@curNode.Url</a></td>
</tr>
*@
}
</table>
<hr />
<br />
@* output the counts for each doc type *@
@{
<table>
<tr>
<th>Id</th>
<th>Name</th>
</tr>
@foreach (var curKey in docTypeCount)
{
<tr>
<td>@curKey.Key</td>
<td>@curKey.Value</td>
</tr>
}
</table>
}
<hr />
@* output the nodes with links for the doc type we're looking for *@
<table>
<tr>
<th>Id</th>
<th>Name</th>
<th>DocType</th>
<th>Url</th>
</tr>
@foreach (var curNode in docTypeSearchNodes)
{
<tr>
<td><a href="/umbraco#/content/content/edit/@curNode.Id" target="_blank">@curNode.Id</a></td>
<td>@curNode.Name</td>
<td>@curNode.DocumentTypeAlias</td>
<td><a href="@curNode.Url" target="_blank">@curNode.Url</a></td>
</tr>
}
</table>
Find / Convert DocTypes without losing data
Is there a plugin that will tells me where in the content tree a doctype is used and gives me a link to it? My ultimate objective is to find a way to convert all doctypes of one type to another doctype programatically without losing data? Any suggestions on how to do that as well?
Hi Ben,
when you are in the content section and select one of the content nodes, you have a tab called Info. In this tab you have a container which looks like this:
There you can find the used Document Type which also has a link to it.
Hope this helps!
/Michaël
Hi Ben,
My approach is a little bit hacky.. but create a test doc type and in the view add this script (probably a good idea to secure this page and / or delete it after).
It loops through all nodes, does a count by doctype. If you set the doctype you're interested in on the line that declares docTypeSearchNodes then you'll get a link to each instance of that doc type.
To convert - depends how many of these you have. There is an option in the back office to change doc type and map the properties though I'd probably do it in code using the content service.
is working on a reply...