Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Как в CMS Made Simple сделать автоматический sitemap для новостей

Практика




Как в CMS Made Simple сделать автоматический sitemap для новостей
Я установила модули
CGExtensions
и
SiteMapMadeSimple

но он генерирует карту сайта только для страниц и меню сайта но мне нужно для всех опубликованых статей карта сайта

в файле добавьте функию

function GetAllNewsUrl()
{
$gCms = cmsms();
$results = $res = $params = array();
$detailpage = 23;

$db = $this->GetDb();
$query = "SELECT news_title,news_url,news_id,modified_date FROM " .
cms_db_prefix() . "module_news WHERE status = 'published'";

$result = $db->Execute($query);

while ($result && !$result->EOF)
{


$aliased_title = munge_string_to_url($result->fields['news_title']);
$prettyurl = 'news/' . $result->fields['news_id'] . '/' . $detailpage . "/$aliased_title" .
$detailtemplate;


$res['prettyurl'] = $prettyurl;
$res['id'] = $result->fields['news_id'];
$res['time'] = $result->fields['modified_date'];

$parms = array();
$parms['articleid'] = $result->fields['news_id'];

$res['url'] = $this->CreateLink('cntnt01', 'detail', $detailpage, '', $parms, '', true, false,
'', true, $prettyurl);
$results[] = $res;


$result->MoveNext();
}


return $results;
}



и внутри функции

function GenerateSiteMap(&$params)
{



после
$output[] = $obj;
}


добавьте цикл

$news = $this->GetAllNewsUrl();

foreach ($news as $onecontent)
{


$obj = new StdClass();

$priority = 0.7;

$obj->priority = number_format($priority, 1, '.', '');
$obj->encoded_url = cms_htmlentities($onecontent['url']);
$obj->cachable = false;
$obj->child_count = 0;
$obj->hierarchy = '';
$obj->date = trim($db->DbTimeStamp($onecontent['time']), "'");
$obj->url = $onecontent['url'];
$obj->id = $onecontent['id'];
$obj->type = 'news';

$obj->frequency = $this->GetPreference('change_frequency', 'auto');
if ($obj->frequency == 'auto')
{
$obj->frequency = 'hourly';
if ($mdate < $onedayago)
$obj->frequency = 'daily';
if ($mdate < $oneweekago)
$obj->frequency = 'weekly';
if ($mdate < $onemonthago)
$obj->frequency = 'monthly';
if ($mdate < $oneyearago)
$obj->frequency = 'yearly';
}


$output[] = $obj;
}
создано: 2016-08-24
обновлено: 2021-03-13
341



Рейтиг 10 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)