Алфавитный фильтр

Хак будет полезен в первую очередь тем, у кого тематический сайт-каталог. Например, сайт только с клипами, сайт только с книгами Д.Донцовой :-), сайт только с рок-музыкой и т.д. Но в принципе, можно использовать на любом варезнике.
Внешний вид:

Алфавитный фильтр


Вид, естественно можно изменить по Вашему усмотрению.

Возможности:
1) Фильтрация новостей по буквам латинского алфавита и цифрам. Фильтр по буквам кириллицы производится по фильтру «RUS»
2) Автоматическое добавление первой буквы/цифры названия при добавлении/редактировании новости в поле «Символьный код» (если буква кириллицы – добавляется RUS). При этом производится проверка на невозможность добавления спецсимволов, пробелов и т.д.

Рабочий пример можно посмотреть на _http://1024kbytes.com

Хак тестировался на версиях 8.2 и 7.5 (если в пунктах описания не указано, для какой версии, значит подходит для обеих). Расмотрю варианты локализации для других версий.
Итак:
1) Создаем в блокноте файл с именем afilter.php
Копируем в него код

<?php
/*
=====================================================
Алфавитный фильтр
=====================================================
Данный код защищен авторскими правами (kandriy2004@ukr.net, ICQ#271522951)
=====================================================
Файл:  afiltr.php
----------------------------------------------------------
Назначение:  Создание алфавитного списка
=====================================================
*/
if(!defined('DATALIFEENGINE'))
{
  die("Hacking attempt!");
}
$alphafilter = '<TABLE cellSpacing=0 cellPadding=0 width=100%><TR><td  align = "center">';
$alphafilter .= '<a href="http://'.$_SERVER['HTTP_HOST'].'/catalog/RUS/">RUS</a>&nbsp;&nbsp;&nbsp;';
for ($i = 97; $i <= 122; $i++)
{
$alphafilter .= '<a href="http://'.$_SERVER['HTTP_HOST'].'/catalog/'.chr($i).'/">'.chr($i).'</a>&nbsp;';
}
$alphafilter .= '&nbsp;&nbsp;&nbsp;';
for ($i = 0; $i <= 9; $i++)
{
$alphafilter .= '<a href="http://'.$_SERVER['HTTP_HOST'].'/catalog/'.$i.'/">'.$i.'</a>&nbsp;';
}
$alphafilter .= '</td></tr></TABLE>';

    $tpl->load_template('afilter.tpl');
    $tpl->set('{alphafilter}', $alphafilter);
    $tpl->compile('afilter');
    $tpl->set('{afilter}', $tpl->result['afilter']);
?>


2) Копируем только что созданый afilter.php в /engine/moduls

3) Открываем /engine/moduls/functions.php, находим строчку

?>


и ВЫШЕ ее вставляем код:

function GetSymbolKod($title){  
$res = '000';  
$title = strtolower(ltrim($title));  
if (preg_match("/[a-zA-Zа-яА-Я0-9]/", $title, $out_arr ))  
{
       if (preg_match("/[a-zA-Z0-9]/", $out_arr[0]))  $res = $out_arr[0];
       if (preg_match("/[а-яА-Я]/", $out_arr[0]))  $res = "RUS";  
}  
return $res;
}


4) Открываем /engine/inc/include/functions.inc.php (в ранних версиях может быть в /engine/inc/functions.inc.php)

?>


и ВЫШЕ вставляем код:

function GetSymbolKod($title){  
$res = '000';  
$title = strtolower(ltrim($title));  
if (preg_match("/[a-zA-Zа-яА-Я0-9]/", $title, $out_arr ))  
{
       if (preg_match("/[a-zA-Z0-9]/", $out_arr[0]))  $res = $out_arr[0];
       if (preg_match("/[а-яА-Я]/", $out_arr[0]))  $res = "RUS";  
}  
return $res;
}


5) (для версти 8.2)
Открываем /engine/moduls/addnews.php, находим ПЕРВОЕ вхождение:

if( $found ) {


и ВЫШЕ вставляем код:

/********* afilter ***********************/
$catalog_url = GetSymbolKod($title);
/********* !afilter **********************/


5) (для версии 7.5)
Открываем /engine/moduls/addnews.php, находим строку

$symbol = $title[0];


ВПЕРЕДИ (не выше, а именно спереди строки) нее ставим «//» (без кавычек), а НИЖЕ вставляем код:

$symbol = GetSymbolKod($title);


Далее находим часть строки:

symbol='ABC'


и ЗАМЕНЯЕМ на:

symbol='$symbol'


Опять находим часть строки:

'III'


и ЗАМЕНЯЕМ на:

'$symbol'



6) Открываем /engine/inc/addnews.php и находим строку:

$catalog_url =


ВПЕРЕДИ (не выше, а именно спереди строки) нее ставим «//» (без кавычек), а НИЖЕ вставляем код:


/********* afilter ***********************/
$catalog_url = GetSymbolKod($title);
/********* !afilter **********************/


7) Открываем /engine/inc/editnews.php и находим строку:

$catalog_url =


ВПЕРЕДИ (не выше, а именно спереди строки) нее ставим «//» (без кавычек), а НИЖЕ вставляем код:


/********* afilter ***********************/
$catalog_url = GetSymbolKod($title);
/********* !afilter **********************/



Хак имеет шаблон. Это для того, чтобы каждый мог сделать внешний вид фильтра по своему усмотрению. По умолчанию (то, что предложу я), подойдет большинству ибо простой и использует стиль спидбара (speedbar). Менять можно по своему усмотрению :-)
Итак, все просто:
8) В блокноте создаем файл afilter.tpl
В него копируем код:

<noindex>
<DIV class="afilter">{alphafilter}</DIV>
</noindex>

Кстати, тэг можно и убрать :-)

9) Копируем только что созданный файл в /templates/ваш_шаблон.

Как видно из шаблона, я использую стиль "afilter". Чтоб долго не думать, как шаблон сделать подходящим к общему стилю сайта, я взял и скопировал класс спидбара (speedbar) и назвал его afilter (хотя можно еще проще – в шаблоне указать класс speedbar – но это чревато последствиями…).
Делал это так.
10) Открываем файл /templates/ваш_шаблон/css/style.css и ишем строку с описанием стиля «.speedbar», «.speedbar a» и «.speedbar a:hover» . У меня это выглядит так:

.speedbar {
    color: #727272;
    font-size: 11px;
    font-family: tahoma;
    padding-left: 6px;
}
.speedbar a {
    color:  #0574D3;
    text-decoration:none;
}
.speedbar a:hover {
    text-decoration: underline;
    color:  #0574D3;
    }


Скопируйте этот код в самый конец файла, только замените название speedbar на afilter и добавьте

font-size: 11px;

к «.speedbar a» и «.speedbar a:hover» стилям.

Вот что у меня получилось:

.afilter {
    color: #727272;
    font-size: 11px;
    font-family: tahoma;
    padding-left: 6px;
}
.afilter a {
    color:  #0574D3;
    font-size: 11px;
    text-decoration:none;
}
.afilter a:hover {
    text-decoration: underline;
    color:  #0574D3;
    font-size: 11px;
    }    
[code]

[b]11)[/b] Копируем только что отредактированный  файл style.css  обратно в /templates/ваш_шаблон/css/

Это мое видение шаблона :-). Повторяю – Вы же можете шаблон замутить, как надо именно Вам.

[b]12)[/b] Предпоследний шаг.
Берем   /templates/ваш_шаблон/main.tpl, находим строку {speedbar}. А тут как хотите – выше или ниже этой строки ставите тэг {afilter}. У меня на скриншоте – тэг выше {speedbar}.

[b]13)[/b] И последнее - подключим наш хак к сайту:
Открываем файл index.php, находим строчку  
[code]
require_once ROOT_DIR . '/engine/init.php';


и НИЖЕ вставляем код:

//***************** afilter *************************
require_once ROOT_DIR.'/engine/modules/afilter.php';
//***************** afilter *************************



14) И еще один важный момент.
Т.к. поле «Символьный код» в новости, значение которого участвует в фильтре , заполняется автоматически только при add/edit новости, то у всех предыдущих новостей поле будет пустым (или заполненный не так, как нам надо). Решения есть два:
1) пересохранить все новости (надо потратить много времени)
2) запустить скрипт, который автоматом все правильно исправит (времени не надо тратить. Кому этот вариант ближе - пишите на мыло, ICQ271522951, в личку)

Удачи!

P.S. Есть готовое решение хака, в котором реализована фильтрация в том числе и по буквам кириллицы. Кому интересно - пишите на мыло, icq271522951, в личку.

Скриншот:
Алфавитный фильтр
Другие новости по теме:

Категория: Хаки ----- Просмотров: 4426 ----- Комментариев: 36

Вернуться

  • Группа: User
  • ICQ: 288569677
  • Регистрация: 21.01.2008
  • Комментариев: 703
  • Публикаций: 245
^
Таксь, нужно чёто фильтравать.
Тематические сайты как рраз имеються.
Нужно испытать это дело.
laughing

--------------------
  • neoks

  • 18 сентября 2009 09:32
  • Группа: User
  • ICQ: --
  • Регистрация: 20.07.2009
  • Комментариев: 556
  • Публикаций: 121
^
GauraStyle,
Согласен прикольный хак (ша на музыкалку поставлю будет по буквам ептель lol

--------------------
  • jura1990

  • 18 сентября 2009 11:30
  • Группа: User
  • ICQ: --
  • Регистрация: 9.08.2008
  • Комментариев: 13
  • Публикаций: 1
^
А как сделать чтоб буквы были толька русские и с большие а не маленькие
  • Kamar

  • 18 сентября 2009 12:05
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
А я что то на примере не заметил Русских букв feel
  • kand2004

  • 18 сентября 2009 12:19
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: jura1990
А как сделать чтоб буквы были толька русские и с большие а не маленькие

Цитата: Kamar
А я что то на примере не заметил Русских букв


По поводу внедрения русских букв в каком угодно виде, обращайтесь на асю271522951, мыло или в личку.
  • Влад

  • 18 сентября 2009 12:43
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Класс, куплю)
  • 123Life

  • 18 сентября 2009 12:48
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Влад,
wink
Вроде бы бесплатно)
  • -CeBep

  • 18 сентября 2009 12:57
  • Группа: User
  • ICQ: --
  • Регистрация: 20.10.2008
  • Комментариев: 120
  • Публикаций: 1
^
Влад, ахаха)) Спамилка у тя такая?)) Всегда пишет "Класс, куплю" lol
  • Влад

  • 18 сентября 2009 13:05
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Влад, ахаха)) Спамилка у тя такая?)) Всегда пишет "Класс, куплю" lol

Чувак, ты меня с кем то путаешь! lol
В первый раз так написал, потому что версия есть платная и бесплатная, платная естественно лучше.
  • Группа: User
  • ICQ: 288569677
  • Регистрация: 21.01.2008
  • Комментариев: 703
  • Публикаций: 245
^
Большие букавки делаються просто, для этго нужно только использовать теги соответственные и всё.
Ну там всё просто, было бы лиш желание.
fellow

--------------------
  • toktok

  • 18 сентября 2009 15:34
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
8.2 не получилось. Нет классов .speedbar в css для моего шаблона. Просто добавил:
.afilter {
color: #727272;
font-size: 11px;
font-family: tahoma;
padding-left: 6px;
}
.afilter a {
color: #0574D3;
font-size: 11px;
text-decoration:none;
}
.afilter a:hover {
text-decoration: underline;
color: #0574D3;
font-size: 11px;
}

Затем в main.tpl добавил {afilter}
  • Flammen

  • 18 сентября 2009 16:09
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
А это вроде через сам движок можно сделать:

Из мануала:
Каталог сайта (сортировка по символьному коду)
http://website.com/catalog/a/ - с использованием ЧПУ
http://website.com/index.php?catalog=а - без использованиия ЧПУ
и т.д.
  • kand2004

  • 18 сентября 2009 16:39
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: toktok
8.2 не получилось. Нет классов .speedbar в css для моего шаблона.


Просто добавьте в конец style.css стили afilter из инструкции.

Цитата: Flammen
А это вроде через сам движок можно сделать:

Совершенно верно. Поле Символьный код используется в хаке. Просто в движке символьный код заполняется не так, как надо, а с помощью хака добавление первого симола названия новости происходит автоматом.
  • Flammen

  • 18 сентября 2009 16:42
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
kand2004,
Сколько хочеш за платную версию?? с рус. буквами
ПС: В аську никогда не пишу.....
  • kand2004

  • 18 сентября 2009 16:44
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Внимание! У кого после исполнения всех пунктоа инструкции, на сайте ничего не выводит, пробуем поменять код в afilter.php (из п.1). ...Млин, в комментах нельзя добавить код... Тогда пишите на мыло, в личку, асю - сразу скину вам этот код.
  • Flammen

  • 18 сентября 2009 16:53
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
kand2004,
Выложи текстовым файлом и попроси админов отредактировать новость fellow
  • Группа: Гости
  • ICQ: 767792
  • Регистрация: 14.02.2008
  • Комментариев: 414
  • Публикаций: 19
^
Отлично!
Спасибо ха хак.
  • kand2004

  • 18 сентября 2009 21:16
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: -=ZLoY=-
Отлично!Спасибо ха хак.

на здоровье! smile
  • JayMoff

  • 19 сентября 2009 12:40
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
а вот в 7.2 нема

ни этого
$symbol = $title[0];
ни этого
symbol='ABC'
ни этого
'III'

как порешать*
  • kand2004

  • 19 сентября 2009 17:27
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: JayMoff
как порешать*


пиши на мыло, в личку, аську...
  • Whisper

  • 21 сентября 2009 22:56
  • Группа: User
  • ICQ: 208799127
  • Регистрация: 17.05.2008
  • Комментариев: 40
  • Публикаций: 0
^
всё у вас как то сложно

разумеется во всех новостях надо ставить первую букву имени исполнителя в соответствующее поле
я конечно не критикую никого просто альтернативный вариант ...
демо на neko.org.ua стиль мона юзать такой же как и стиль перехода по страницам у вас в низу сайта

--------------------
  • kand2004

  • 22 сентября 2009 08:42
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: Whisper
всё у вас как то сложно

почему же сложно? Возможность добавлять любое значение в поле "Символьный код" - это стандартная возможность движка. Я только автоматизировал процесс добавления - в данном случае это первая буква title. Если новости формируете только Вы сами, то конечно, будете следить за простановкой "Символьного кода", а если есть много журналистов, тогда автоматизация процесса необходима...

Цитата: Whisper
демо на neko.org.ua

Фильтрация происходит только по буквам латиницы и цифрам. А как быть с буквами русского алфавита? Тем более, что у Вас есть новости с русским title'ом.. Наверное, просто у Вас так задумано - фильтровать только альбомы

Удачи!

  • Diren

  • 23 сентября 2009 21:39
  • Группа: User
  • ICQ: 441200771
  • Регистрация: 24.08.2009
  • Комментариев: 28
  • Публикаций: 0
^
Для меня такой мод бесполезен
Ни кто правда не смог придумать мод алфавит который показывает новости в катигориях и подкатегориях.
  • kand2004

  • 24 сентября 2009 08:35
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: Diren
Ни кто правда не смог придумать мод алфавит который показывает новости в катигориях и подкатегориях.

Если Вам такой модуль нужен - пишите в личку - договоримся.
  • kand2004

  • 27 сентября 2009 15:25
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Есть готовое решение данного хака для версии 7.2
Все проверено и протестированно.
ICQ:271522951
  • JayMoff

  • 27 сентября 2009 16:27
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Класс! вовсю пользую!)
  • kand2004

  • 27 сентября 2009 17:36
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: JayMoff
Класс! вовсю пользую!)

Спасибо за отзыв! smile
  • Flammen

  • 27 сентября 2009 20:36
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Купил версию с русскими буквами, все работает, спс афтару.....

ПС: Не понял зачем только от индексации скрывать.....имхо, ведь положительно влияет....
  • Whisper

  • 27 сентября 2009 21:41
  • Группа: User
  • ICQ: 208799127
  • Регистрация: 17.05.2008
  • Комментариев: 40
  • Публикаций: 0
^
Цитата: kand2004
Наверное, просто у Вас так задумано - фильтровать только альбомы

у меня это каталог исполнителей, на сайте есть еще новости и прочее, а в каталог должны попасть лишь исполнители (и имена у них кириллицей быть не могут)
конечно автоматизировать было бы лучше но если только для выбранных категорий!

--------------------
  • kand2004

  • 28 сентября 2009 10:41
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: Whisper
конечно автоматизировать было бы лучше но если только для выбранных категорий!

Это можно решить без проблем. Пишите на ICQ или на мыло.
  • kolllak

  • 6 октября 2009 22:59
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
народ подскажите поставил кодировки русских букв, но использовал коды из спец символов ASCII, 192 и 223, но при поиске отображаются они след обр:
Каталог » Р¤ (поиск по букве Ф)
что еще нужно править?
  • NoSay

  • 17 ноября 2009 22:14
  • Группа: Модератор
  • ICQ: --
  • Регистрация: 12.11.2009
  • Комментариев: 81
  • Публикаций: 10
^
а без чпу есть?

--------------------
  • Diezzza

  • 18 ноября 2009 12:18
  • Группа: User
  • ICQ: --
  • Регистрация: 25.01.2009
  • Комментариев: 28
  • Публикаций: 0
^
Взял полную версию, отлично все работает, пользуюсь с большим удовольствием =)
  • CKBAD

  • 21 ноября 2009 00:24
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Нужна кирилица ! Помогите... в аську никто не отвечает итд итп..


Потратил час и разобрался.
  • n0hcho

  • 7 октября 2010 22:21
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
в 8.5 в addnews.php добавил код

/********* afilter ***********************/
$catalog_url = GetSymbolKod($title);
/********* !afilter **********************/

перед первым if( $found ) {
но все равно не работает,если пользователь добавляет новость,только при редактировании или добавлении через админку
  • lika004

  • 8 октября 2010 02:18
  • Группа: User
  • ICQ: 373624275
  • Регистрация: 13.02.2010
  • Комментариев: 71
  • Публикаций: 0
^
Может кто подскажет как добавить руские буквы.
Может кто подскажет как зделать запрос на применение хака к уже созданым новостям.

--------------------