Categories: uCoz

Как группировать материалы на сайтах uCoz

Как группировать материалы на сайтах Ucoz ?Мне очень тяжело было подобрать название для этой статьи, которое передаст суть написанного мною скрипта, поэтому просто расскажу. Скрипт написан исключительно для сайтов uCoz. Логику написания этого скрипта я описала в статье Удаление элемента на странице одного класса

✪ DEMO⇊ СКАЧАТЬ

Список материалов на сайтах uCoz отсортирован. Вы сами можете выбрать метод сортировки, но изменить порядок вывода материалов не можете. Именно поэтому я написала скрипт, который разбивает материалы на группы и каждой группе присваивает название. Данный скрипт работает только в тех модулях, где есть возможность создавать фильтры, а именно “Каталог файлов”, “Каталог сайтов”

Особенности

  • На странице списка материалов позволяет разбить материалы на группы
  • На странице списка материалов позволяет вывести названия групп

Применение

  • Можно использовать этот метод, для того, чтобы определенные материалы были всегда сверху.
  • Можно группировать материалы по желанию на определенное количество групп, но этот метод грамотно работает, если самих материалов будет не много, так как в сочетании со скриптом пагинации (разбиение на страницы) мой скрипт работает не совсем корректно

Минус скрипта и состоит в том, что он не совсем корректно работает в сочетании со скриптом пагинации (разбиение на страницы), и при наличии большого количества материалов, целесообразно использовать его первым способом.

Установка

Для установки данного скрипта нужно пройти несколько этапов. Я буду рассказывать на конкретном примере, а именно материалы на сайте uCoz всегда сверху, модуль Каталог сайтов.

  1. Первым делом нужно создать соответствующий фильтр и ввести минимум два значения. Назовем их “ТОП новости” и просто “Новости”.
  2. Нужно задать идентификатор всем материалам с данным фильтром с помощью атрибута class. Название классу выбираете любое, я назову первый класс – top_news, а простые новости – other_news.
    Панель управления – Дизайн – Управление дизайном (шаблоны) – Каталог статей – Вид материалов.
    В самом начале, перед всем содержимым вставляем следующий код
    <?if($FILTER1_VALUE$='ТОП новости')?><div class="top_news"><?endif?> 
    <?if($FILTER1_VALUE$='Новости')?><div class="other_news"><?endif?>

    В самом конце просто вставить закрывающий тег

    </div>

    В результате мы добавили каждый вид материала внутрь дополнительного блока <div>, при чем блокам задали определенные классы top_news и other_news. Если у вас больше значений фильтра, тогда по аналогии нужно создать больше блоков <div> и дать им названия.

  3. Последнее, что нужно сделать, это установить сам скрипт.
    Панель управления – Дизайн – Управление дизайном (шаблоны) – Каталог статей – Страница со списком материала раздела и (или) Страница со списком материала категории. Скрипт нужно вставить после
    $BODY$ и для данного примера он выглядит так:
    <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>

Теперь при добавлении нового материала, необходимо будет выбрать значение фильтра: ТОП новости или новости, и в зависимости от этого материал будет расположен в ТОПе или просто вместе со всеми новостями.

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

Я с удовольствием выслушаю все ваши замечания и предложения.

Share
Tags: uCoz группы Материалы разделить сайтах

Recent Posts

  • Excel

Как правильно открыть CSV с многострочными ячейками в Excel

Если при открытие csv файла с помощью excel У все поехали ячейки - это простой… Read More

% дней назад
  • Python

Загрузка проекта на Github и Автодеплой на сервер

Простые шаги как происходит Загрузка проекта на Github и Автодеплой на сервер Сделайте работу проще! Read More

% дней назад
  • Python
  • Полезная минутка

Миграция базы данных в проектах Python

Миграция базы данных - помогают с этим библиотеки SQLAlchemy и Alembic. Read More

% дней назад
  • Python

Команды Git – Шпаргалка по основным командам Git

Основные Команды Git, которые точно пригодятся. Сохрани себе шпаргалку Git Read More

% дней назад
  • Python

Установка PostgreSQL на сервер Ubuntu и подключение через pgAdmin

Установка PostgreSQL на сервер Read More

% дней назад
  • Полезная минутка

Как создать PrimaryKey для таблицы в PostgreSQL

Как создать PrimaryKey в талице базы данных SQL [РЕШЕНО] Ошибка relation tablename_id_seq doesn't exist Read More

% дней назад