avatar
На сайте уже 595 пользователей

Список из 10 часто используемых слов в поиске отображается под полем поиска

gegelga(1 год назад)

И снова для вас очень полезная вещь! У меня на сайте уже давно была идея сделать возможность просмотра списка часто используемых слов под полем поиска.

Как это работает? Клиенты задают на вашем сайте слова в поле поиска, эти слова сохраняются в файле search_history.dat в папке mod.search. Слова, которые часто повторяются, добавляются в список из 10 слов на сайте под полем поиска. На эти слова можно нажать, и сразу же будет осуществлен поиск по выбранному слову.

Что нужно сделать, в модуле mod.search создаём файл search_history.php с кодом:

<?php

// Path to the search history file

$history_file = './modules/mod.search/search_history.dat';

// If a search is performed, write the search term to the file

if (isset($_POST['q'])) {

// Sanitize and validate search term

$search_term = filter_input(INPUT_POST, 'q', FILTER_SANITIZE_STRING);

if (empty($search_term)) {

// Invalid search term, do not proceed

die('Invalid search term');

}

$search_date = date('Y-m-d H:i:s');

$entry = $search_term . '|' . $search_date . "\n";

// Use secure file permissions to prevent unauthorized access

if (!is_writable($history_file) || !is_readable($history_file)) {

die('Search history file not accessible');

}

file_put_contents($history_file, $entry, FILE_APPEND);

// Limit number of entries to 100

$lines = file($history_file);

if (count($lines) > 100) {

$new_lines = array_slice($lines, -100);

file_put_contents($history_file, implode('', $new_lines));

}

}

// Limit number of entries to 10 and prevent duplicates

$lines = file($history_file);

$search_count = array_count_values($lines);

arsort($search_count);

// Display popular search terms

echo '<div class="popular-searches">';

echo '<p>Часто используемые слова в поиске:</p>';

echo '<ul>';

$popular_search_terms = array();

foreach ($search_count as $term => $count) {

if (count($popular_search_terms) >= 10) {

break;

}

$search_term_parts = explode('|', $term);

$search_term = $search_term_parts[0];

if (!in_array($search_term, $popular_search_terms)) {

$popular_search_terms[] = $search_term;

echo '<li><a href="/search?q=' . $search_term . '" class="search-term">' . $search_term . '</a></li>';

}

}

echo '</ul>';

echo '</div>';

?>

В шаблоне под формой поиска размещаете это код:

<?php

$history_file = './modules/mod.search/search_history.php';

include($history_file);

?>

Добавляем стили КСС для вывода списка слов:

/* Liste der meist gesuchten Wörter-Stile */

.popular-searches {

margin-top: 20px;

}

.popular-searches p {

font-weight: bold;

margin-bottom: 5px;

}

.popular-searches ul {

list-style: none;

padding: 0;

margin: 0;

}

.popular-searches li {

display: inline-block;

margin-right: 10px;

}

.popular-searches a {

color: #0077cc;

text-decoration: none;

}

.popular-searches a:hover {

text-decoration: underline;

}

Пользуйтесь и не забудьте указать при пользовании обратную ссылку на мой сайт https://bi-verleih.de/

Вернуться назад к другим темам

Ответы пользователей

Чтобы оставлять сообщения необходимо авторизоваться
Нет ни одного сообщения
Вступайте в нашу группу https://vk.com/myengine