Все для DataLife Engine / DLE хаки / Хак для DLE / DLE Допустимые символы буквенного каталога новостей

DLE Допустимые символы буквенного каталога новостей


Представляем на сайте dle9.com установка хак dle добавления Допустимых символов буквенного каталога новостей в скрипт движка DataLife Engine. Данной установкой можно добавить пункт в движок, тем самым установить скрипт автоматического создание «символьного кода» для всех публикаций на сайте, у которых его нет. Также будет возможно принудительное создание, оно перезапишет существующие значения.

Добавление буквенного каталога, главным образом служит для объединения группы новостей в каталоги, например, если установить группе новостей один символьный код «A», то эта группа новостей будет доступна по адресу: http://site ru/catalog/A/ . То есть, после перестроения мы получим «Алфавитный указатель» , предназначенный для автоматического поиска новостей, заголовок которых начинается на определённую букву (символ) или цифру. Из категории Хаки DLE Допустимые символы буквенного каталога публикаций, в результате позволяет осуществлять навигацию очень удобно как для посетителей сайта, так и для администрации.


Установка: Хак для DLE Допустимые символов буквенного каталога новостей

1. В файле engine/ajax/rebuild.php найти:
    echo $buffer;

} else {


заменить на:
    echo $buffer;

} elseif ($_POST['area'] == "cat_rebuild" ) {
    
    $result = $db->query("SELECT id, title, symbol FROM " . PREFIX . "_post LIMIT ".$startfrom.", ".$count_per_step);
    
    while($row = $db->get_row($result))
    {
        $catalog_url = $row['symbol'];
        
        if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $row['title'] ) ) ) ) ) ), 0, 1, $config['charset'] ) );

        $db->query( "UPDATE " . PREFIX . "_post SET symbol='{$catalog_url}' WHERE id='{$row['id']}'" );
    
        $step++;
    }

    clear_cache();
    $rebuildcount = $startfrom + $step;
    $buffer = "{\"status\": \"ok\",\"rebuildcount\": {$rebuildcount}}";
    echo $buffer;

} elseif ($_POST['area'] == "rewrite_catalog" ) {
    
    $result = $db->query("SELECT id, title FROM " . PREFIX . "_post LIMIT ".$startfrom.", ".$count_per_step);
    
    while($row = $db->get_row($result))
    {
        if ($config['create_catalog']) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $row['title'] ) ) ) ) ) ), 0, 1, $config['charset'] ) );

        $db->query( "UPDATE " . PREFIX . "_post SET symbol='{$catalog_url}' WHERE id='{$row['id']}'" );
    
        $step++;
    }

    clear_cache();
    $rebuildcount = $startfrom + $step;
    $buffer = "{\"status\": \"ok\",\"rebuildcount\": {$rebuildcount}}";
    echo $buffer;

} else {


2. В файле engine/inc/addnews.php найти:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ), 0, 1, $config['charset'] ) );

заменить на:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $title ) ) ) ) ) ), 0, 1, $config['charset'] ) );


3. В файле engine/inc/editnews.php найти:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ), 0, 1, $config['charset'] ) );

заменить на:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $title ) ) ) ) ) ), 0, 1, $config['charset'] ) );


4. В файле engine/inc/options.php найти:
    showRow( $lang['opt_sys_acat'], $lang['opt_sys_acatd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[create_catalog]", "{$config['create_catalog']}" ) );


заменить на:
    showRow( $lang['opt_sys_acat'], $lang['opt_sys_acatd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[create_catalog]", "{$config['create_catalog']}" ) );
    showRow( "Допустимые символы буквенного каталога публикаций", "Скрипт добавит только разрешённую букву из заголовка вашей новости, например, в данном случае: <font color=\"darkgreen\"><b>a-zа-я0-9</b></font> - будет добавлен первый символ латиницы, кириллицы или цифра. <font color=\"red\">«</font>Кавычки<font color=\"red\">»</font>, <font color=\"red\">(</font>скобки<font color=\"red\">)</font> и <font color=\"red\">[</font>другие неразрешённые символы<font color=\"red\">]</font> будут отфильтрованы!", "<input class=\"edit bk\" type=text style=\"text-align: center;\"  name=\"save_con[valid_catalog_symbols]\" value=\"{$config['valid_catalog_symbols']}\" size=40>" );


5. В файле engine/inc/rebuild.php найти:
HTML;

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_static WHERE allow_br !='2'" );


заменить на:
HTML;


if ($config['create_catalog']) {
    $submit = ("<input type=\"submit\" id=\"cat_button\" class=\"btn btn-primary\" value=\"{$lang['rebuild_start']}\" style=\"width:190px;\" /><input type=\"hidden\" id=\"cat_rebuild_ok\" name=\"cat_rebuild_ok\" value=\"0\" />");
} else {
    $submit = ("<a class=\"btn btn-primary\" style=\"color:#FFFFFF;font-size:11px;line-height:15px;\" title=\"Настройки параметров скрипта\" target=\"_blank\" href=\"$PHP_SELF?mod=options&action=syscon\">Настройки параметров скрипта</a> Включите <b>автоматическое формирование буквенного каталога публикаций</b> на вкладке вывода новостей");
}
echo <<<HTML
<form action="" method="post">
<div style="padding-top:5px;padding-bottom:2px;">
<table width="100%">
    <tr>
        <td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0" /></td>
        <td style="background-image: url(/engine/skins/images/tl_oo.gif)"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0" /></td>
        <td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0" /></td>
    </tr>
    <tr>
        <td style="background-image: url(/engine/skins/images/tl_lb.gif)"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0" /></td>
        <td style="padding:5px;" bgcolor="#FFFFFF">
<table width="100%">
    <tr>
        <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">Автоматическое создание буквенного каталога</div></td>
    </tr>
</table>
<div class="unterline"></div>
<table width="100%">
    <tr>
        <td style="padding:2px;" colspan="2">Данная утилита выполнит автоматическое создание <b>символьного кода</b> для всех новостей на сайте, у которых его нет. Возможно принудительное создание, оно перезапишет существующие значения. Создание буквенного каталога предназначено для объединения группы новостей в каталоги, к примеру, если задать группе новостей один символьный код <b>A</b>, то эта группа новостей будет доступна по адресу: <a title="{$config['http_home_url']}catalog/A/" target="_blank" href="{$config['http_home_url']}catalog/A/" class="copyright"><b>{$config['http_home_url']}catalog/A/</b></a>. То есть, после перестроения мы получим <b>«Алфавитный указатель»</b>, предназначенный для автоматического поиска новостей, заголовок которых начинается на определённую букву (символ) или цифру. Такой способ навигации очень удобен как для посетителей сайта, так и для администрации. <br />Допустимые символы буквенного каталога публикаций вводятся <a title="Настройка допустимых символов буквенного каталога" target="_blank" href="$PHP_SELF?mod=options&action=syscon" class="copyright">в настройках параметров скрипта</a>, во вкладке настройки вывода новостей, текущее значение: <font color="darkgreen"><b>{$config['valid_catalog_symbols']}</b></font>. <br />Перезаписать существующие значения <b>символьного кода</b> <select id="rewrite_catalog" name="rewrite_catalog"><option value="no">Нет</option><option value="yes">Да</option></select> <br /><br /><font color="red"><b>Внимание:</b> Перед началом не забудьте создать резервную копию базы данных, т.к. данное действие в случае некорректной или не совсем ожидаемой работы, невозможно будет отменить.</font></td>
    </tr>
    <tr>
        <td colspan="2"><div class="hr_line"></div></td>
    </tr>
    <tr>
        <td style="padding:2px;height:50px;"><div id="cat_progressbar"></div>{$lang['stat_allnews']}&nbsp;{$row['count']},&nbsp;{$lang['rebuild_count']}&nbsp;<font color="red"><span id="cat_newscount">0</span></font>&nbsp;<span id="cat_progress"></span></td>
    </tr>
    <tr><td style="background-image: url(/engine/skins/images/mline.gif)" height=1 colspan=2></td></tr>
    <tr>
        <td style="padding:2px;" colspan="2">&nbsp;</td>
    </tr>
    <tr>
        <td style="padding:2px;">{$submit}</td>
    </tr>
</table>
</td>
        <td style="background-image: url(/engine/skins/images/tl_rb.gif)"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0" /></td>
    </tr>
    <tr>
        <td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0" /></td>
        <td style="background-image: url(/engine/skins/images/tl_ub.gif)"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0" /></td>
        <td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0" /></td>
    </tr>
</table>
</div></form>
<script language="javascript" type="text/javascript">
  var total = {$row['count']};
    $(function() {
        $( "#cat_progressbar" ).progressbar({
            value: 0
        });
        $('#cat_button').click(function() {
            $("#cat_progress").ajaxError(function(event, request, settings){
               $(this).html('{$lang['nl1_error']}');
                $('#cat_button').attr("disabled", false);
             });
            $('#cat_progress').html('{$lang['rebuild_status']}');
            $('#cat_button').attr("disabled", "disabled");
            $('#cat_button').val("{$lang['rebuild_forw']}");
            cat_senden( $('#cat_rebuild_ok').val() );
            return false;
        });
    });

function cat_senden( startfrom ){
var cat=top.document.getElementById('rewrite_catalog').value;
if (cat=='no') {
    $.post("engine/ajax/rebuild.php?user_hash={$dle_login_hash}", { startfrom: startfrom, area: 'cat_rebuild' },
        function(data){
            if (data) {
                if (data.status == "ok") {
                    $('#cat_newscount').html(data.rebuildcount);
                    $('#cat_rebuild_ok').val(data.rebuildcount);
                    var proc = Math.round( (100 * data.rebuildcount) / total );
                    if ( proc > 100 ) proc = 100;
                    $('#cat_progressbar').progressbar( "option", "value", proc );
                     if (data.rebuildcount >= total)
                     {
                          $('#cat_progress').html('{$lang['rebuild_status_ok']}');
                     }
                     else
                     {
                          setTimeout("cat_senden(" + data.rebuildcount + ")", 5000 );
                     }
                }
            }
        }, "json");
    return false;
    }
    
if (cat=='yes') {
    $.post("engine/ajax/rebuild.php?user_hash={$dle_login_hash}", { startfrom: startfrom, area: 'rewrite_catalog' },
        function(data){
            if (data) {
                if (data.status == "ok") {
                    $('#cat_newscount').html(data.rebuildcount);
                    $('#cat_rebuild_ok').val(data.rebuildcount);
                    var proc = Math.round( (100 * data.rebuildcount) / total );
                    if ( proc > 100 ) proc = 100;
                    $('#cat_progressbar').progressbar( "option", "value", proc );
                     if (data.rebuildcount >= total)
                     {
                          $('#cat_progress').html('{$lang['rebuild_status_ok']}');
                     }
                     else
                     {
                          setTimeout("cat_senden(" + data.rebuildcount + ")", 5000 );
                     }
                }
            }
        }, "json");
    return false;
    }
}
</script>
HTML;

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_static WHERE allow_br !='2'" );


6. В файле engine/modules/addnews.php найти:
        if ($config['create_catalog']) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ), 0, 1, $config['charset'] ) ); else $catalog_url = "";


заменить на:
        if ($config['create_catalog']) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $title ) ) ) ) ) ), 0, 1, $config['charset'] ) ); else $catalog_url = "";


Так же при помощи этого "исправления" можно добавить символьный код к уже давно добавленным новостям. При перестроении добавленный вами ранее код останется не тронутым, однако, имеется возможность принудительно его перезаписать.

Хак DLE Допустимые символы буквенного каталога публикаций в целом работает на данном коде.

Вам нужно будет указать допустимые символы в настройках вывода новостей админпанели. Рекомендуемый формат регулярного выражения: a-zа-я0-9
будет брать первый символ кириллицы, латиницы или цифру из заголовка, возможно, вы также сможете указать и национальные символы. (не проверялось). Всё. fellow
Хак DLE Допустимые символы буквенного каталога публикаций, в результате навигация становится удобней как для посетителей сайта, так и для администрации
Автор: iwanowi4 [18-11-2012]

Предлагаем ознакомится с хаками дле

Dopustimye-simvoly-bukvennogo-kataloga-publikaciy.rar [112,24 Kb] (cкачиваний: 87)
  • 100

Комментарии 15

dle9.com от 7 января 2014 06:52
Цитата: snamp
нет, у меня dle WINDOWS-1251
мне надо вот это прописать?
AddDefaultCharset WINDOWS-1251

да, попробуйте
snamp от 6 января 2014 21:47
нет, у меня dle WINDOWS-1251
мне надо вот это прописать?
AddDefaultCharset WINDOWS-1251
dle9.com от 6 января 2014 20:14
Цитата: snamp
ну как и ожидалось, ответ отрицательный.

с кодировкой можно сделать так
жестко задать вашу кодировку
в корне там где robots.txt в файл htaccess добавить одну строчку:

AddDefaultCharset UTF-8


Если Вам нужна windows-1251, то тогда так:

AddDefaultCharset WINDOWS-1251


Пробовали такой вариант?
snamp от 6 января 2014 18:08
ну как и ожидалось, ответ отрицательный.

В настройки хостинга возможности внести корректировки нет. И проблем никаких нет с настройками.
В настройки баз данных и страниц вы можете самостоятельно поставить любую удобную кодировку (либо в тело страниц либо в htaccess принудительно указать кодировку для всех )страниц
dle9.com от 5 января 2014 23:50
Цитата: snamp
Цитата: dle9
Получается проблема связана с обработкой данных хостинга, если со всеми файлами впорядке

Кстати да, пример приведу - на денвере я выводил флаги стран - имена были написаны на русском, переехал на хостинг пришлось переименовывать т.к. он их не находил. Есть смысл писать им или нет?

хуже не будет почему бы не поинтересоваться в чем отличие, может есть возможность внести в настройки хостинга корректировки, чтобы работали модули
snamp от 5 января 2014 21:19
Цитата: dle9
Получается проблема связана с обработкой данных хостинга, если со всеми файлами впорядке

Кстати да, пример приведу - на денвере я выводил флаги стран - имена были написаны на русском, переехал на хостинг пришлось переименовывать т.к. он их не находил. Есть смысл писать им или нет?
dle9.com от 5 января 2014 20:53
Цитата: snamp
заменил все файлы с денвера на сайт толку 0

Получается проблема связана с обработкой данных хостинга, если со всеми файлами впорядке
snamp от 5 января 2014 20:27
заменил все файлы с денвера на сайт толку 0
snamp от 5 января 2014 19:51
Скорей всего надо удалить модули которые, затрагивают данные файлы, выбор там не большой думаю времени много не займет.
dle9.com от 5 января 2014 19:48
Цитата: snamp
Сейчас слил бд с сайта поставил на денвер все норм никаких ошибок

Можно сделать Бекап всех файлов движка, а после заменять по одному файлу с нормальной установкой на Денвере, пока проблема не исчезнет

Если файл отличается от чистого движка , значит в него вносили изменения для другого хака или модуля...
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent