Пример #1
0
    private function eventGetArticle($item) {
        global $_LANG;

        $item_id = $item['id'];
        $tag_arr = explode(', ', cmsTagLine('content', $item_id, false));
        $id_target = array();

        // Получаем id назначения таких же тегов, не более пяти на каждый
        foreach ($tag_arr as $tag) {
            $sql = "SELECT item_id FROM cms_tags WHERE tag = '$tag' AND item_id<>'$item_id' AND target='content' LIMIT 5";
            $rs = cmsCore::c('db')->query($sql) ;
            if (cmsCore::c('db')->num_rows($rs)) {
                while ($tagitem = cmsCore::c('db')->fetch_assoc($rs)) {
                    $id_target[]= $tagitem['item_id'];
                }
            }
        }

        if (count($id_target)) {
            $id_target	= array_unique($id_target);
            $id_target 	= array_slice($id_target, 0, $this->config['P_LIMIT']);
            if ($this->config['P_UNSORT']) { shuffle($id_target); }

            $morecontent = '';
            foreach ($id_target as $n) {
                $con = cmsTagItemLink('content', $n);
                if ($con) {
                    $morecontent .= '<p>'. $con ."</p>";
                }
            }
            if ($morecontent) { $item['content'] .= '<h4>'. $_LANG['P_SIMILAR_ARTICLES'] .':</h4>'. $morecontent; }
        }
        
        return $item;
    }
Пример #2
0
    /**
     * Получает массив результатов поиска (постранично) для тегов
     * @return array $rs
     */
    public function searchByTag() {
        $sql = "SELECT *
                FROM cms_tags
                WHERE tag = '". cmsCore::c('db')->escape_string($this->query) ."' ORDER BY tag DESC LIMIT ". (($this->page-1)*$this->config['perpage']) .", ". $this->config['perpage'];

        $result = cmsCore::c('db')->query($sql);

        if (!cmsCore::c('db')->num_rows($result)) { return false; }

        $rs = array();

        $row = 1;
        while ($res = cmsCore::c('db')->fetch_assoc($result)) {
            if ($itemlink = cmsTagItemLink($res['target'], $res['item_id'])) {
                $res['itemlink'] = $itemlink;
                $res['tag_bar'] = cmsTagBar($res['target'], $res['item_id'], $this->query);
                if($row % 2 == 0) { $res['class'] = 'search_row2'; } else { $res['class'] = 'search_row1'; }
                $rs[] = $res;
                $row++;
            }
        }

        return $rs;
    }
Пример #3
0
 /**
  * Получает массив результатов поиска (постранично) для тегов
  * @return array $rs
  */
 public function searchByTag()
 {
     $sql = "SELECT *\n                FROM cms_tags\n                WHERE tag = '{$this->query}' ORDER BY tag DESC LIMIT " . ($this->page - 1) * $this->config['perpage'] . ", {$this->config['perpage']}";
     $result = $this->inDB->query($sql);
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     $rs = array();
     $row = 1;
     while ($res = $this->inDB->fetch_assoc($result)) {
         if ($itemlink = cmsTagItemLink($res['target'], $res['item_id'])) {
             $res['itemlink'] = $itemlink;
             $res['tag_bar'] = cmsTagBar($res['target'], $res['item_id'], $this->query);
             if ($row % 2 == 0) {
                 $res['class'] = 'search_row2';
             } else {
                 $res['class'] = 'search_row1';
             }
             $rs[] = $res;
             $row++;
         }
     }
     return $rs;
 }