Конвертер тегов, ключевых слов, описания, символьного кода, метатегов и ЧПУ на DLE153

Посмотрел после конвертации на кишки таблицы, а вся эта беда пустая - теги, ключевые
  1. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2178

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3400

    Был: 2024-04-08 16:00

    Лайков: 196

    44 Посмотрел после конвертации на кишки таблицы, а вся эта беда пустая - теги, ключевые слова, описания, символьный код, метатеги и ЧПУ.
    Блин, я совсем забыл за них dash_mini



    Сразу подумалось - вручную пропахать статьи, но посмотрел на их количество и пыл мой спал order
    Прикинул что к чему и соорудил конвертер, с помощью его за несколько секунд все устанавливалось, и еще пять минут и перенесено с помощью Sypex Dumper на сайт swans



    Итак сам конвертер


     <?php
      
    echo "<head> <style>
    body {max-width:1224px; margin:auto;border:1px solid green; border-radius:10px;} 
    .column {padding: 10px;}
    .head{text-align:center; background-color: blue; color:white; border-radius:10px 10px 0 0; height: 65px;}
    .bottom{text-align:center; background-color: blue; color:white; border-radius:0 0 10px 10px; height: 65px;}
    .bott{color:red;}
    </style></head>
    <body>
    <div class ='head'>Конвертер тегов, ключевых слов, описания, символьного кода, метатегов и ЧПУ на DLE153<br><br></div>
     <div class ='bott'>сделано для сайта <a href=\"https://wylek.ru\">WYLEK.ru</a><br></div>
    
    <div class='column'>
    <img src='./img/gear.gif'>";
    //--------------------------
    
      $dblocation = "localhost";//сервер базы данных
      $dbvb = "dle132";//имя базы dle
      $dbuser = "1234";//имя пользователя
      $dbpasswd = "1234";//пароль от базы данных
       
      $prefix = "dle";//префикс таблиц dle
    //--------------------------
    
      $dbcnx = mysqli_connect($dblocation,$dbuser,$dbpasswd);
      if(!$dbcnx)
      {
      exit("Сервер базы данных $dbvb сейчас недоступен. Повторите попытку позже.");
      }
      $db_select = mysqli_select_db($dbcnx, $dbvb);
      if(!$db_select)
      {
      exit("База данных $dbvb недоступна. Обратитесь к администратору для решения проблемы.");
      }
    echo ('<br>'); 
    echo "Соединение с базой $dbvb установлено!" . PHP_EOL;
    echo ('<br>');
    echo "Информация о сервере: " . mysqli_get_host_info($dbcnx) . PHP_EOL;
    echo ('<br>*******************************************<br>');
    
    
    
    echo'<font color=red>Перенос данных с Light-Portal на DLE</font><br><br>';
    	echo' <a href=?step1>1. Тэги</a>--> <a href=?step2>2. Ключевые слова</a><br><br>';
    	
    //теги----------------------------------------------------------------------------------
    if(isset($_GET['step1'])) 
    {
    //очистка
    $query = "TRUNCATE TABLE {$prefix}_tags";
    $result = mysqli_query($dbcnx, $query);
    if(!$result) { echo ("<br><font color=red>mysql вернула ошибку <br><textarea style='width: 300px; height: 200px'>".mysqli_error($dbcnx)."</textarea><br> в коде <br><textarea style='width: 300px; height: 200px'>{$query}</textarea><br></font>");} else echo "<br>Таблица {$prefix}_tags успешно очищена<br>";
    //очистка	
    	$i = 0;
    mysqli_set_charset($dbcnx, "utf8");
    
    //создаем столбцы
    $sql = mysqli_query($dbcnx, "ALTER TABLE {$prefix}_post ADD COLUMN subject2 TEXT AFTER title");
    $sql = mysqli_query($dbcnx, "ALTER TABLE {$prefix}_tags ADD COLUMN tag2 TEXT AFTER tag");
    $sql = mysqli_query($dbcnx, "ALTER TABLE {$prefix}_tags ADD COLUMN tag3 TEXT AFTER tag2");
    
    //переносим данные из столбца title в subject2
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post SET subject2 = title");
    
    //удаляем ненужные символы, слова и пробелы в заголовках
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post SET subject2 = REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(subject2, \"0\", \" \"), \"1\", \" \"), \"2\", \" \"), \"3\", \" \"), \"4\", \" \"), \"5\", \" \"), \"6\", \" \"), \"7\",\" \"), \"8\", \" \"), \"9\", \" \"), \"/\", \" \"), \"“\", \" \"), \"”\", \" \"), \",\", \" \"), \"–\", \" \"), \":\", \" \"), \".\", \" \"), \"?\", \" \"), \"`\", \" \"), \"-\", \" \"), \"*\", \" \"), \"_\", \" \"), \"+\",\" \"), \"(\", \" \"), \")\", \" \"), \"[\", \" \"), \"]\", \"\"), \"для\", \" \"), \"&amp;\", \"\"), \"&\", \" \"), \"     \", \" \"), \"    \", \" \"), \"   \", \" \"), \"  \", \" \") ");
    
     //вытягиваем данные из таблицы dle_post			
    $post = mysqli_query($dbcnx, "SELECT * FROM {$prefix}_post");	
    		while ($news = mysqli_fetch_array($post)) {
    			$aid=$news['subject2'];
    			$sid=$news['subject2'];			
    			$mid=$news['subject2'];
    			$id=$news['id'];
    			$short_story=$news['subject2'];
    
    			$i++;	
    			
    //теги на главную страницу			
    $x = $short_story;
    if (!function_exists('tagsInTitleShort')) {			
    function tagsInTitleShort( $x ) {
       $vTiSh = trim( str_replace( $aid, " ", $x ) );
        $tTExpA = array_unique ( explode( " ", $vTiSh ) );
        shuffle($tTExpA);
    
        $iT = "";
        while (list(, $tTExpAx) = each($tTExpA)) {
            if ( preg_match( "/[a-zA-Zа-яА-Я0-9]{4}/", $tTExpAx ) ) $iT .= " " . $tTExpAx;
        }
        $tTExpB = explode( " ", trim( $iT ) );
    
        $mT = count( $tTExpB );
        if ( $mT > 5 ) $mT = 5;//кол-во слов
    
        $mTD = $mT - 1;
        $resultTag = "";
        for ( $i = 0; $i < $mT; $i++ ) {
            if ( $mTD != $i ) $resultTag .= $tTExpB[$i] . ",";
            else  $resultTag .= $tTExpB[$i];
        }
    
        return $resultTag;
    
    }}
    $result = tagsInTitleShort($x);	
    
    //теги в облако---------------------------------------------------------			
    //удаляем любые отдельные буквы				
    $aid = trim(preg_replace('@(^|\pZ)\pL\pM*(?=\pZ|$)@u', '', $aid));
    $sid = trim(preg_replace('@(^|\pZ)\pL\pM*(?=\pZ|$)@u', '', $sid));
    $mid = trim(preg_replace('@(^|\pZ)\pL\pM*(?=\pZ|$)@u', '', $mid));
    
    //удаляем двойные кавычки
    $aid = preg_replace('#\"#', '', $aid);
    $sid = preg_replace('#\"#', '', $sid);
    $mid = preg_replace('#\"#', '', $mid);
    
    // попытка создать теги - 3
    $aid = preg_replace('#(^.+?)\s(.+?)\s(.+?)\s(.+$)#', '\\1', $aid);
    $sid = preg_replace('#(^.+?)\s(.+?)\s(.+?)\s(.+$)#', '\\2', $sid);
    $mid = preg_replace('#(^.+?)\s(.+?)\s(.+?)\s(.+$)#', '\\3', $mid);
    
    // попытка создать теги - 2
    $aid = preg_replace('#(^.+?)\s(.+?)\s(.+$)#', '\\1', $aid);
    $sid = preg_replace('#(^.+?)\s(.+?)\s(.+$)#', '\\3', $sid);
    $mid = preg_replace('#(^.+?)\s(.+?)\s(.+$)#', '\\2', $mid);
    
    // попытка создать теги - 1
    $aid = preg_replace('#(^.+?)\s(.+$)#', '\\1', $aid);
    $sid = preg_replace('#(^.+?)\s(.+$)#', '\\2', $sid);
    $mid = preg_replace('#(^.+?)\s(.+$)#', '\\2', $mid);
    
    
    $query = "INSERT IGNORE INTO {$prefix}_tags (`news_id`, `tag`, `tag2`, `tag3`) VALUES
    ('$id', '$aid', 'NULL', '$result'),
    ('$id', '$sid', 'NULL', ''),
    ('$id', '$mid', '$result', '');";
    
         if (mysqli_query($dbcnx, $query)) {	     
    	      echo "";
    	} else {
    
    	      echo "<br><br>Error: " . $query . "<br><br>" . mysqli_error($dbcnx);
    	 }
    }
    //переносим теги в статьи
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post, {$prefix}_tags 
    ". "SET {$prefix}_post.tags = {$prefix}_tags.tag3
    ". "where {$prefix}_post.id = {$prefix}_tags.news_id and {$prefix}_tags.tag3 is not NULL");
    
    //удаляем дубли строк
    	$sql = mysqli_query($dbcnx, "delete a from {$prefix}_tags a left join( select max(id) myindex, news_id, tag 
        from {$prefix}_tags group by news_id, tag) b on a.id = b.myindex and a.news_id = b.news_id and a.tag = b.tag 
    	where b.myindex IS NULL; ");
    	
    //удаляем отработанные столбцы
    $sql = mysqli_query($dbcnx, "alter table {$prefix}_post drop column subject2");
    $sql = mysqli_query($dbcnx, "alter table {$prefix}_tags drop column tag2");
    $sql = mysqli_query($dbcnx, "alter table {$prefix}_tags drop column tag3");
    
    mysqli_close($dbcnx);
    echo "<br><br><span style='color: green;'>Теги вставлены</span><br>";
    echo "<br><span style='color: green;'>Всего для статей: $i</span><br>";
    echo "<br><div style='text-align:center;'><a href='/convert_dle153/dle.php'><button>Продолжить</button></a></div></div><div class ='bottom'></body></div>";
    }
    
    //ключевые слова----------------------------------------------------------------------------------
    if(isset($_GET['step2'])) 
    {
    	
    //создаем таблицу
    $sql = mysqli_query($dbcnx, "CREATE TABLE {$prefix}_post1 LIKE {$prefix}_post");
    $sql = mysqli_query($dbcnx, "INSERT INTO {$prefix}_post1 SELECT * FROM {$prefix}_post");
    	
    	$i = 0;
    mysqli_set_charset($dbcnx, "utf8");
    
    
     //вытягиваем данные из таблицы dle_post1			
    $post = mysqli_query($dbcnx, "SELECT * FROM {$prefix}_post1");	
    		while ($news = mysqli_fetch_array($post)) {
                $title=$news['title'];
    			$date=$news['date'];
    			$short_story=$news['short_story'];
    		    $id=$news['id'];
    			
             $i++;	
    	
    	
    //Метатег Keywords			
    $x = $short_story;
    if (!function_exists('tagsInTitleShort')) {			
    function tagsInTitleShort( $x ) {
        $quotesT = array ("\x22", "\x60", "\t", "\n", "\r", ",", ".", "/", "¬", "#", ";", ":", "@", "~", "{", "}", "[", "]",  "{", "}", "=", "-", "+", ")", "(", "*", "^", "%", "$", "<", ">", "?", "!", '"');
    	
    	$x = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "", $x );
        $x = preg_replace( "'\[attachment=(.*?)\]'si", "", $x );
        $x = preg_replace( "'\[page=(.*?)\](.*?)\[/page\]'si", "", $x );
        $x = preg_replace( "'\[url=(.*?)\](.*?)\[/url\]'si", "", $x );
        $x = str_replace( "{ PAGEBREAK }", "", $x );
        $x = str_replace( "&nbsp;", " ", $x );
        $x = str_replace( '<br />', ' ', $x );
        $x = strip_tags( $x );
        $x = preg_replace( "#&(.+?);#", "", $x );
    	
        $vTiSh = trim( str_replace( $quotesT, " ", $x ) );
        $tTExpA = array_unique ( explode( " ", $vTiSh ) );
        shuffle($tTExpA);
    
        $iT = "";
        while (list(, $tTExpAx) = each($tTExpA)) {
            if ( preg_match( "/[a-zA-Zа-яА-Я0-9]{4}/", $tTExpAx ) ) $iT .= " " . $tTExpAx;
        }
        $tTExpB = explode( " ", trim( $iT ) );
    
        $mT = count( $tTExpB );
        if ( $mT > 25 ) $mT = 25;//кол-во слов
    
        $mTD = $mT - 1;
        $resultTag = "";
        for ( $i = 0; $i < $mT; $i++ ) {
            if ( $mTD != $i ) $resultTag .= $tTExpB[$i] . ",";
            else  $resultTag .= $tTExpB[$i];
        }
    
        return $resultTag;
    
    }
     }
    
    $keywords = tagsInTitleShort($x);	// в поле keywords ниже  вставить $keywords
    
    
    
    //==================================================================================
    //создание и транслитерация для ЧПУ
    $trtext = $title;
    
      $trtext = (string) $trtext; // преобразуем в строковое значение
      $trtext = strip_tags($trtext); // убираем HTML-теги
      $trtext = str_replace(array("\n", "\r"), " ", $trtext); // убираем перевод каретки
      $trtext = trim($trtext); // убираем пробелы в начале и конце строки
      $trtext = function_exists('mb_strtolower') ? mb_strtolower($trtext, 'UTF-8') : strtolower($trtext, 'UTF-8'); // переводим строку в нижний регистр
      $trtext = strtr($trtext, array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'e','ж'=>'j','з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shch','ы'=>'y','э'=>'e','ю'=>'yu','я'=>'ya','ъ'=>'','ь'=>''));
      $trtext = preg_replace("/[^0-9a-z-_ ]/i", "", $trtext); // очищаем строку от недопустимых символов
      $trtext = preg_replace("/\s+/", " ", $trtext); // удаляем повторяющие пробелы
      $trtext = preg_replace("/\//", "-", $trtext); // заменяем "/" на "-"
      $trtext = str_replace(" ", "-", $trtext); // заменяем пробелы на "-"
    
      $alt_name = $trtext;// в поле alt_name ниже  вставить $alt_name
    //=============================================================================	
    
    //Метатег Description
    $intro = $short_story;
    $intro = strip_tags($intro); // убираем HTML-теги
    $array = explode(" ",$intro); // перерабатываем строку в массив
    $array = array_slice($array,0,25,strip_tags($intro)); // выбираем первые 25 слов
    $descr = implode(" ",$array); // массив снова перерабатываем в строку	
    $descr .= ' ';// в поле descr ниже  вставить $descr
    //=======================================================================================	
    
    //Символьный код
    $sym = $title;
    //$sym = strtr($sym, array('А'=>'A','Б'=>'B','В'=>'V','Г'=>'G','Д'=>'D','Е'=>'E','Ё'=>'E','Ж'=>'J','З'=>'Z','И'=>'I','Й'=>'Y','К'=>'K','Л'=>'L','М'=>'M','Н'=>'N','О'=>'O','П'=>'P','Р'=>'R','С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F','Х'=>'H','Ц'=>'C','Ч'=>'C','Ш'=>'H','Щ'=>'S','Ы'=>'Y','Э'=>'E','Ю'=>'U','Я'=>'A','Ъ'=>'','Ь'=>''));
    $result = mb_substr($sym, 0, 1); // Начиная с 0 берем 1 символ
    $symbol = $result; // в поле symbol ниже  вставить $symbol 
    
    // дата из 2023-01-28 10:33:07 на 28 января 2023, 10:33================================================================================
    $mysqldate = $date; 
    $time = strtotime($mysqldate);      
    $month_name = array( 1 => 'января', 2 => 'февраля', 3 => 'марта', 
    		4 => 'апреля', 5 => 'мая', 6 => 'июня', 
    		7 => 'июля', 8 => 'августа', 9 => 'сентября', 
    		10 => 'октября', 11 => 'ноября', 12 => 'декабря' );
    
    $month = $month_name[ date( 'n',$time ) ]; 
    $day   = date( 'j',$time );
    $year  = date( 'Y',$time );
    $hour  = date( 'G',$time );
    $min   = date( 'i',$time );
    		
    $dat_e = "$day $month $year, $hour:$min";
    //===================================================================================
    
    //переносим в dle_post
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post SET descr='".$descr."' WHERE id='".$id."'");
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post SET symbol='".$symbol."' WHERE id='".$id."'");
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post SET alt_name='".$alt_name."' WHERE id='".$id."'");
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post SET keywords='".$keywords."' WHERE id='".$id."'");
    $sql = mysqli_query($dbcnx, "UPDATE {$prefix}_post SET metatitle='$title - $dat_e' WHERE id='".$id."'");
    
    
    
    //UPDATE dle_post, dle_post1 SET dle_post.descr = dle_post1.descr, dle_post.symbol = dle_post1.symbol, dle_post.alt_name = dle_post1.alt_name, dle_post.keywords = dle_post1.keywords,dle_post.metatitle = dle_post1.metatitle where dle_post.id = dle_post1.id;
    
    }
    //удаляем таблицу
    $sql = mysqli_query($dbcnx, "DROP TABLE {$prefix}_post1");
    
    
    mysqli_close($dbcnx);
    echo "<br><br><span style='color: green;'>Ключевые слова, описания, символьный код, метатеги и ЧПУ вставлены</span><br>";
    echo "<br><span style='color: green;'>Всего для статей: $i</span><br>";
    echo "<br><div style='text-align:center;'><a href='/convert_dle153/dle.php'><button>Продолжить</button></a></div></div><div class ='bottom'></body></div>";
    }	
    	
    	
      ?>


    Создать текстовый файл и переименовать в dle.php
    Запускать - у меня адрес https://dle132/convert_dle153/dle.php

    30 января 2023 - 10:33 / #1

Статистика форума, пользователей онлайн: 1 (за последние 20 минут)

Создано тем
1177
Всего сообщений
15332
Пользователей
17849
Новый участник
volk