Création forum

Par samas92i, il y a 13 ans


Bonjours, bonsoir

J'aimerais savoir comment peux ton crée un forum un peux comme ici ? Car j'ai bien du mal.

Merci d'avance.

7 réponses

SwithFr, il y a 13 ans

En regardant les tutos sur cakePhp et un peu beaucoup d'huile de coude, tu devrais y arriver.
Sinon pour les forums il existe des CMS qui te permettent déjà pas mal de personnalisation.

samas92i, il y a 13 ans

Le problème et que je n'arrive pas à récupéré les Forums, les Sous-Forums, le dernier poste et le nombre de post en même temps.

Grafikart, il y a 13 ans

Si tu n'y arrive pas en plusieurs requêtes fais en plusieurs :D

samas92i, il y a 13 ans

J'ai du mal à en faire 1, alors plusieurs

SwithFr, il y a 13 ans

Je pense qu'il voulait dire que plutôt de faire une requête pour tout en même temps, n'en fait qu'une pour chaque.

justclara42, il y a 13 ans

salut, voilà personnellement comment je procède pour mon forum:

public function index() {
        $this->Forum->recursive = 0;
        $this->set('forums', $this->Forum->find('all'));
        //$this->set('forums', $this->paginate());
        $year = date('Y');
        $month = date('m');
        $day = date('d');
        $last_day = date('d')-1;
        $today = $year.'-'.$month.'-'.$day;
        $lastday = $year.'-'.$month.'-'.$last_day;
        $total = $this->Forum->Topic->find('count', array('conditions' => array('forum_id' => 'id')));
        $total_forums = $this->Forum->find('count', array('conditions' => array('parent_id !=' => 0)));
        $total_section = $this->Forum->find('count', array('conditions' => array('parent_id' => 0)));
        $total_users = $this->Forum->Topic->User->find('count');
        $total_topic = $this->Forum->Topic->find('count', array('conditions' => array('Topic.parent_id'=> '0')));
        $last_topic = $this->Forum->Topic->find('all', array('order' => array('Topic.created' => 'desc'),'limit' => 5));
        $total_reply = $this->Forum->Topic->find('count', array('conditions' => array('Topic.parent_id !=' => '0')));
        $last_topic_today = $this->Forum->Topic->find('count', array('conditions' => array('Topic.parent_id' => '0','Topic.created' => $today)));
        $total_reply_today = $this->Forum->Topic->find('count', array('conditions' => array('Topic.parent_id !=' => '0','Topic.created' => $today)));
        $last_topic_lastday = $this->Forum->Topic->find('count', array('conditions' => array('Topic.parent_id' => '0','Topic.created' => $lastday)));
        $total_reply_lastday = $this->Forum->Topic->find('count', array('conditions' => array('Topic.parent_id !=' => '0','Topic.created' => $lastday)));
        $total_message = $this->Forum->Topic->find('count');
        $last_member = $this->Forum->Topic->User->find('first', array('order' => array('User.created' => 'desc')));
        $this->set(compact('forum','forums','total','total_message','total_topic','total_reply','total_forums','total_section','total_users','last_topic'));
        $this->set(compact('last_topic_today','total_reply_today','last_topic_lastday','total_reply_lastday','last_member'));
    }

c'est peux etre pas la meilleure de façons, mais ça te donnera une idée ;)

djtec, il y a 13 ans

14 requête c'est quand même beaucoup.

Voici comment moi j'ai fait:

$categories = $this->Forum->ForumCategory->find('all', array(
            'conditions' => array('ForumCategory.parent_id' => 0)
        ));
        $forums = $this->Forum->ForumCategory->find('all', array(
            'conditions' => array('ForumCategory.parent_id !=' => 0),
            'contain' => array('LastTopic', 'LastPost', 'LastUser', 
                'TopicView' => array(
                    'conditions' => array('TopicView.user_id' => $this->Auth->user('id'))
                )
            )
        ));
        $this->set(compact('categories', 'forums'));

Avec des belogsTo dans les models et le tour est joué