Как группировать материалы на сайтах Ucoz ?Мне очень тяжело было подобрать название для этой статьи, которое передаст суть написанного мною скрипта, поэтому просто расскажу. Скрипт написан исключительно для сайтов uCoz. Логику написания этого скрипта я описала в статье Удаление элемента на странице одного класса
Особенности
Применение
Минус скрипта и состоит в том, что он не совсем корректно работает в сочетании со скриптом пагинации (разбиение на страницы), и при наличии большого количества материалов, целесообразно использовать его первым способом.
Для установки данного скрипта нужно пройти несколько этапов. Я буду рассказывать на конкретном примере, а именно материалы на сайте uCoz всегда сверху, модуль Каталог сайтов.
<?if($FILTER1_VALUE$='ТОП новости')?><div class="top_news"><?endif?> <?if($FILTER1_VALUE$='Новости')?><div class="other_news"><?endif?>
В самом конце просто вставить закрывающий тег
</div>
В результате мы добавили каждый вид материала внутрь дополнительного блока <div>, при чем блокам задали определенные классы top_news и other_news. Если у вас больше значений фильтра, тогда по аналогии нужно создать больше блоков <div> и дать им названия.
<script text="javascript">
//Непосредственно скрипт
//Сначала нужно задать переменные
var topnews = (document.getElementsByClassName("top_news"));
var othernews = (document.getElementsByClassName("other_news"));
//По аналогии задайте больше переменных, если это необходимо.
//задать названия блоков, если это необходимо
topnews.name = ("<h2>ТОП новости</h2>");
othernews.name = ("<br><hr><br><br>");
// Функция, НЕ МЕНЯТЬ!!!!
var all = (document.getElementById("allEntries"));
function count (news) {
if (news[0]) {document.write(news.name)};
for(var i=0;i<news.length; i++) {
var par = news[0].parentNode;
all.removeChild(par);
document.write (par.outerHTML);
}
}
// действия. количество зависит от количества переменных
count (topnews); count (othernews);
// Если все таки getElementsByClassName поддерживается браузером,
// надобность в нашей реализации отпадает - будем использовать
// стандартную. Так как она в любом случае будет быстрее.
if(!document.getElementsByClassName) {
document.getElementsByClassName = function (class_name) {
// Получим коллекцию элементов тега body:
var elements = document.body.getElementsByTagName("*"),
length = elements.length,
out = [], i;
// Пройдёмся по ним... увы циклом:
for (i = 0; i < length; i += 1) {
// Поместим в результирующий массив элементы, содержащие требуемый класс:
if (elements[i].className.indexOf(class_name) !== -1) {
out.push(elements[i]);
}
}
return out;
};
}
</script> Теперь при добавлении нового материала, необходимо будет выбрать значение фильтра: ТОП новости или новости, и в зависимости от этого материал будет расположен в ТОПе или просто вместе со всеми новостями.
Вот такой получился способ. Он реализован на одном из моих сайтов, где нужно было разделить материалы по странам.
Я с удовольствием выслушаю все ваши замечания и предложения.
Если при открытие csv файла с помощью excel У все поехали ячейки - это простой… Read More
Простые шаги как происходит Загрузка проекта на Github и Автодеплой на сервер Сделайте работу проще! Read More
Миграция базы данных - помогают с этим библиотеки SQLAlchemy и Alembic. Read More
Основные Команды Git, которые точно пригодятся. Сохрани себе шпаргалку Git Read More
Установка PostgreSQL на сервер Read More
Как создать PrimaryKey в талице базы данных SQL [РЕШЕНО] Ошибка relation tablename_id_seq doesn't exist Read More