
Представляем для любой версии DLE хак Дополнительные поля по категориям. Что же делает этот хак для дле, лучше посмотреть на примере ниже, чтобы понять задумку.
Описание:
Сделать хаки для любой версии DLE, чтобы можно было разделить в ссылках дополнительные поля вида гиперссылки на категории. Сделав пару манипуляций, автору удалось вдохнуть жизнь в этот хак. Он будет полезен как кино-порталам, варезникам, кулинарным сайтам так и прочим.
Итак, что мы получаем после установки хака, к примеру:
На тестовом сайте для экспериментов был создана два дополнительных поля
genre|Жанр произведения||text||1|1|0|0
year|Год выпуска||text||1|1|0|0
Изначально cms DLE позволяет сортировать по этим дополнительным полям по общей ссылке
сайт.ру/xfsearch/боевик
сайт.ру/xfsearch/2014
В хаке Меняем в адресе надоедливый xfsearch на более логичное слово я описал как изменить xfsearch на любое другое слово, которое вам по душе.
Теперь же идея вот в чём:
Подменить xfsearch на латинское название дополнительного поля, разделив их таким образом на категории.
Теперь наглядно.
Выше я описал данные из xfields.txt. Как видите у меня два дополнительных поля, назвал я их genre и year. Сейчас покажу как подменить ссылку
сайт.ру/xfsearch/ на сайт.ру/genre/ и сайт.ру/year/.
Приступим к установке.
1. Ищем в файлах engine/modules/show.short.php, engine/modules/show.custom.php и два раза engine/modules/show.full.php
$value3[] = "<a href="" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/">" . $value2 . "</a>";
Заменяем на
$value3[] = "<a href="" . $config['http_home_url'] . "".$preg_safe_name."/" . urlencode( $value2 ) . "/">" . $value2 . "</a>";
Это заменит xfsearch на латинское название дополнительного поля.
2. В файле .htaccess ищем
RewriteRule ^xfsearch/([^/]*)(/?)+$ index.php?do=xfsearch&xf=$1 [L]
RewriteRule ^xfsearch/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [L]
Вставляем ниже
RewriteRule ^genre/([^/]*)(/?)+$ index.php?do=xfsearch&xf=$1 [L]
RewriteRule ^genre/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [L]
RewriteRule ^year/([^/]*)(/?)+$ index.php?do=xfsearch&xf=$1 [L]
RewriteRule ^year/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [L]
Этим мы делаем редирект.
Понятное дело что у вас отличаются дополнительные поля от моих, у когото их больше. Вам нужно в .htaccess на каждое дополнительное поле отдельно вставлять
RewriteRule ^латинское название доп поля/([^/]*)(/?)+$ index.php?do=xfsearch&xf=$1 [L]
RewriteRule ^латинское название доп поля/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xf=$1&cstart=$2 [L]
Вот и всё. Правда легко и просто?)
Название: Дополнительные поля по категориям [DLE ALL]
Автор: каждый кто додумался
Автор этого метода: DomiTori
CMS: любая версия DLE
Да, реально нужный хак! У меня реализовано подобное..