Как обновить все url
Раньше на сайте не использовалось чпу. После включения, все url отображаются на русском. Также в типах содержимого удалил .html, но url все равно такие /reebok-дерзкий-бренд.html
Если ресурс обновить, то все нормально становится.
Ресурсов на сайте несколько тысяч, в ручную не вариант.
Пробовал так community.modx-cms.ru/blog/tips_and_tricks/10322.html — ничего не вышло.
Собственно, как обновить все url? Может сниппет есть какой?
Если ресурс обновить, то все нормально становится.
Ресурсов на сайте несколько тысяч, в ручную не вариант.
Пробовал так community.modx-cms.ru/blog/tips_and_tricks/10322.html — ничего не вышло.
Собственно, как обновить все url? Может сниппет есть какой?
Комментарии: 8
недавно пришлось обновлять url, ресурсов было что то около 6тыщ. Я сделал просто — скачал customUrls.
и запустил из под консоли $customUrls->generateCustomUrl();
возможно можно как то иначе обновить, но этот способ точно рабочий.
и запустил из под консоли $customUrls->generateCustomUrl();
возможно можно как то иначе обновить, но этот способ точно рабочий.
Можно подробнее?
<?php
define('MODX_API_MODE', true);
require dirname(dirname(__FILE__)) . '/index.php';
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
// Load CustomUrls service
$corePath = $modx->getOption('customurls.core_path',null,$modx->getOption('core_path').'components/customurls/');
$customUrls = $modx->getService('customurls','CustomUrls',$corePath.'model/customurls/');
if (!($customUrls instanceof CustomUrls)) return '';
// parent
$parent = 0;
$pids = array_merge(array($parent), $modx->getChildIds($parent));
$ids = array();
$q = $modx->newQuery('msProduct');
$q->where(array('class_key' => 'msProduct','parent:IN' => $pids,'published' => 1,'deleted' => 0));
$q->select('`msProduct`.`id`');
if ($q->prepare() && $q->stmt->execute()) {
$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
}
$resourceIds = $ids;
foreach($resourceIds as $resourceId)
{
// Select resource
$resource = $modx->getObject('modResource', array('id' => $resourceId));
if(is_object($resource))
{
// Select the proper URL pattern of the current resource
$customUrl = $customUrls->getCustomUrl($resource);
// Generate resource URL
if(!empty($customUrl))
{
//print_r(' генерируем - ' . $resourceId);
$customUrl->set('override', true);
$customUrls->generateCustomUrl($resource, $customUrl);
}
}
}
return $modx->error->success();
Запускаю этот код в console, но ничего не происходит.
а… пардон забыл еще. там проверка есть…
в
core/components/customurls/model/customurls/customurls.class.php
60 строка$c->innerJoin('modUserGroupMember', 'modUserGroupMember', '`member` = '.$this->modx->user->get('id').' AND (usergroup = 0 OR usergroup IS NULL OR usergroup = user_group)');
замени на $c->innerJoin('modUserGroupMember', 'modUserGroupMember', '`member` = 1 AND (usergroup = 0 OR usergroup IS NULL OR usergroup = user_group)');
Заменил строки. Но опять ничего не происходит в консоли(
ну значит не судьба
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.