Вывод количества документов в категории

Делимся интересными и полезными решениями
Аватара пользователя
duncan
Наш человек
Сообщения: 238
Зарегистрирован: 24 авг 2015, 22:44
Откуда: місто Лева
Благодарил (а): 35 раз
Поблагодарили: 14 раз

Вывод количества документов в категории

Сообщение duncan » 08 янв 2017, 13:27

используя динамический запрос, создаёте категории и подключаете их в документах
например, рубрика "новости" и рубрика "категории новостей"

Изображение

если поле "документ из рубрики"

в рубрике "категории новостей" добавляем поле "количество новостей", куда будет передаваться значение

в рубрике "новости" добавляем в "Код, выполняемый после сохранения документа":

Код: Выделить всё

<?
   // ID поля, на которое равняемся (Документ из рубрики)
   $fld_id = 4;

   // ID поля куда будем записывать
   $cat_fld_id = 10;

   // Если поле пустое, то ничего не делаем
   if (empty($data['feld'][$fld_id]))
      return false;

   $doc_id = $data['feld'][$fld_id];

   $sql = "
      SELECT
         COUNT(d.Id)
      FROM
         " . PREFIX . "_documents AS d
      LEFT JOIN
         " . PREFIX . "_document_fields AS df
         ON df.document_id = d.Id
      WHERE
         d.rubric_id = '" . $rubric_id . "'
      AND d.document_status = '1'
      AND d.document_deleted = '0'
      AND (
         df.rubric_field_id = '".$fld_id."'
         AND (df.field_value = '".$doc_id."')
      )
   ";
   // Получаем кол-во документов
   $count = $AVE_DB->Query($sql)->GetCell();
   
   // Получаем всю информацию о докумнете
   $doc = get_document($doc_id);
   // Присваиваем полю новое число
   $doc['feld'][$cat_fld_id] = $count;

   $this->documentSave(
      $doc['rubric_id'],      // ID Рубрики
      $doc_id,            // ID сохраняемого документа
      $doc,               // Дата
      false,               // Создавать не используемы поля
      false,               // Использовать код рубрики
      false,               // Создавать ревизии
      false               // Писать лог
   );
      
   unset($doc_id, $doc);
?>


в динамическом запросе:

Изображение

Аватара пользователя
duncan
Наш человек
Сообщения: 238
Зарегистрирован: 24 авг 2015, 22:44
Откуда: місто Лева
Благодарил (а): 35 раз
Поблагодарили: 14 раз

Вывод количества документов в категории

Сообщение duncan » 08 янв 2017, 13:42

если поле "Документы из рубрик"

тогда код такой:

Код: Выделить всё

<?
   // ПОЛЕ - Документы из рубрик

   // ID поля, на которое равняемся (Документы их рубрик)
   $fld_id = 6;

   // ID поля куда будем записывать
   $cat_fld_id = 10;

   // Если поле пустое, то ничего не делаем
   if (empty($data['feld'][$fld_id]))
      return false;

   // Перебираем выбранные документы из поля
   foreach($data['feld'][$fld_id] AS $k => $v)
   {
      $doc_id = $v['value'];

      $sql = "
         SELECT
            COUNT(d.Id)
         FROM
            " . PREFIX . "_documents AS d
         LEFT JOIN
            " . PREFIX . "_document_fields AS df
            ON df.document_id= d.Id
         WHERE
            d.rubric_id = '" . $rubric_id . "'
         AND d.document_status = '1'
         AND d.document_deleted = '0'
         AND (
            df.rubric_field_id = '".$fld_id."'
            AND (df.field_value LIKE '%|".$doc_id."|%')
         )
      ";
      // Получаем кол-во документов
      $count = $AVE_DB->Query($sql)->GetCell();

      // Получаем всю информацию о докумнете
      $doc = get_document($doc_id);
      // Присваиваем полю новое число
      $doc['feld'][$cat_fld_id] = $count;

      $this->documentSave(
         $doc['rubric_id'],      // ID Рубрики
         $doc_id,            // ID сохраняемого документа
         $doc,               // Дата
         false,               // Создавать не используемы поля
         false,               // Использовать код рубрики
         false,               // Создавать ревизии
         false               // Писать лог
      );

      unset($doc_id, $doc);
   }
?>

Аватара пользователя
duncan
Наш человек
Сообщения: 238
Зарегистрирован: 24 авг 2015, 22:44
Откуда: місто Лева
Благодарил (а): 35 раз
Поблагодарили: 14 раз

Вывод количества документов в категории

Сообщение duncan » 08 янв 2017, 13:43

если поле "Документ из рубрики (Чекбокс)"

Код: Выделить всё

<?
   // ПОЛЕ - Документ из рубрики (Чекбокс)

   // ID поля, на которое равняемся (Документ из рубрики)
   $fld_id = 6;

   // ID поля куда будем записывать
   $cat_fld_id = 10;

   // Если поле пустое, то ничего не делаем
   if (empty($data['feld'][$fld_id]))
      return false;

   // Перебираем выбранные документы из поля
   foreach($data['feld'][$fld_id] AS $k => $v)
   {
      $doc_id = $v;

      $sql = "
         SELECT
            COUNT(d.Id)
         FROM
            " . PREFIX . "_documents AS d
         LEFT JOIN
            " . PREFIX . "_document_fields AS df
            ON df.document_id = d.Id
         WHERE
            d.rubric_id = '" . $rubric_id . "'
         AND d.document_status = '1'
         AND d.document_deleted = '0'
         AND (
            df.rubric_field_id = '".$fld_id."'
            AND (df.field_value LIKE '%|".$doc_id."|%')
         )
      ";
      // Получаем кол-во документов
      $count = $AVE_DB->Query($sql)->GetCell();

      // Получаем всю информацию о докумнете
      $doc = get_document($doc_id);
      // Присваиваем полю новое число
      $doc['feld'][$cat_fld_id] = $count;

      $this->documentSave(
         $doc['rubric_id'],      // ID Рубрики
         $doc_id,            // ID сохраняемого документа
         $doc,               // Дата
         false,               // Создавать не используемы поля
         false,               // Использовать код рубрики
         false,               // Создавать ревизии
         false               // Писать лог
      );

      unset($doc_id, $doc);
   }
?>


Вернуться в «Интересные решения»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость