Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

фильтр категорий блога


Recommended Posts

Всем добрый день, возникла необходимость написать простенький ajax фильтр, для фильтрации категорий блога. То есть имеется блог, в нем идут две основные категории, в которых может находится произвольное количество субкатегорий. в  статьи могут входить и в одну и из субкатегорий, во фронте нужно сделать фильтрацию по этим субкатегориям, по каждой отдельно или по нескольким сразу.  получить список статей через model_blog_article->getArticles() я так понимаю не получится, потому что у статей могут быть несколько категорий, решил дописать собственную функцию в модели getArticlesByFilter() аргументом в которую буду передавать массив категорий (либо одна, либо 2) не могу сообразить, как в организовать для всего этого sql- запрос, что бы выдавал мне список нужный статей. Я предполагаю как-то так:
 

  public function getArticlesByFilter($filers){
        $data_article = array();
        $sql = "SELECT a.article_id " . " FROM " . DB_PREFIX . "article a";
        foreach ($filters as $filter) {  // здесь обходим каждый элемент массива аргументов
          sql.= 
            ....
            }
         ...// тут заполняем массив $data_article и его же возвращаем

Но вот додумать не получается. Направте пожалуйста в нужную сторону

Змінено користувачем Linkoln
Надіслати
Поділитися на інших сайтах


Короч попробовал вот так:

 public function getArticlesByFilter($data){
        $sql = "SELECT a.article_id " . " FROM " . DB_PREFIX . "article a";
        $sql .= " LEFT JOIN " . DB_PREFIX . "article_to_blog_category a2c ON (a.article_id = a2c.article_id)";
        $sql .= " LEFT JOIN " . DB_PREFIX . "article_description ad ON (a.article_id = ad.article_id) WHERE ad.language_id = '" . (int)$this->config->get('config_language_id')  ."' AND a.status = '1' ";
        $sql .= " AND a2c.blog_category_id IN (" . implode(', ', $data) . ")";       
        
         $article_data = array();
        $query = $this->db->query($sql);

        foreach ($query->rows as $result) {
            $article_data[$result['article_id']] = $this->getArticle($result['article_id']);
        }

        return $article_data;
       
    }

пока тестирую

Надіслати
Поділитися на інших сайтах


Подскажите кто-нибудь, как добавить в конец запроса, варианты ключей переданного в аргументе массива

Надіслати
Поділитися на інших сайтах


ну вот из этой таблицы подскажите, как выбрать article_id, blog_category_id у которой равен сразу 73 и 70 сразу

Снимок экрана 2020-08-03 в 17.59.12.png

Змінено користувачем Linkoln
Надіслати
Поділитися на інших сайтах


наверное так?

select article_id  from table where blog_category_id in (70, 73)

 

блин. не тот запрос

 

Змінено користувачем openprice
упс, не правильно прочитал условие
Надіслати
Поділитися на інших сайтах


6 minutes ago, openprice said:

наверное так?


select article_id  from table where blog_category_id in (70, 73)

 

блин. не тот запрос

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

 

 

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах


Я решил сделать фильтр через категории, то есть добавляем к статье категорию, через стандартный функционал блога, и потом уже, во фронте, через ajax фильтруем по-этим категориям. Получается, что у одной статьи могло быть одна и больше категорий, вот я и не могу сообразить, как составить sql для того, что бы выбрать article_id у которой blog_category_id совпадает сразу с несколькими переданными значениями, например, как получить все статьи у которых blog_category_id = 73 & 70

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.