Перейти к публикации

Akela

Клиенты
  • Публикации

    509
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    4

Сообщения, опубликованные пользователем Akela

  1. Доброго дня, может кто помочь с модификацией поиска на сайте (dle 9.2), нужно чтоб когда вбиваешь слово в поиск икало не в статьях а в заголовках статей

    Надо добавить невидимое поле в форму поиска

    <input type="hidden" name="titleonly" value="3" />

    вот вам подсказка - решение публиковал пользователь Akela. жаль, что он ушел с форума, он один из очень немногих, кто помогал

    Спасибо за добрые слова, я еще как бы не ушел :)

    • Поддерживаю 1
  2. ее вообще не существует физически, ЧПУ это как раз это перенаправление с несуществующего адреса на существующий. В реальности новость имеет тот адрес, который без ЧПУ.

    Да это я понимаю, просто хотел сказать, что раз страницы нет такой, то нужно отображать ошибку 404, а не отображать эту "новость" в неправильном пути. Да и элементарную проверку категорий можно сделать - разве сложно? - код всего в несколько строк, т.е.

    Похоже, вы все же не очень понимаете, что такое ЧПУ и как работает редирект. Нету такой страницы http://cat/1-item.html , и http://cats/1-item.html тоже нет и даже http://catscats/1-item.html нет !

    А есть http://site/index.php?newsid=1 .

    Просто отключите ЧПУ и вы это сразу увидите. Поэтому скрипт не может "проверить" категории, т.к. скрипт ВСЕГДА получает только адрес http://site/index.php?newsid=1 .

  3. Akela,

    Принято, будет исправлено в новой версии скрипта. Это кстати правильное исправление, я только подправлю в будущем текст сообщения, если зашел на несуществующую страницу.

    Кстати, похожая, но не такая страшная, ситуация во всех местах, где есть постарничный вывод при заходе на несуществующую страницу. Может быть стоит добавить предварительную проверку, что $cstart меньше $count_all ?

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

    Для примера, при выводе 10 новостей на страницу и наличии 15 новостей в закладках, при заходе на страницу http://site/favorites/page/3/ сработает данный баг и ВСЕ закладки удалятся.

    НЕ повторяйте данный эскперимент у себя на сайте, за последствия вы сами отвечаете :) .

    Описание :

    Если в навигации по закладкам перейти на несуществующую страницу, то все закладки удаляются, благодаря следующему коду в show.short.php :

    	} elseif( ! $news_found and $do == 'favorites' ) {
    
    
    		if ( $member_id['favorites'] ) $db->query( "UPDATE " . USERPREFIX . "_users SET favorites='' WHERE user_id = '{$member_id['user_id']}'" );
    
    
    		msgbox( $lang['all_info'], $lang['fav_notfound'] );
    
    	}
    
    
    Временное решение : заменить вышеописанный код на
    	} elseif( ! $news_found and $do == 'favorites' ) {
    
    
    		if ( $member_id['favorites'] and ! $count_all ) $db->query( "UPDATE " . USERPREFIX . "_users SET favorites='' WHERE user_id = '{$member_id['user_id']}'" );
    
    
    		msgbox( $lang['all_info'], $lang['fav_notfound'] );
    
    	}
    
    

    будет выводить сообщение "Вы ничего не вносили в свои закладки", но хотя бы сами закладки не обнулит.

    Надеюсь, что разработчик найдет более правильное решение.

  5. интересует программа (скрипт) которая могла бы по расписанию сливать обновлённые файлы (папки) + базу данных, как на домашний компьютер, так и на другой сервер

    1. Ставим в крон автобэкап где-то в ночное время.

    2. Используем FlashFXP, создаем там site с нужными параметрами входа на сайт, включая игнорирование (т.е. НЕ скачивать !) файлов, которые не изменялись.

    3. В своем компе создаем новый Scheduled Task, в котором вписываем команду :

    <путь>\FlashFXP.exe <имя_site_из_п_2> -download -remotepath="<путь_до_папки_бэкапа_на_сервере>" -localpath="<путь_до_папки_бэкапа_на_компе>" -c2

    и ставим время запуска немного после времени запуска бэкапа на сервере.

    4. Периодически чистим старые бэкапы :)

    • Поддерживаю 1
  6. Нужна подсказка в поиске по типу как в гугле

    Ну с Гуглом сравнивать не буду, но что-то типа этого я сделал уже давно, правда автоматического поиска при наборе слова там раньше не было, а теперь и это имеется.

    Смотрите поле "Быстрый поиск" на сайте www.infanata.org .

    Если разработчик движка заинтересован, я был бы рад, если бы эта скромная добавка попала в следующую версию.

  7. вот тогда ещё вопросик, а сколько можно использовать движок неактивированный ?? допустим у меня сат будет с 50 новостями а ограничение на 100 новостей. Там будет максимум 50 новотей и всё. Т.е. можно неактивировать лицензию вообще на него ??

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

  8. Сразу предупрежу, что я не програмист, поэтому возможны неточности в описании задачи. Да и ТЗ писал прямо сразу, не готовясь))

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

    АВТОЗАПОЛНЕНИЕ

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

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

    РЕЛЕВАНТНОСТЬ ВЫДАЧИ

    На сколько я понимаю, сейчас выдача сортируется по значению, по которому сортируются новости на сайте. Точно не помню - уже давно это изменил у себя. Я долго пытался придумать, как сделать поиск более релевантным, и все что я смог сделать в существующих условиях - сделал сортировку выдачи по кол-ву просмотров.

    Что можно сделать? я не кодер, но точно знаю, что одно из улучшений будет сделать так чтобы сначала показывались результаты, найденные в ЗАГОЛОВКАХ, а потом уже в теле новости.

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

    БАЗА ДАННЫХ

    Помимо традиционных "новостей" ДЛЕ некоторые админы (вроде меня) создают свои модули, которые работают со своими таблицами в БД. Например, у меня вакансии, объявления, и еще кое-что - это свои таблицы.

    Хотелось бы, чтобы такие таблицы можно было удобно подключать к поиску. Чтобы можно было указать в каких таблицах производить поиск, и какие поля показывать.

    Можно к "своим" таблицам со стороны разработчика предъявлять некоторые требования, чтобы соответствовали, чтобы были подключаемы к системе.

    Можно сделать этакие поисковые группы. Например группа "Компании" будет включать определенные категории новостей. Группа "Новости" - другие категории. Группа "Вакансии" - будет таблица из БД моего собственного модуля. Человек будет включая и выключая галочки, выбирать, в каких группах искать.

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

    ИНТЕРФЕЙС

    Определенно нужно улучшить поисковой интерфейс. Нужно каким-то образом сделать так, чтобы админ мог настраивать галочки, чтобы пользователь сам выбирал, где (в каких "поисковых группах") хочет искать. Существующий расширенный поиск каждый день становится менее нужным, потому что не гибкий.

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

    ДОПУСТИМ

    Человек во время поиска выбирает галочками, что хочет искать например в компаниях, в новостях, и в вакансиях. в этом случае, выдача будет осуществляться следующим образом:

    - найденное в заголовках новостей

    - найденное в тексте новостей

    - найденное в заголовках компаний

    - найденное в тексте компаний

    - найденное в заголовках вакансий

    - найденное в тексте вакансий

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

    В ЗАКЛЮЧЕНИИ ОТМЕЧУ, ЧТО ПОИСК - ЭТО НА МОЙ ВЗГЛЯД САМЫЙ ВАЖНЫЙ ЭЛЕМЕНТ НА САЙТЕ. У поиска самые мощные возможности удержать человека на сайте. Нужно просто эти возможности реализовать.

    АВТОЗАПОЛНЕНИЕ

    Я думал над этим и в принципе сделать не трудно. Как промежуточный вариант я пока сделал небольшой модуль "Быстрый поиск" (см. на сайте infanata.org слева вверху) - работает на АЯКС, позволяет оперативно искать НЕ выходя с текущей страницы.

    РЕЛЕВАНТНОСТЬ ВЫДАЧИ

    Без изменений в структуре базы или введения более сложных запросов я решения пока не вижу.

    БАЗА ДАННЫХ

    Пока универсального решения нет, надо формализовать задачу.

    ИНТЕРФЕЙС

    Я предлагал Владимиру ввести редактирование шаблона поиска в админке, но это предложение не было им поддержано.

    З.Ы. У меня есть также микро-модуль "Поиск по тэгам" , также на АЯКС. Возможно, эти два АЯКС-модуля послужат основой нового универсального модуля поиска, я еще пока не знаю.

  9. Список изменений для версии 8.2:

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

    1. В файле \.htaccess

    ПОСЛЕ строк

    # вывод непрочитанных статей
    
    RewriteRule ^newposts(/?)+$ index.php?subaction=newposts [L]
    
    RewriteRule ^newposts/page/([0-9]+)(/?)+$ index.php?subaction=newposts&cstart=$1 [L]
    
    
    вставляем строки
    
    # вывод дайджеста новостей
    
    RewriteRule ^digest(/?)+$ index.php?subaction=digest [L]
    
    RewriteRule ^digest/page/([0-9]+)(/?)+$ index.php?subaction=digest&cstart=$1 [L]
    
    
    2. В файле \language\Russian\adminpanel.lng ПОСЛЕ строки
    
    $lang = array (
    
    
    вставляем строки
    
    // digest hack
    
    'opt_sys_digestc'               =>      "Количество новостей в дайджесте",
    
    'opt_sys_digestd'               =>      "Количество заголовков новостей, которое будет выводиться на страницу дайджеста",
    
    // digest hack
    
    
    3. В файле \language\Russian\website.lng ПОСЛЕ строки
    
    $lang = array (
    
    
    вставляем строки
    
    // digest hack
    
    'title_digest'  => "Лента новостей",
    
    // digest hack
    
    
    4. В файле \engine\engine.php а) ПЕРЕД строками
    
    		} elseif ($catalog != "") {
    
    			// ################ Вывод по буквенному идентификатору #################
    
    
    вставляем строки
    
    	} elseif ($subaction == 'digest') {
    
    			// ################ Вывод digest новостей #################
    
    			$config['news_number'] = intval($config['digest_number']);
    
    			if ($cstart){
    
    				$cstart = $cstart - 1;
    
    				$cstart = $cstart * $config['news_number'];
    
    			}
    
    			$url_page = $config['http_home_url']."digest";
    
    			$user_query = "subaction=digest";
    
    
    			$sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, approve, rating, vote_num, news_read, flag, editdate, editor, reason, view_edit, tags FROM " . PREFIX . "_post where {$stop_list}approve " . $where_date . " order by date DESC LIMIT " . $cstart . "," . $config['news_number'];
    
    			$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$stop_list}approve" . $where_date;
    
    
    б) ПОСЛЕ строк
    
    			} elseif ($do == "lastnews") {
    
    
    				$cache_prefix = "_lastnews";
    
    
    вставляем строки
    
    			} elseif ($subaction == "digest") {
    
    
    				$cache_prefix = "_digest_";
    
    
    в) ПОСЛЕ строки
    
                    elseif ($subaction == 'newposts') $nam_e=$lang['title_new'];
    
    
    вставляем строку
    
                    elseif ($subaction == 'digest') $nam_e=$lang['title_digest'];
    
    
    5. В файле \engine\inc\options.php ПОСЛЕ строки
    
            showRow($lang['opt_sys_newc'], $lang['opt_sys_newd'], "<input class=edit type=text style=\"text-align: center;\"  name='save_con[news_number]' value=\"{$config['news_number']}\" size=10>");
    
    
    вставляем строки
    
    // digest hack
    
            showRow($lang['opt_sys_digestc'], $lang['opt_sys_digestd'], "<input class=edit type=text style=\"text-align: center;\"  name='save_con[digest_number]' value=\"{$config['digest_number']}\" size=10>");
    
    // digest hack
    
    
    6. В файле \engine\modules\show.short.php а) ВМЕСТО строк
    
    	if( isset( $view_template ) and $view_template == "rss" ) {
    
    	} elseif( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
    
    
    
    вставляем строки
    
    	if( isset( $view_template ) and $view_template == "rss" ) { }
    
    	elseif ($subaction == "digest") $tpl->load_template('digest.tpl'); 
    
    	elseif( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
    
    
    б) ПОСЛЕ строки
    
            $sql_result = $db->query($sql_select);
    
    
    вставляем строку
    
            $lastrowdate = '';
    
    
    в) ПОСЛЕ строки
    
            $row['date'] = strtotime($row['date']);
    
    
    вставляем строки
    
    // digest Hack
    
    	if ($subaction == 'digest') {
    
    		$rowdate = date ("d/m/Y", $row['date']);
    
    		$rowtime = date ("H:i", $row['date']);
    
    		$tpl->set('{digest-time}', $rowtime);
    
    		if ($lastrowdate != $rowdate) {
    
    			$lastrowdate = $rowdate;
    
    			$digest_counter = 0;
    
    
    			$tpl->set('[digest-date]',"");
    
    			$tpl->set('[/digest-date]',"");
    
    
    			if ($config['allow_alt_url'] == "yes")
    
    				$tpl->set('{digest-date}',"<a href=\"".$config['http_home_url'].date('Y/m/d/', $row['date'])."\">{$rowdate}</a>");
    
    			else 
    
    				$tpl->set('{digest-date}',"<a href=\"$PHP_SELF?year=".date('Y/', $row['date'])."&month=".date('m/', $row['date'])."&day=".date('d/', $row['date'])."\">{$rowdate}</a>");
    
    		} else {
    
    	    $tpl->set_block("'\\[digest-date\\](.*?)\\[/digest-date\\]'si","");
    
    		}
    
    		$digest_counter++;
    
    		$tpl->set('{counter}',$digest_counter);
    
    	}
    
    // digest Hack
    
    
    7. Создаем НОВЫЙ файл \templates\<шаблон>\digest.tpl и вставляем в него строки
    
    [digest-date]<div class="digestdate">{digest-date}</div>[/digest-date]
    
    <div align="left" class="digesttext">{digest-time}  [full-link]<b>{title}</b>[/full-link]<span class="digest"> :: <b>{author}</b> :: [com-link]({comments-num})[/com-link]</span></div>
    
    

    8. Стили digestdate, digesttext и digest можно определить на свой вкус и цвет в файле \templates\<шаблон>\css\style.css.

    9. Заходим в админ-панель и в основных настройках ставим значение "Количество новостей в дайджесте".

    10. Теперь можно вызывать страничку дайджеста так :

    без ЧПУ - http://<site>/index.php?subaction=digest

    с ЧПУ - http://<site>/digest/

    • Поддерживаю 2
  10. Но я так и не понял, почему не обновилась база

    Если при обновлении версии есть проблемы с запросами, то при завершении обновления выводится количество упавших запросов к базе данных, уже это сообщение должно было насторожить.

×
×
  • Создать...