Exporting list of URLs
Extra alignment tab has been changed to cr. } using table, tabular and resizebox
Single word request: Harming the benefactor
Peter's Strange Word
BitNot does not flip bits in the way I expected
How do I express some one as a black person?
Time travel short story where dinosaur doesn't taste like chicken
Does splitting a potentially monolithic application into several smaller ones help prevent bugs?
Built-In Shelves/Bookcases - IKEA vs Built
Grey hair or white hair
Making a sword in the stone, in a medieval world without magic
How strictly should I take "Candidates must be local"?
Placing subfig vertically
Can you reject a postdoc offer after the PI has paid a large sum for flights/accommodation for your visit?
What is the chance of making a successful appeal to dismissal decision from a PhD program after failing the qualifying exam in the 2nd attempt?
Rejected in 4th interview round citing insufficient years of experience
Should I tell my boss the work he did was worthless
Why would a jet engine that runs at temps excess of 2000°C burn when it crashes?
PTIJ: How can I halachically kill a vampire?
MTG: Can I kill an opponent in response to lethal activated abilities, and not take the damage?
Do f-stop and exposure time perfectly cancel?
A question on the ultrafilter number
Space in array system equations
Accountant/ lawyer will not return my call
Do items de-spawn in Diablo?
Exporting list of URLs
In SDL Web 8.5 is it possible to export a list of all URLs in a specific tree?
We're hoping to use this to cross-check an XML sitemap to ensure nothing that's live isn't missed out (as crawlers won't index anything with a direct link to it).
Thank you,
importexportservice
New contributor
add a comment |
In SDL Web 8.5 is it possible to export a list of all URLs in a specific tree?
We're hoping to use this to cross-check an XML sitemap to ensure nothing that's live isn't missed out (as crawlers won't index anything with a direct link to it).
Thank you,
importexportservice
New contributor
add a comment |
In SDL Web 8.5 is it possible to export a list of all URLs in a specific tree?
We're hoping to use this to cross-check an XML sitemap to ensure nothing that's live isn't missed out (as crawlers won't index anything with a direct link to it).
Thank you,
importexportservice
New contributor
In SDL Web 8.5 is it possible to export a list of all URLs in a specific tree?
We're hoping to use this to cross-check an XML sitemap to ensure nothing that's live isn't missed out (as crawlers won't index anything with a direct link to it).
Thank you,
importexportservice
importexportservice
New contributor
New contributor
New contributor
asked 12 hours ago
KJHKJH
161
161
New contributor
New contributor
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
There is no 'out of the box' way via the GUI, but you can do this using the Core Service.
Something like the following code (which outputs a CSV) should give you a good start:
void Main()
List<PageData> allPages = Client.GetList("tcm:25-1234-4", new OrganizationalItemItemsFilterData Recursive = true, ItemTypes = new[] ItemType.Page ).Cast<PageData>().ToList();
foreach (PageData page in allPages)
OutputPageDetails(page.Id);
void OutputPageDetails(string pageId)
PageData page = (PageData)Client.Read(pageId, null);
string livePagePublishUrl = Client.GetPublishUrl(pageId, "Live");
Console.WriteLine($"pageId, "page.Title", "livePagePublishUrl"");
(P.S. You'll probably want to consider using Client.GetListXML()
, rather than Cleint.GetList()
for efficiency)
Generally speaking,GetListXML
is not more efficient thanGetList
(as a matter of fact, the first one internally calls the second and then builds the list XML).
– Rick Pannekoek
7 hours ago
I assume the example TCM URI (tcm:25-1234-64
) should actually be the ID (TCM URI or WebDAV URL) of a Publication rather than a Page ?
– Rick Pannekoek
7 hours ago
Good point, Rick. It should’ve been the TcmId of a Structure Group where we’re starting from (rather than a page). I’ve updated it now
– Jonathan Williams
7 hours ago
That’s interesting about ‘GetListXML()’ calling ‘GetList()’ internally. My concern was more about the amount of data coming ‘over the wire’ when working with a large list of objects (when using ‘GetList()’). I’ve never actually compared the two sizes though.
– Jonathan Williams
7 hours ago
The amount of data for both types of lists can be optimized using theListBaseColumns
andAdditionalColumns
properties of the list filter. In general,GetList
results in so-called R6 XML going over the wire, whereasGetListXML
results in R5 XML. The latter is older, but a bit more compact (it heavily uses XML attributes rather than nested XML elements). So, indeed,GetList
will result in a bit more data sent over the wire, but in many situations this is neglectable.
– Rick Pannekoek
6 hours ago
|
show 2 more comments
Actually Jonathan's answer is just part of the solution. You should create 2 lists:
- first list is the list created using Core Service API and this list
is the list of URLs for pages that CM side thinks that are
published. - Second list is list of page URLs created using Content Delivery API, and this list is the list of actually published pages.
In ideal world, these 2 lists should be identical, but in most cases they are not. Second list is the list of actually published pages on CD Environment, so you should in any case do the following:
- Create both lists
- compare them and make sure that they are in sync (if there are some URLs in first but not in second list, republish the page so that it indeed comes to CD side. If there is URL in second, but not in first list, it means that item is orphan, so you should create undeploy package and remove it from CD environment).
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "485"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
KJH is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftridion.stackexchange.com%2fquestions%2f19871%2fexporting-list-of-urls%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
There is no 'out of the box' way via the GUI, but you can do this using the Core Service.
Something like the following code (which outputs a CSV) should give you a good start:
void Main()
List<PageData> allPages = Client.GetList("tcm:25-1234-4", new OrganizationalItemItemsFilterData Recursive = true, ItemTypes = new[] ItemType.Page ).Cast<PageData>().ToList();
foreach (PageData page in allPages)
OutputPageDetails(page.Id);
void OutputPageDetails(string pageId)
PageData page = (PageData)Client.Read(pageId, null);
string livePagePublishUrl = Client.GetPublishUrl(pageId, "Live");
Console.WriteLine($"pageId, "page.Title", "livePagePublishUrl"");
(P.S. You'll probably want to consider using Client.GetListXML()
, rather than Cleint.GetList()
for efficiency)
Generally speaking,GetListXML
is not more efficient thanGetList
(as a matter of fact, the first one internally calls the second and then builds the list XML).
– Rick Pannekoek
7 hours ago
I assume the example TCM URI (tcm:25-1234-64
) should actually be the ID (TCM URI or WebDAV URL) of a Publication rather than a Page ?
– Rick Pannekoek
7 hours ago
Good point, Rick. It should’ve been the TcmId of a Structure Group where we’re starting from (rather than a page). I’ve updated it now
– Jonathan Williams
7 hours ago
That’s interesting about ‘GetListXML()’ calling ‘GetList()’ internally. My concern was more about the amount of data coming ‘over the wire’ when working with a large list of objects (when using ‘GetList()’). I’ve never actually compared the two sizes though.
– Jonathan Williams
7 hours ago
The amount of data for both types of lists can be optimized using theListBaseColumns
andAdditionalColumns
properties of the list filter. In general,GetList
results in so-called R6 XML going over the wire, whereasGetListXML
results in R5 XML. The latter is older, but a bit more compact (it heavily uses XML attributes rather than nested XML elements). So, indeed,GetList
will result in a bit more data sent over the wire, but in many situations this is neglectable.
– Rick Pannekoek
6 hours ago
|
show 2 more comments
There is no 'out of the box' way via the GUI, but you can do this using the Core Service.
Something like the following code (which outputs a CSV) should give you a good start:
void Main()
List<PageData> allPages = Client.GetList("tcm:25-1234-4", new OrganizationalItemItemsFilterData Recursive = true, ItemTypes = new[] ItemType.Page ).Cast<PageData>().ToList();
foreach (PageData page in allPages)
OutputPageDetails(page.Id);
void OutputPageDetails(string pageId)
PageData page = (PageData)Client.Read(pageId, null);
string livePagePublishUrl = Client.GetPublishUrl(pageId, "Live");
Console.WriteLine($"pageId, "page.Title", "livePagePublishUrl"");
(P.S. You'll probably want to consider using Client.GetListXML()
, rather than Cleint.GetList()
for efficiency)
Generally speaking,GetListXML
is not more efficient thanGetList
(as a matter of fact, the first one internally calls the second and then builds the list XML).
– Rick Pannekoek
7 hours ago
I assume the example TCM URI (tcm:25-1234-64
) should actually be the ID (TCM URI or WebDAV URL) of a Publication rather than a Page ?
– Rick Pannekoek
7 hours ago
Good point, Rick. It should’ve been the TcmId of a Structure Group where we’re starting from (rather than a page). I’ve updated it now
– Jonathan Williams
7 hours ago
That’s interesting about ‘GetListXML()’ calling ‘GetList()’ internally. My concern was more about the amount of data coming ‘over the wire’ when working with a large list of objects (when using ‘GetList()’). I’ve never actually compared the two sizes though.
– Jonathan Williams
7 hours ago
The amount of data for both types of lists can be optimized using theListBaseColumns
andAdditionalColumns
properties of the list filter. In general,GetList
results in so-called R6 XML going over the wire, whereasGetListXML
results in R5 XML. The latter is older, but a bit more compact (it heavily uses XML attributes rather than nested XML elements). So, indeed,GetList
will result in a bit more data sent over the wire, but in many situations this is neglectable.
– Rick Pannekoek
6 hours ago
|
show 2 more comments
There is no 'out of the box' way via the GUI, but you can do this using the Core Service.
Something like the following code (which outputs a CSV) should give you a good start:
void Main()
List<PageData> allPages = Client.GetList("tcm:25-1234-4", new OrganizationalItemItemsFilterData Recursive = true, ItemTypes = new[] ItemType.Page ).Cast<PageData>().ToList();
foreach (PageData page in allPages)
OutputPageDetails(page.Id);
void OutputPageDetails(string pageId)
PageData page = (PageData)Client.Read(pageId, null);
string livePagePublishUrl = Client.GetPublishUrl(pageId, "Live");
Console.WriteLine($"pageId, "page.Title", "livePagePublishUrl"");
(P.S. You'll probably want to consider using Client.GetListXML()
, rather than Cleint.GetList()
for efficiency)
There is no 'out of the box' way via the GUI, but you can do this using the Core Service.
Something like the following code (which outputs a CSV) should give you a good start:
void Main()
List<PageData> allPages = Client.GetList("tcm:25-1234-4", new OrganizationalItemItemsFilterData Recursive = true, ItemTypes = new[] ItemType.Page ).Cast<PageData>().ToList();
foreach (PageData page in allPages)
OutputPageDetails(page.Id);
void OutputPageDetails(string pageId)
PageData page = (PageData)Client.Read(pageId, null);
string livePagePublishUrl = Client.GetPublishUrl(pageId, "Live");
Console.WriteLine($"pageId, "page.Title", "livePagePublishUrl"");
(P.S. You'll probably want to consider using Client.GetListXML()
, rather than Cleint.GetList()
for efficiency)
edited 7 hours ago
answered 11 hours ago
Jonathan WilliamsJonathan Williams
13k1753
13k1753
Generally speaking,GetListXML
is not more efficient thanGetList
(as a matter of fact, the first one internally calls the second and then builds the list XML).
– Rick Pannekoek
7 hours ago
I assume the example TCM URI (tcm:25-1234-64
) should actually be the ID (TCM URI or WebDAV URL) of a Publication rather than a Page ?
– Rick Pannekoek
7 hours ago
Good point, Rick. It should’ve been the TcmId of a Structure Group where we’re starting from (rather than a page). I’ve updated it now
– Jonathan Williams
7 hours ago
That’s interesting about ‘GetListXML()’ calling ‘GetList()’ internally. My concern was more about the amount of data coming ‘over the wire’ when working with a large list of objects (when using ‘GetList()’). I’ve never actually compared the two sizes though.
– Jonathan Williams
7 hours ago
The amount of data for both types of lists can be optimized using theListBaseColumns
andAdditionalColumns
properties of the list filter. In general,GetList
results in so-called R6 XML going over the wire, whereasGetListXML
results in R5 XML. The latter is older, but a bit more compact (it heavily uses XML attributes rather than nested XML elements). So, indeed,GetList
will result in a bit more data sent over the wire, but in many situations this is neglectable.
– Rick Pannekoek
6 hours ago
|
show 2 more comments
Generally speaking,GetListXML
is not more efficient thanGetList
(as a matter of fact, the first one internally calls the second and then builds the list XML).
– Rick Pannekoek
7 hours ago
I assume the example TCM URI (tcm:25-1234-64
) should actually be the ID (TCM URI or WebDAV URL) of a Publication rather than a Page ?
– Rick Pannekoek
7 hours ago
Good point, Rick. It should’ve been the TcmId of a Structure Group where we’re starting from (rather than a page). I’ve updated it now
– Jonathan Williams
7 hours ago
That’s interesting about ‘GetListXML()’ calling ‘GetList()’ internally. My concern was more about the amount of data coming ‘over the wire’ when working with a large list of objects (when using ‘GetList()’). I’ve never actually compared the two sizes though.
– Jonathan Williams
7 hours ago
The amount of data for both types of lists can be optimized using theListBaseColumns
andAdditionalColumns
properties of the list filter. In general,GetList
results in so-called R6 XML going over the wire, whereasGetListXML
results in R5 XML. The latter is older, but a bit more compact (it heavily uses XML attributes rather than nested XML elements). So, indeed,GetList
will result in a bit more data sent over the wire, but in many situations this is neglectable.
– Rick Pannekoek
6 hours ago
Generally speaking,
GetListXML
is not more efficient than GetList
(as a matter of fact, the first one internally calls the second and then builds the list XML).– Rick Pannekoek
7 hours ago
Generally speaking,
GetListXML
is not more efficient than GetList
(as a matter of fact, the first one internally calls the second and then builds the list XML).– Rick Pannekoek
7 hours ago
I assume the example TCM URI (
tcm:25-1234-64
) should actually be the ID (TCM URI or WebDAV URL) of a Publication rather than a Page ?– Rick Pannekoek
7 hours ago
I assume the example TCM URI (
tcm:25-1234-64
) should actually be the ID (TCM URI or WebDAV URL) of a Publication rather than a Page ?– Rick Pannekoek
7 hours ago
Good point, Rick. It should’ve been the TcmId of a Structure Group where we’re starting from (rather than a page). I’ve updated it now
– Jonathan Williams
7 hours ago
Good point, Rick. It should’ve been the TcmId of a Structure Group where we’re starting from (rather than a page). I’ve updated it now
– Jonathan Williams
7 hours ago
That’s interesting about ‘GetListXML()’ calling ‘GetList()’ internally. My concern was more about the amount of data coming ‘over the wire’ when working with a large list of objects (when using ‘GetList()’). I’ve never actually compared the two sizes though.
– Jonathan Williams
7 hours ago
That’s interesting about ‘GetListXML()’ calling ‘GetList()’ internally. My concern was more about the amount of data coming ‘over the wire’ when working with a large list of objects (when using ‘GetList()’). I’ve never actually compared the two sizes though.
– Jonathan Williams
7 hours ago
The amount of data for both types of lists can be optimized using the
ListBaseColumns
and AdditionalColumns
properties of the list filter. In general, GetList
results in so-called R6 XML going over the wire, whereas GetListXML
results in R5 XML. The latter is older, but a bit more compact (it heavily uses XML attributes rather than nested XML elements). So, indeed, GetList
will result in a bit more data sent over the wire, but in many situations this is neglectable.– Rick Pannekoek
6 hours ago
The amount of data for both types of lists can be optimized using the
ListBaseColumns
and AdditionalColumns
properties of the list filter. In general, GetList
results in so-called R6 XML going over the wire, whereas GetListXML
results in R5 XML. The latter is older, but a bit more compact (it heavily uses XML attributes rather than nested XML elements). So, indeed, GetList
will result in a bit more data sent over the wire, but in many situations this is neglectable.– Rick Pannekoek
6 hours ago
|
show 2 more comments
Actually Jonathan's answer is just part of the solution. You should create 2 lists:
- first list is the list created using Core Service API and this list
is the list of URLs for pages that CM side thinks that are
published. - Second list is list of page URLs created using Content Delivery API, and this list is the list of actually published pages.
In ideal world, these 2 lists should be identical, but in most cases they are not. Second list is the list of actually published pages on CD Environment, so you should in any case do the following:
- Create both lists
- compare them and make sure that they are in sync (if there are some URLs in first but not in second list, republish the page so that it indeed comes to CD side. If there is URL in second, but not in first list, it means that item is orphan, so you should create undeploy package and remove it from CD environment).
add a comment |
Actually Jonathan's answer is just part of the solution. You should create 2 lists:
- first list is the list created using Core Service API and this list
is the list of URLs for pages that CM side thinks that are
published. - Second list is list of page URLs created using Content Delivery API, and this list is the list of actually published pages.
In ideal world, these 2 lists should be identical, but in most cases they are not. Second list is the list of actually published pages on CD Environment, so you should in any case do the following:
- Create both lists
- compare them and make sure that they are in sync (if there are some URLs in first but not in second list, republish the page so that it indeed comes to CD side. If there is URL in second, but not in first list, it means that item is orphan, so you should create undeploy package and remove it from CD environment).
add a comment |
Actually Jonathan's answer is just part of the solution. You should create 2 lists:
- first list is the list created using Core Service API and this list
is the list of URLs for pages that CM side thinks that are
published. - Second list is list of page URLs created using Content Delivery API, and this list is the list of actually published pages.
In ideal world, these 2 lists should be identical, but in most cases they are not. Second list is the list of actually published pages on CD Environment, so you should in any case do the following:
- Create both lists
- compare them and make sure that they are in sync (if there are some URLs in first but not in second list, republish the page so that it indeed comes to CD side. If there is URL in second, but not in first list, it means that item is orphan, so you should create undeploy package and remove it from CD environment).
Actually Jonathan's answer is just part of the solution. You should create 2 lists:
- first list is the list created using Core Service API and this list
is the list of URLs for pages that CM side thinks that are
published. - Second list is list of page URLs created using Content Delivery API, and this list is the list of actually published pages.
In ideal world, these 2 lists should be identical, but in most cases they are not. Second list is the list of actually published pages on CD Environment, so you should in any case do the following:
- Create both lists
- compare them and make sure that they are in sync (if there are some URLs in first but not in second list, republish the page so that it indeed comes to CD side. If there is URL in second, but not in first list, it means that item is orphan, so you should create undeploy package and remove it from CD environment).
answered 8 hours ago
Marko MilicMarko Milic
4,67621145
4,67621145
add a comment |
add a comment |
KJH is a new contributor. Be nice, and check out our Code of Conduct.
KJH is a new contributor. Be nice, and check out our Code of Conduct.
KJH is a new contributor. Be nice, and check out our Code of Conduct.
KJH is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Tridion Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftridion.stackexchange.com%2fquestions%2f19871%2fexporting-list-of-urls%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown