Все для DataLife Engine / DLE хаки / Хак для DLE / Каталог по буквенному идентификатору Алфавиту

Каталог по буквенному идентификатору Алфавиту



Чтобы реализовать удобный каталог вывода новостей по буквенному идентификатору в дле, можно воспользоваться не большим Dle хаком. Такой каталог будет доступен на блоге по ссылке например:
ваш_сайт.ru/catalog/A
Каталог выводит новости по первой букве заголовка. Хак dle автоматический стандартный каталог сделан по алфавиту, но это легко можно будет поменять на любой другой тип сортировки.
Хак дле каталог по буквенному идентификатору Алфавит
Версии DLE: 7.2-9.3
«Автор:» Sander

Установка:Открыть файл index.php
После строки:
$tpl->set_block ( "'{banner_(.*?)}'si", "" );


Вставить:

$catalog_ru = explode(" ", "А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я");foreach($catalog_ru as $k=>$v){    if( $config['allow_alt_url'] == "yes" ) $catalog_ru[$k] = "<a href="/catalog/{$v}" title="Новости на букву: {$v}">{$v}</a>";    else $catalog_ru[$k] = "<a href="{$config['http_home_url']}index.php?catalog={$v}" title="Новости на букву: {$v}">{$v}</a>";}$catalog_ru = implode(" | ", $catalog_ru);$tpl->set ( '{catalog_ru}', $catalog_ru );$catalog_en = explode(" ", "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0-9");foreach($catalog_en as $k=>$v){    if( $config['allow_alt_url'] == "yes" ) $catalog_en[$k] = "<a href="/catalog/{$v}" title="Новости на букву: {$v}">{$v}</a>";    else $catalog_en[$k] = "<a href="{$config['http_home_url']}index.php?catalog={$v}" title="Новости на букву: {$v}">{$v}</a>";}$catalog_en = implode(" | ", $catalog_en);$tpl->set ( '{catalog_en}', $catalog_en );


Открыть файл engine/engine.php

Удалить код:

symbol = '$catalog' AND 


После строки:

$user_query = "catalog=" . urlencode ( $catalog );


Вставить:

if($catalog=='0-9') $stop_list .= "title regexp '^[0-9'"]+' AND ";            else{                $catalog = substr(convert_unicode($catalog),0,1);                if($catalog!='е' AND $catalog!='и') $stop_list .= "title LIKE '$catalog%' AND ";                elseif($catalog=='е') $stop_list .= "(title LIKE 'Е%' OR title LIKE 'Ё%') AND ";                elseif($catalog=='и') $stop_list .= "(title LIKE 'И%' OR title LIKE 'Й%') AND ";            }


Теперь достаточно в main.tpl в нужном месте установить теги

{catalog_ru} {catalog_en}


для вывода алфавита.

Разделительный знак между буквами " | " можно поменять на любой другой достаточно его заменить в коде скрипта
$catalog_ru = implode(" | ", $catalog_ru);$catalog_en = implode(" | ", $catalog_en);


Установка

Советуем все для datalife engine скачать хак каталог по буквенному идентификатору Алфавиту

install_sort.zip [14,83 Kb] (cкачиваний: 308)
  • 100

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

Cesium от 16 сентября 2015 21:14
Цитата: dle9.com
Здравствуйте. Это сортировка с ограничением так задумано, переделать придется все и вряд ли кто возьмется.
или искать другой вариант или переходить на версию дле выше там уже кажется 9.8 уже внедрен буквенный каталог разработчиками движка

Спасибо за оперативный ответ!! Буду искать.
dle9.com от 16 сентября 2015 19:32
Цитата: Cesium
Здравствуйте. Версия 9.2, установил всё как описано в инструкции, заработало,но:
У меня в админке стоит ограничение "Количество новостей на страницу" - 15.
При нажатии на букву, он выводит 15 новостей и всё. Нет возможности переключится на следующую страницу с записями на эту букву. Подскажит, что делать? Спасибо!

Здравствуйте. Это сортировка с ограничением так задумано, переделать придется все и вряд ли кто возьмется.
или искать другой вариант или переходить на версию дле выше там уже кажется 9.8 уже внедрен буквенный каталог разработчиками движка
Cesium от 16 сентября 2015 19:23
Здравствуйте. Версия 9.2, установил всё как описано в инструкции, заработало,но:
У меня в админке стоит ограничение "Количество новостей на страницу" - 15.
При нажатии на букву, он выводит 15 новостей и всё. Нет возможности переключится на следующую страницу с записями на эту букву. Подскажит, что делать? Спасибо!
dle9.com от 18 февраля 2013 08:51
A-Jey,
Олег Александрович a.k.a. Sander
Внимание! У Вас нет прав для просмотра скрытого текста.
??
A-Jey от 17 февраля 2013 20:12
Синтексическая ошибка, если ее исправляешь появляется критическая. Жду когда подправят для версии 9.7
Максим от 5 апреля 2012 01:37
Ребята подскажите что за ерунда может быть на 9.5 перестали работать АЛФ.. Русские буквы и при клике на букву выдаёт, Рђ и другие символы
Вася от 23 марта 2012 03:13
из-зи кода, вставляемого в index.php на 9.3 не работает, 500 ошибка
dle9.com от 7 ноября 2011 15:28
Цитата: Максим
Максим

становятся ENG, сам не пойму почепу

Какая версия дле?

В версии 9.4 встроен свой родной каталок алфавит , лучше использовать его...
Максим от 7 ноября 2011 14:54
dle9 У меня всё нормально работает, единственный минус в том если стоит авто заполнение АЛФ.. при публикации новости русские буквы становятся ENG, сам не пойму почепу приходится редактировать букву после публикации, а так всё нормально работает
dle9.com от 3 октября 2011 07:18
Цитата: Олег
Если ничего не вставлять в engine/engine.php в версии 9.4 то даже Английские буквы перестают работать... у меня во всяком случаи перестали... Может дело что на Денвере тестю хотя по идее разницы не должно быть...


Разницы НЕТ.

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

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

    • 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