Page 1 of 2
I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 5:37 am
by replytomk3
I remember a discussion somewhere on how to find out the number of pages by counting database entries in _content. Can someone help?
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 5:38 am
by calguy1000
SELECT count(id) FROM _content
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 5:46 am
by Wishbone
calguy1000 wrote:
SELECT count(id) FROM _content
SELECT count(
content_id) FROM _content
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 6:10 am
by replytomk3
Why does this produce a blank result if ran from the backend as a UDT?
Code: Select all
global $gCms;
$db = $gCms->db;
$query = "SELECT count(content_id) FROM ".cms_db_prefix()."content";
$dbresult = $db->Execute($query);
return $dbresult;
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 7:28 am
by Wishbone
Replace your last line with:
Code: Select all
$row = $dbresult->FetchRow();
return($row['count(content_id)']);
I got 33
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 11:12 pm
by replytomk3
370

Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 11:16 pm
by replytomk3
OK, I would like to release this code for the benefit of others.
1) What should I add to show only pages that are active?
2) For you experts, what would the code be to return a list of pages with empty (missing) metadata content in the database, or if it contains the default "".
I have already released something based on "last modified pages":
http://dev.cmsmadesimple.org/projects/lastcreatedpage. These features should help those who have not specified metadata when they should have.
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 11:17 pm
by replytomk3
For the benefit of others, the code that you can run as a UDT to find out the number of pages you have (including hidden and inactive) is:
Code: Select all
global $gCms;
$db = $gCms->db;
$query = "SELECT count(content_id) FROM ".cms_db_prefix()."content";
$dbresult = $db->Execute($query);
$row = $dbresult->FetchRow();
return($row['count(content_id)']);
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 11:33 pm
by Wishbone
replytomk3 wrote:
1) What should I add to show only pages that are active?
Code: Select all
$query = "SELECT count(content_id) FROM ".cms_db_prefix()."content WHERE active=1";
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 11:44 pm
by Wishbone
replytomk3 wrote:
2) For you experts, what would the code be to return a list of pages with empty (missing) metadata content in the database, or if it contains the default "".
Code: Select all
global $gCms;
$db = $gCms->db;
$query = "SELECT content_name FROM ".cms_db_prefix()."content WHERE metadata='' OR metadata LIKE '%Add code here%'";
$dbresult = $db->Execute($query);
while ($dbresult && $row = $dbresult->FetchRow()) {
echo("<p>$row['content_name']<p>\n");
}
Re: I saw somewhere how to find out the number of pages on the website
Posted: Tue Dec 14, 2010 11:48 pm
by Wishbone
We might even make it simpler by using a call or two from the ContentOperations class.
http://www.cmsmadesimple.org/apidoc/CMS ... tions.html
I'll look at it tonight when I have a bit more time.
Re: I saw somewhere how to find out the number of pages on the website
Posted: Wed Dec 15, 2010 2:49 am
by Wishbone
Here's a UDT (named 'page_info'), using API calls to get the same info, all at once.
Code: Select all
global $gCms;
$cntnt = $gCms->getContentOperations();
$results['page_count'] = 0;
foreach ($cntnt->GetAllContent() as $page) {
if ($page->mActive) {
$results['page_count']++;
}
if (!$page->mMetadata || preg_match('/Add code here/', $page->mMetadata)) {
$results['no_metadata'] .= $page->mName . ' ';
}
}
$smarty->assign($params['assign'], $results);
Here's how to use it in your template or page:
Code: Select all
{page_info assign='info'}
<p>Number of active pages: {$info.page_count}</p>
{if $info.no_metadata}
<p>The following pages are missing metadata: {$info.no_metadata}</p>
{else}
<p>All pages have metadata</p>
{/if}
Re: I saw somewhere how to find out the number of pages on the website
Posted: Wed Dec 15, 2010 3:24 am
by replytomk3
I'm waiting approval on two modules for the Forge. I'll post the code there as a plugin.
Re: I saw somewhere how to find out the number of pages on the website
Posted: Fri Dec 17, 2010 2:11 am
by replytomk3
You are doing all the work.
I have modified it to be on separate lines, and to not show inactive pages (those for me are pages in progress, I don't know about others. Anyways, if you cannot navigate to them, I don't care about metadata for those pages).
Code: Select all
global $gCms;
$cntnt = $gCms->getContentOperations();
$results['page_count'] = 0;
foreach ($cntnt->GetAllContent() as $page) {
if ($page->mActive) {
$results['page_count']++;
}
if (($page->mActive && !$page->mMetadata) || preg_match('/Add code here/', $page->mMetadata)) {
$results['no_metadata'] .= ' <p>' . $page->mName;
}
}
$smarty->assign($params['assign'], $results);
Re: I saw somewhere how to find out the number of pages on the website
Posted: Fri Dec 17, 2010 2:12 am
by replytomk3
How do I also ignore pages that are links?