Перейти к публикации

Рекомендованные сообщения

Здравствуйте! Когда-то давно писал статьи с неправильными заголовками в 1-2 слова, со временем исправил заголовки и убрал ЧПУ. Теперь понял, что хочу вернуть ЧПУ, но оно выводится по старым заголовкам, в 1-2 слова, что мне не выгодно. Вопрос: можно ли как-то массово обновить ЧПУ до того тайтла, который сейчас? Как вариант, в каждой статье переписывать ЧПУ URL статьи, но это слишком долго и кропотливо.

Спасибо за внимание.

Ссылка на сообщение
Поделиться на других сайтах
  • 3 года спустя...

Тоже интересует этот вопрос. Если кто-нибудь знает как это сделать, помогите пожалуйста.

Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Govora сказал:

Тоже интересует этот вопрос. Если кто-нибудь знает как это сделать, помогите пожалуйста.

Если не пишете на php, то для вас никак.

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, SKYNET74 сказал:

Если не пишете на php, то для вас никак.

Вот зачем такие ответы? Пишем на ПХП, элементарное пишем и я понимаю что можно скриптом брать заголовок записи, переводить его в транслит и переписывать записи БД где хранятся ЧПУ. Вопрос, есть ли готовое решение или что-либо встроенное в движок или какая-нибудь хитрость? Жду умного ответа от SKYNET74.

Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, Govora сказал:

Вопрос, есть ли готовое решение или что-либо встроенное в движок или какая-нибудь хитрость?

Встроенного в DLE по данному вопросу ничего нет. Также я не встречал каких либо готовых сторонних модулей по данному вопросу.

Ссылка на сообщение
Поделиться на других сайтах

ну а если прямым запросом в БД очистить нужные поля, а потом перестроение публикаций?
 

Ссылка на сообщение
Поделиться на других сайтах
Только что, alex32 сказал:

ну а если прямым запросом в БД очистить нужные поля, а потом перестроение публикаций?

Перестроение ничего не добавляет, оно парсит по новой тексты публикаций, делается только если менялись настройки скрипта, и если нужно чтобы эти изменения вступили в силу. Отутствующее ЧПУ поле оно не добавит. Поэтому собственно вам нужно модифицировать модуль перестроения, чтобы он заодно и перестраивал это поле.

Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, Govora сказал:

Тоже интересует этот вопрос. Если кто-нибудь знает как это сделать, помогите пожалуйста.

Создать файл test.php в корневой директории, вставить содержимое и перейти http://site.ru/test.php

<?php

function rus2translit($string) {
    $converter = array(
        'а' => 'a',   'б' => 'b',   'в' => 'v',
        'г' => 'g',   'д' => 'd',   'е' => 'e',
        'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
        'и' => 'i',   'й' => 'y',   'к' => 'k',
        'л' => 'l',   'м' => 'm',   'н' => 'n',
        'о' => 'o',   'п' => 'p',   'р' => 'r',
        'с' => 's',   'т' => 't',   'у' => 'u',
        'ф' => 'f',   'х' => 'h',   'ц' => 'c',
        'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
        'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
        'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
        
        'А' => 'A',   'Б' => 'B',   'В' => 'V',
        'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
        'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
        'И' => 'I',   'Й' => 'Y',   'К' => 'K',
        'Л' => 'L',   'М' => 'M',   'Н' => 'N',
        'О' => 'O',   'П' => 'P',   'Р' => 'R',
        'С' => 'S',   'Т' => 'T',   'У' => 'U',
        'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
        'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
        'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
        'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    );
    return strtr($string, $converter);
}
function str2url($str) {
    $str = rus2translit($str);
    $str = strtolower($str);
    $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
    $str = trim($str, "-");
    return $str;
}

include ('engine/api/api.class.php');

echo "<meta charset='".$config['charset']."'>";

$db->query("SELECT id, title, alt_name  FROM ".PREFIX."_post ORDER BY id ASC");
$num_rows = $db->num_rows();
if ($num_rows > 0){
	while ( $row = $db->get_array() ){
		$id = $row['id'];
		$alt_name = $row['alt_name'];
		$alt_name = str2url($alt_name);
		$result = $db->query("UPDATE ".PREFIX."_post SET alt_name='$alt_name' WHERE id=$id");
	}
	echo "Закончили. Принимай работу, насяльника!";
} else {
	echo "У вас нет новостей или что то пошло не так... :(";
}

?>

Как то так. Если не запустилось, поправите )

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Govora сказал:

Вот и готовое решение. Спасибо WEBAIR.

Собственно что вам мешало сделать его самостоятельно, если:

18 часов назад, Govora сказал:

Пишем на ПХП, элементарное пишем и я понимаю что можно скриптом брать заголовок записи, переводить его в транслит и переписывать записи БД где хранятся ЧПУ.

Как то глупо ваша тема тогда выглядит, умеем, пишем, знаем, но хотим что бы кто то сделал за нас и положил на блюдечке с белой каёмочкой...

PS: Конечно же в перестроение публикаций стоило бы ещё давно добавить чекбокс: Пересоздать ЧПУ новостей
А ещё чекбоксы:
Пересоздать уменьшенные копии изображений (о чём давно просили)
Удалить информацию о похожих новостях (а это что бы не не делать вручную чуть ниже, т.к. это нужно при удалении из самой таблицы давно неиспользуемых доп.полей, которые хранились в БД и поиск похожих материалов их учитывал)
и другое, что бы данная функция решала все вопросы по автоматическому перестраиванию, а не только парсила текстовые поля...

Ссылка на сообщение
Поделиться на других сайтах
В 01.04.2017 в 08:48, Govora сказал:

Вот и готовое решение. Спасибо WEBAIR.

Спасибо, что проверили и написали в личку. Вот исправил и проверил.

<?php

function rus2translit($string) {
    $converter = array(
        'а' => 'a',   'б' => 'b',   'в' => 'v',
        'г' => 'g',   'д' => 'd',   'е' => 'e',
        'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
        'и' => 'i',   'й' => 'y',   'к' => 'k',
        'л' => 'l',   'м' => 'm',   'н' => 'n',
        'о' => 'o',   'п' => 'p',   'р' => 'r',
        'с' => 's',   'т' => 't',   'у' => 'u',
        'ф' => 'f',   'х' => 'h',   'ц' => 'c',
        'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
        'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
        'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
        
        'А' => 'A',   'Б' => 'B',   'В' => 'V',
        'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
        'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
        'И' => 'I',   'Й' => 'Y',   'К' => 'K',
        'Л' => 'L',   'М' => 'M',   'Н' => 'N',
        'О' => 'O',   'П' => 'P',   'Р' => 'R',
        'С' => 'S',   'Т' => 'T',   'У' => 'U',
        'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
        'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
        'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
        'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    );
    return strtr($string, $converter);
}
function str2url($str) {
    $str = rus2translit($str);
    $str = strtolower($str);
    $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
    $str = trim($str, "-");
    return $str;
}

include ('engine/api/api.class.php');

echo "<meta charset='".$config['charset']."'>";

$result = $db->query("SELECT id, title  FROM ".PREFIX."_post ORDER BY id ASC");
$num_rows = $db->num_rows($result);

if ($num_rows > 0){
	while ( $row = $db->get_array($result) ){
		$id = $row['id'];
		$title = $row['title'];
		$alt_name = str2url($title);
		$db->query("UPDATE ".PREFIX."_post SET alt_name='$alt_name' WHERE id=$id");
	}
	echo "Закончили $num_rows URL. Принимай работу, насяльника!";
} else {
	echo "У вас нет новостей или что то пошло не так... :(";
}

$db->free();

?>

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...