Стоит задача позволить пользователю выбрать набор тэгов из облака, и нажав на кнопку поиска перейти на страницу поиска по выбранным тегам.
Интерфейс простой — кнопка сброса выбора и поиск:
Вот что у меня получилось:
в шаблоне \controllers\tags\widgets\cloud\cloud.tpl.php изменяем:
<li <?php if($color){ echo 'class="colored"'; } ?> style="font-size: <?php echo $fs; ?>px;<?php if($color){ echo ' color: '.$color; } ?>"> <?php echo html_tags_bar($tag['tag']); ?> </li>
<li <?php if($color){ echo 'class="colored tag"'; } else { echo 'class="tag"';} ?> style="font-size: <?php echo $fs; ?>px;<?php if($color){ echo ' color: '.$color; } ?>" id="<?php echo $tag['tag']; ?>" onClick="select_tag(this.id); return false;"> <?php echo html_tags_bar($tag['tag']); ?> </li>
<div id="tag_choice_buttons" style="display:none"> <i class="mdi mdi-close" id="tag_choice_reset" onClick="reset_tags(); return false;"></i> <i class="mdi mdi-check" id="tag_choice_confirm" onClick="search_tags(); return false;"></i> </div>
<script> var selected_color='#C2F1B7'; var unselected_color='#F9F9F9'; var selected_tags = []; function select_tag(tag_id) { document.getElementById("tag_choice_buttons").style.setProperty('display', 'inline-block'); document.getElementById(tag_id).firstElementChild.style.setProperty('background-color', selected_color); selected_tags.push(tag_id); } function reset_tags() { var x = document.getElementsByClassName("tag"); var i; for (i = 0; i < x.length; i++) { x[i].firstElementChild.style.setProperty('background-color', unselected_color); } selected_tags = []; document.getElementById("tag_choice_buttons").style.setProperty('display', 'none'); } function search_tags() { var selected_tags_str = selected_tags.join('&'); var search_str = selected_tags_str.replace(/ /g,"+"); var selected_tags_encoded = encodeURI(search_str); var search_url = '/tags/search?q=' + selected_tags_encoded; //alert(search_url); location.replace(search_url); } </script>
/tags/search?q=предназначение+женщины&созидание&сотрудничество
в PHP я не силен, как бы это провернуть?
+Может быть будут какие-нибудь замечания по поводу js?