И вопрос два. Можно ли как-то узнать повторяются ли псевдонимы на сайте?Если запрос
"SELECT COUNT(alias) FROM `modx_site_content` WHERE alias<>''"
"SELECT COUNT(DISTINCT alias) FROM `modx_site_content` WHERE alias<>''"
Раньше бы полез в сам плагин и правил код, но в modx можно сделать плагин самому:
Добрый день! Подскажите, как можно сделать так, чтобы при генерации русского псевдонима к странице, вначале добавлялся ID страницы, в формате id-transalias, например 1234-stranica-takaja-to.
$e =& $modx->event;
switch ($e->name) {
case 'OnBeforeDocFormSave':
global $alias;
$alias=$_POST['id'].'-'.$alias;
break ;
default:
return ;
}
Quote from: Kollad at Aug 02, 2010, 04:00 AMРаньше бы полез в сам плагин и правил код, но в modx можно сделать плагин самому:
Добрый день! Подскажите, как можно сделать так, чтобы при генерации русского псевдонима к странице, вначале добавлялся ID страницы, в формате id-transalias, например 1234-stranica-takaja-to.
$e =& $modx->event; switch ($e->name) { case 'OnBeforeDocFormSave': global $alias; $alias=$_POST['id'].'-'.$alias; break ; default: return ; }
И отметить галочку в событии ’OnBeforeDocFormSave’.
Должно работать!
$e =& $modx->event;
switch ($e->name) {
case 'OnBeforeDocFormSave':
global $alias;
$alias=$_POST['id'].'-'.$alias;
break ;
default:
return ;
$resource->save();
}
Нет не подойдёт
Что скажете?
$e =& $modx->event;
switch ($e->name) {
case 'OnBeforeDocFormSave':
global $alias;
$alias=$_POST['id'].'-'.$alias;
break ;
default:
return ;
}
$e =& $modx->event;
switch ($e->name) {
case 'OnBeforeDocFormSave':
global $alias;
// Если создаем новый документ, POST['id'] - будет пустым
if (!isset($_POST['id']) || ($_POST['id'] == '')) {
$table = $modx->getFullTableName('site_content'); // таблица документов
$res = $modx->db->select("MAX(id)", $table); // запрос на получение последнего ID документа
$id = $modx->db->getValue($res) + 1; // Добавляем +1 к этой цифре, и получаем ID текущего документа
} else { // Если редактируем существующий, MODx передает его ID через POST
$id = $_POST['id'];
}
$alias = $id . '-' . $alias;
break ;
default:
return ;
}
Quote from: Kollad at Aug 02, 2010, 04:00 AMРаньше бы полез в сам плагин и правил код, но в modx можно сделать плагин самому:
Добрый день! Подскажите, как можно сделать так, чтобы при генерации русского псевдонима к странице, вначале добавлялся ID страницы, в формате id-transalias, например 1234-stranica-takaja-to.
$e =& $modx->event; switch ($e->name) { case 'OnBeforeDocFormSave': global $alias; $alias=$_POST['id'].'-'.$alias; break ; default: return ; }
И отметить галочку в событии ’OnBeforeDocFormSave’.
Должно работать!
)Во-первых максимальный ID+1 далеко не всегда является тем, что будет использован, строки могли быть ранее удалены и их ID в этом случае не учитывается, а при добавлении учитывается. Правильнее сделать примерно так:
В таком случае спасает
$result = $modx->db->query( "SHOW TABLE STATUS LIKE '".$modx->db->config['table_prefix']."site_content'"); $info=$modx->db->getRow ($result); $currentIncrement = $info['Auto_increment'];