Автонумерация алиасов
Этот плагин генерируют алиасов
site.ru/news/1/
site.ru/news/2/
site.ru/news/1/
site.ru/news/2/
Включите Дружественные URL и Автоматически генирировать псевдонимСоздайте новый плагин событиям OnDocFormSave
<?php
if ($modx->event->name == 'OnDocFormSave') {
// Категории
if (in_array($resource->parent, array(1,2,3,4))) {
$i = 1;
$where = array('parent' => $resource->parent, 'alias' => $i, 'id:!=' => $resource->id);
if ($modx->getCount('modResource', $where) > 0)
{
while ($modx->getCount('modResource', $where) > 0)
{
$i++;
$where['alias'] = $i;
}
}
// Устанавливаем алиас
$resource->set('alias', $i);
$resource->save();
// Удаляем из URI суффикс .html
$uri = preg_replace('@\.html$@', '', $resource->uri);
// Устанавливаем URI. Пример /catalog/1
$resource->set('uri', $uri);
$resource->set('uri_override', 1);
$resource->save();
}
}
Автор плагина: Брежнев Иван (vanchelo) Комментарии: 8
Да)) Было дело)
Зачем вручную убирать .html, если это лучше сделать через «типы содержимого»?
Иначе на сайте будут страницы и с .html и без — это как-то неправильно.
Иначе на сайте будут страницы и с .html и без — это как-то неправильно.
А я не знаю, человек попросил чтобы у него так были новости, без .html
Мне кажется, если уж предлагать, то что-то универсальное или хотя бы с инструкциями. А этот плагин сделан под конкретный сайт. Это я к чему. Опытный модиксовец сам может такой за 2 минуты сделать, а новичок типа меня просто воткнет и будет голову ломать, чего он то работает, то нет.
И, кстати, зачем бегать в цикле, если можно одним запросом найти максимальное число.
Вопрос. А если первую новость из 100 удалят, то новая новость будет с алиасом = 1?
И, кстати, зачем бегать в цикле, если можно одним запросом найти максимальное число.
Вопрос. А если первую новость из 100 удалят, то новая новость будет с алиасом = 1?
Судя по коду, да, если удалять новость с алиасом 1, то новая будет с алиасом 1
Да, вы прав, лучше переделать на получение максимального алиаса))
<?php
if ($modx->event->name == 'OnDocFormSave') {
if ($resource->parent == 4) {
$where = array('parent' => 4, 'id:!=' => $resource->id);
$q = $modx->newQuery('modResource')->select('max(alias) as alias')->where($where);
if (!$q->prepare() or !$q->stmt->execute() or !$r = $q->stmt->fetch(PDO::FETCH_OBJ)) return;
$resource->set('alias', intval($r->alias) + 1);
$resource->save();
$uri = preg_replace('@\.html$@', '', $resource->uri);
$resource->set('uri', $uri);
$resource->set('uri_override', 1);
$resource->save();
}
}
Исправил момент указанный Сергеем Шлоковым )) Спасибо тебе
Мы с тобой одной крови. :))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.