Допустим на сайте есть большое количество категорий, в который бывает по несколько новостей в день. Соответственно, на главной странице, где публикуются все новости из всех категорий, новостей бывает несколько десятков.
Как можно отфильтровать необходимые пользователю категории, допустим 14, 25, 26 и 38? Возможно это будет фильтроваться на какой-то отдельной странице.
Не совсем понимаю в отдельных кусках кода, если можно законченное решение,
а это /seg_1/seg_2/14|25|26|38/ понравилось, сразу не догадался, что можно ведь вывести категории таким образом
Это получается по методу post, т.е. в сегментах ничего не будет.
Как сделать, чтобы с одной страницы (где стоят чекбоксы для выбора категорий), происходил переход на другую страницу, где формируются новости, в соответствии с /seg_1/seg_2/14|25|26|38/
Понимаю, что это просто, но пока не соображу.
Это получается по методу post, т.е. в сегментах ничего не будет.
Как сделать, чтобы с одной страницы (где стоят чекбоксы для выбора категорий), происходил переход на другую страницу, где формируются новости, в соответствии с /seg_1/seg_2/14|25|26|38/
Понимаю, что это просто, но пока не соображу.
1) С помощью javascript на стороне клиента, т.е. обрабатываем форму с помощью javascript и формируем адрес страницы /seg_1/seg_2/14|25|26|38/ и с помошью location отправляем пользователя.
2) Можно также создать в файл, например redirect.php, его сделать “action” в форме запроса и в нем обработать форму и сделать Header(“location: seg_1/seg_2/14|25|26|38/”);
P.S.
А самое главное включать php в шаблонах ненадо.
Это получается по методу post, т.е. в сегментах ничего не будет.
Как сделать, чтобы с одной страницы (где стоят чекбоксы для выбора категорий), происходил переход на другую страницу, где формируются новости, в соответствии с /seg_1/seg_2/14|25|26|38/
Понимаю, что это просто, но пока не соображу.
1) С помощью javascript на стороне клиента, т.е. обрабатываем форму с помощью javascript и формируем адрес страницы /seg_1/seg_2/14|25|26|38/ и с помошью location отправляем пользователя.
2) Можно также создать в файл, например redirect.php, его сделать “action” в форме запроса и в нем обработать форму и сделать Header(“location: seg_1/seg_2/14|25|26|38/”);
P.S.
А самое главное включать php в шаблонах ненадо.
Опять-таки интересует конечное решение, которое может пригодиться не только мне, но и другим в будущем.
Сорее всего не будет коненечного решения, т.к. данный функционал не поддается унификации, т.е. одним законченым решением не получится решить несколько задача, все будет зависеть от конкретной задачи.
Сорее всего не будет коненечного решения, т.к. данный функционал не поддается унификации, т.е. одним законченым решением не получится решить несколько задача, все будет зависеть от конкретной задачи.
я описал конкретную задачу, куда еще конкретнее ))
ну если исходить из того что в подобной ситуации тебе форму всеравно прийдется реализовывать, то я бы выбрал POST-метод.
ну и + URL
Например если у нас скрипт выдал много результатов и их надо разбить на страницы, то передавать сам запрос будем через URL используя переменную, определенную в POST’е
Соответственно формируем URL так: /site/search/34|3|9|21|/P1
Конечная реализация:
<form action="{path=site/search}" method="post"> <div>Отмерьте галочками категории для отфильтрации:</div> {exp:weblog:categories weblog="weblog" style="linear"} <input type="checkbox" name="category[]" value="{category_id}" /> {category_name}<br /> {/exp:weblog:categories}
<input type="submit" value="Поиск" /> </form>
<?php /** Для возможности дальнейшего усложнения вновь построенной поисковой системы я люблю восстанавливать массив POST, ** Помним что $_POST это всего-лишь переменная): **/ if( ! isset($_POST['category']) ) { $_POST['category'] = Array(); $seg = explode("|", "{segment_3}"); // Замечательный EE сегменты всегда обрабатывает в первую очередь. foreach( $seg as $s ) if( is_numeric($s) ) $_POST['category'][] = $s; // Маленькая защита }