Вход • Регистрация

Счетчик просмотров в списке статей

  • 04 февраля 2016 г.
  • Подскажите пожалуйста как вывести счетчик просмотров в СПИСКЕ статей?
  • 08 февраля 2016 г.
  • Вот так не выходит :
    Код
    echo '<div>'.$this->diafan->_('Просмотров').': '.$row["counter"].'</div>';
    • 08 февраля 2016 г.
    • Все проще. В административной части сайта выбираем раздел "Статьи", далее идем в "Настройки модуля" и отмечаем пункт "Выводить счетчик на сайте". Вот и все, успехов.
      • 08 февраля 2016 г.
      • Галочка стоит! НО ничего не выводит... вернее выводит количество просмотров на странице самой статьи, а вот в списке статей не выводит. Думаю и галочка влияет на вывод счетчика именно на странице статьи отдельной.
        • 08 февраля 2016 г. , редакция: 08 февраля 2016 г.
        • Для страницы статьи и для страницы списка статей в model формируются значения. Соответственно у Вас не выводится значение на страницы списка статей, т.к. это значение в model не было передано. Вам нужно по аналогии с функцией подготовки значений для страницы статьи скорректировать функцию подготовки значений для страницы списка статей. Дело минутное, но у меня сейчас в распоряжении только телефон. А на нем сложно вывести сюда нужное Вам решения. В принципе я уверен, что у Вас получится сделать это самостоятельно. Если нет, пишите постараюсь помочь или кто-то еще поможет.
          • 10 февраля 2016 г.
          • Ну я так и думал тоже, подобные задачи решал в других модулях. Когда нужно было вывести какие-нибудь значения в списке или в элементе, то в model в соответствующих функциях в запросах к БД добавлял необходимые мне значения...

            А тут как то по другому... не как обычно... даже запутался и не понимаю. Получается на странице элемента количество просмотров выводится вот так $result["counter"], НО в моделе вообще нет нигде counter. Есть только в функции элемента вот такая запись $this->counter_view(); - это всё что я вижу на тему counter. Я так понимаю, что это функция такая... но где она, и как работает и как вывести счетчик в список так и не понял :(.

            Виталий, если можете, то прошу вас помочь :)

            • 10 февраля 2016 г. , редакция: 10 февраля 2016 г.
            • В файл clauses.model.php добавте следующую функцию
              Код
              function get_counter_view($element_id)
              {
              if (! $element_id)
              {
              return 0;
              }
              if($this->diafan->configmodules('counter'))
              {
              $counter = DB::query_fetch_array("SELECT id, count_view FROM {%s_counter} WHERE element_id=%d LIMIT 1", $this->diafan->_site->module, $element_id);
              if($counter)
              {
              if(empty($_SESSION[$this->diafan->_site->module."_view"][$element_id]))
              {
              $_SESSION[$this->diafan->_site->module."_view"][$element_id] = 1;
              DB::query("UPDATE {%s_counter} SET count_view=%d WHERE id=%d LIMIT 1", $this->diafan->_site->module, ++$counter["count_view"], $counter["id"]);
              }
              }
              else
              {
              DB::query("INSERT INTO {%s_counter} (count_view, element_id) VALUES (1, %d)", $this->diafan->_site->module, $element_id);
              $counter["count_view"] = 1;
              $_SESSION[$this->diafan->_site->module."_view"][$element_id] = 1;
              }
              if($this->diafan->configmodules('counter_site'))
              {
              return $counter["count_view"];
              }
              }
              else return 0;
              }


              Теперь ей можно воспользоваться так, как Вам угодно. Т.е. в параметр функции $element_id записываем id конкретной статьи и получаем на выходе количество просмотров. При этом
              Цитата
              Количество просмотров на сайте текущей статьи. Статистика ведется и параметр выводится, если в настройках модуля отмечена опция «Подключить счетчик просмотров».


              Пример:
              ПЕРЕМЕННАЯ_ДЛЯ_КОЛИЧЕСТВА_ПРОСМОТРОВ = get_counter_view(ЗДЕСЬ_id_СТАТЬИ);
              • 10 февраля 2016 г. , редакция: 10 февраля 2016 г.
              • Виталий, спасибо за ответ, но видать я не то делаю что-то...
                Вставил функцию в model... затем во вьюхе списка указал:
                Код
                $cnt = get_counter_view($result["id"]);
                echo 'Просмотров'.$row["name"].'';

                Выдает ошибку:
                Call to undefined function get_counter_view()
                ...\modules\clauses\views\clauses.view.list.php:198


                Объясните пожалуйста "на пальцах" что не так? Просто я не спец... учусь пока :)
            • 10 февраля 2016 г. , редакция: 13 октября 2016 г.
            • Цитата
              Вставил функцию в model... затем во вьюхе списка указал:

              Нее. Все сначало.
              Берем файл clauses.model.php и вставляем код
              Код
              // это то, что добавили
              function get_counter_view($element_id)
              {
              if (! $element_id)
              {
              return 0;
              }
              $counter = DB::query_fetch_array("SELECT id, count_view FROM {%s_counter} WHERE element_id=%d LIMIT 1", "clauses", $element_id);
              return intval(! $counter || ! $counter["count_view"] ? 1 : $counter["count_view"]);
              }

              Далее в том же файле ищем функцию
              Код
              private function list_category_elements_query($time, $cat_ids){ ... }

              и излогаем ее так
              Код
              private function list_category_elements_query($time, $cat_ids)
              {
              $rows = DB::query_range_fetch_all(
              "SELECT e.id, e.[name], e.timeedit, e.[anons], e.site_id, e.created FROM {clauses} AS e"
              .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
              ." INNER JOIN {clauses_category_rel} AS r ON e.id=r.element_id AND r.cat_id IN (%s)"
              ." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
              ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
              .($this->diafan->configmodules('where_access_element') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
              ." GROUP BY e.id ORDER BY e.sort DESC, e.id DESC",
              implode(',', $cat_ids), $time, $time, $time,
              $this->diafan->_paginator->polog, $this->diafan->_paginator->nastr
              );

              // это то, что добавили
              foreach ($rows as $key => $r_w)
              $rows[$key]["counter"] = $this->get_counter_view($r_w["id"]);

              return $rows;
              }

              Затем в том же файле ищем функцию
              Код
              private function list_query($time){ ... }

              и излагаем ее так
              Код
              private function list_query($time)
              {
              $rows = DB::query_range_fetch_all(
              "SELECT e.id, e.created, e.[name], e.[anons], e.timeedit, e.site_id FROM {clauses} AS e"
              .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
              ." WHERE e.[act]='1' AND e.trash='0' AND e.site_id=%d AND e.created<%d"
              ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
              .($this->diafan->configmodules('where_access_element') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
              ." GROUP BY e.id ORDER BY e.sort DESC, e.id DESC",
              $this->diafan->_site->id, $time, $time, $time,
              $this->diafan->_paginator->polog, $this->diafan->_paginator->nastr
              );

              // это то, что добавили
              foreach ($rows as $key => $r_w)
              $rows[$key]["counter"] = $this->get_counter_view($r_w["id"]);

              return $rows;
              }

              Затем в том же файле ищем функцию
              Код
              first_page_elements_query($time, $cat_ids){ ... }

              и излагаем ее так
              Код
              private function first_page_elements_query($time, $cat_ids)
              {
              $rows = DB::query_range_fetch_all(
              "SELECT e.id, e.[name], e.timeedit, e.[anons], e.site_id, e.created FROM {clauses} AS e"
              ." INNER JOIN {clauses_category_rel} AS r ON e.id=r.element_id"
              .($this->diafan->configmodules('where_access_element') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
              ." WHERE r.cat_id IN (%s) AND e.[act]='1' AND e.trash='0' AND e.created<%d"
              ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
              .($this->diafan->configmodules('where_access_element') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
              ." GROUP BY e.id ORDER BY e.sort DESC, e.id DESC",
              implode(',', $cat_ids), $time, $time, $time, 0, $this->diafan->configmodules("count_list")
              );

              // это то, что добавили
              foreach ($rows as $key => $r_w)
              $rows[$key]["counter"] = $this->get_counter_view($r_w["id"]);

              return $rows;
              }

              Теперь во вьюхах вывода первой страницы статей, страницы списка статей стало доступено, как и во вьюхе страницы конкретной статьи, значение ["counter"]
              Пример, берем вьюху страницы списка статей clauses.view.list.php и в определенные строчки вносим такие изменения
              Код
              //статьи подкатегории
              if (! empty($child["rows"]))
              {
              foreach ($child["rows"] as $row)
              {
              echo '<div class="block">';
              ...
              // это то, что добавляем в конец данного цикла перед последним закрывающим тегом div
              echo '<div>Количество просмотров: '.$row["counter"].'</div>';
              echo '</div>';
              }
              }

              Тоже в цикле
              Код
              //статьи
              if (! empty($result["rows"]))
              {
              foreach ($result["rows"] as $row)
              {
              echo '<div class="block">';
              ...
              // это то, что добавляем в конец данного цикла перед последним закрывающим тегом div
              echo '<div>Количество просмотров: '.$row["counter"].'</div>';
              echo '</div>';
              }
              }

              Успехов.
              • 10 февраля 2016 г.
              • СПАСИБО тебе добрый человек!:))) Получилось в списке появились просмотры... а вот в блоке нет :/
              • 11 октября 2016 г. , редакция: 13 октября 2016 г.
              • Внес изменения в код своего сообщения выше по тексту.
            • 10 февраля 2016 г. , редакция: 10 февраля 2016 г.
            • Цитата
              ... а вот в блоке нет :/
              Максим (web-prosto), я уверен, что для Вас web - это prosto. Имейте меру в своих желаниях. Может быть Вам сюда http://pro.user.diafan.ru/ или сюда http://www.prosto-web.pro/uslugi
              • 10 февраля 2016 г.
              • мда... сарказм пошёл теперь.
                Виталий, я периодически обращаюсь сюда http://pro.user.diafan.ru... многие моменты и сам делаю пользуясь документацией, информацией с форума, ТП иногда подсказывает, а также по аналогии с тем, как делали мне, когда обращался сюда http://pro.user.diafan.ru. Да, я далеко не спец в этой области, но потихоньку растём.
                Цитата
                Имейте меру в своих желаниях.

                Виталий, я не думаю, что моя мера желаний в данной теме настолько была велика или вышла за рамки. Я же не прошу: "О! А тогда ещё мне напишите как каталог вывести в статье, и чтобы слайдеры были и ...".
                Я просил в рамках темы, т.е. про тот же счетчик, но еще и в блоке. Согласен, в начале про блок ничего не говорилось, но я предполагал, что в блоке будет тоже самое что и в списке - следующий раз буду учитывать такие моменты в своих вопросах.
                Но видать у вас другое мнение по поводу меры желаний.

                По поводу ника :) Ок, понял, что теперь нужно завести себе второй аккаунт на диафане что то типа "ПРОСТО ЧАЙНИК", чтобы не было желания у вас, да и ещё у кого нибудь "подкалывать" меня. Честно говоря у меня уже была такая мысль, а то смотрю на форуме кому-то на несколько страниц разжевывают, а кому то вообще ничего не отвечают. Вот и закралась мысль о том, что некоторые мои вопросы вообще без ответа скорее всего из-за ника :)

                Ну всё равно, Виталий, без сарказма и подкола - Спасибо ещё раз вам за вашу помощь! Вы единственный, кто мне тут вообще ответил, и не просто ответил, а по делу и подробно! )
              • 10 февраля 2016 г. , редакция: 10 февраля 2016 г.
              • Цитата
                мда... сарказм пошёл теперь

                Не сарказм! Я привел подробное описание, включая вывод списка с категориями, без категории, вывод на первой странице. То есть три примера, а мог ограничится лишь одним примером - вывод в списке без категорий (который Вы изначально хотели). Если Вам нужно вывести в блоке - это аналогично этим примерам. Учитывая, что Вы разрабатываете сайты, получая за это деньги, то сложность такой задачи после приведенных примеров для Вас равна нулю. Отсюда сделал вывод, что Вам лень подумать и вникнуть, а проще заниматься копированием. Если Вы хотя бы попытались написать вывод в блоке, но у Вас не вышло и привели свой пример с ошибкой, то не вопрос, многие Вам бы помогли. А так, вывод: Вам лень. Но раз лень, пусть так и будет.
                Попробуйте сделать самостоятельно, не получится - пишите. Помогут.
  • 10 февраля 2016 г. , редакция: 10 февраля 2016 г.
  • Да в том то и дело что не лень, обращаюсь за помощью на форум или в ТП только тогда, когда уже сам пытался по инструкции, по темам форума и т.д. И когда вижу, что не получается, или не понимаю, не сходится... то обращаюсь за помощью.
    Можно конечно разбираться неделями, месяцами, годами :)... и добиться результата, но думаю форум для разработчиков для того и нужен, чтобы тут делиться опытом, подсказывать, помогать. Пока от меня помощи мало кончено, больше беру от форума, чем даю, НО это пока. Когда мои задачи/вопросы решаются (самостоятельно, либо с помощью ТП, либо за платно или еще как-нибудь), то обязательно на форуме выкладываю решение/итог, чтобы кому то когда то это помогло.
    Ладно, а то уже от темы отошли тут... пойду дальше пытаться разбираться... когда решится задача, то отпишусь и тут...
    • 30 сентября 2016 г.
    • Вы разобрались с выводом счётчика в блок? А то у меня тоже возникла такая проблема. Если разобрались, пожалуйста выложите сюда результат, очень поможете.
      • 11 октября 2016 г. , редакция: 13 октября 2016 г.
      • Эхх. Что с Вами будешь делать. Думал Максим (web-prosto) отпишется, что решил.
        Цитата
        Ладно, а то уже от темы отошли тут... пойду дальше пытаться разбираться... когда решится задача, то отпишусь и тут...
        Наверно забыл.

        Продолжаю. Берем файл clauses.model.php, ищем функцию
        Код
        public function show_block($count, $site_ids, $cat_ids, $sort, $images, $images_variation, $tag){ ... }
        и излагаем ее вот так
        Код
        public function show_block($count, $site_ids, $cat_ids, $sort, $images, $images_variation, $tag)
        {
        $time = mktime(23, 59, 0, date("m"), date("d"), date("Y"));

        if($sort == 'keywords')
        {
        if($this->diafan->_site->titlemodule)
        {
        $title = $this->diafan->_site->titlemodule;
        }
        else
        {
        $title = $this->diafan->_site->name;
        }
        }
        $where = '';

        //кеширование
        $cache_meta = array(
        "name" => "block",
        "cat_ids" => $cat_ids,
        "site_ids" => $site_ids,
        "count" => $count,
        "lang_id" => _LANG,
        "time" => $time,
        "sort" => $sort.($sort == 'keywords' ? $title : ''),
        "current" => ($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show ? $this->diafan->_route->show : ''),
        "images" => $images,
        "images_variation" => $images_variation,
        "access" => ($this->diafan->configmodules('where_access_element', 'clauses') || $this->diafan->configmodules('where_access_cat', 'clauses') ? $this->diafan->_users->role_id : 0),
        "tag" => $tag,
        );

        if ($sort == "rand" || ! $result = $this->diafan->_cache->get($cache_meta, "clauses"))
        {
        $minus = array();
        $one_cat_id = count($cat_ids) == 1 && substr($cat_ids[0], 0, 1) !== '-' ? $cat_ids[0] : false;
        if(! $this->validate_attribute_site_cat('clauses', $site_ids, $cat_ids, $minus))
        {
        return false;
        }
        $inner = "";
        if($cat_ids)
        {
        $inner = " INNER JOIN {clauses_category_rel} as r ON r.element_id=e.id"
        ." AND r.cat_id IN (".implode(',', $cat_ids).")";
        }
        elseif(! empty($minus["cat_ids"]))
        {
        $inner = " INNER JOIN {clauses_category_rel} as r ON r.element_id=e.id"
        ." AND r.cat_id NOT IN (".implode(',', $minus["cat_ids"]).")";
        }
        $where = '';
        if($site_ids)
        {
        $where .= " AND e.site_id IN (".implode(",", $site_ids).")";
        }
        elseif(! empty($minus["site_ids"]))
        {
        $where .= " AND e.site_id NOT IN (".implode(",", $minus["site_ids"]).")";
        }
        if($sort == 'keywords')
        {
        Custom::inc('includes/searchwords.php');
        $searchwords = new Searchwords();
        $searchwords->max_length = $this->diafan->configmodules("max_length", "search");
        $names = $searchwords->prepare($title);
        if(empty($names))
        {
        return false;
        }

        $keys = DB::query_fetch_key_value("SELECT id, keyword FROM {search_keywords} WHERE keyword IN ('".implode("', '", $names)."')", "keyword", "id");
        if(count($keys) < count($names))
        {
        return;
        }
        $inner .= " INNER JOIN {search_results} AS sr ON sr.element_id=e.id AND sr.table_name='clauses'";
        $inner .= " INNER JOIN {search_index} AS i ON sr.id=i.result_id AND i.keyword_id IN ('".implode("', '", $keys)."') AND i.rating=0";
        }
        if($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show)
        {
        $where .= $where.' AND e.id<>'.$this->diafan->_route->show;
        }
        if($tag)
        {
        $t = DB::query_fetch_array("SELECT id, [name] FROM {tags_name} WHERE [name]='%s' AND trash='0'", $tag);
        if(! $tag)
        {
        return false;
        }
        $inner .= " INNER JOIN {tags} AS t ON t.element_id=e.id AND t.element_type='element' AND t.module_name='clauses' AND t.tags_name_id=".$t["id"];
        }

        if ($sort == "rand")
        {
        $max_count = DB::query_result(
        "SELECT COUNT(DISTINCT e.id) FROM {clauses} as e"
        .$inner
        .($this->diafan->configmodules('where_access_element', 'clauses') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
        ." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
        .($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show ? " AND e.id<>".$this->diafan->_route->show : '')
        ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
        .$where
        .($this->diafan->configmodules('where_access_element', 'clauses') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : ''),
        $time, $time, $time
        );
        $rands = array();
        for ($i = 1; $i <= min($max_count, $count); $i++)
        {
        do
        {
        $rand = mt_rand(0, $max_count - 1);
        }
        while (in_array($rand, $rands));
        $rands[] = $rand;
        }
        }
        else
        {
        $rands[0] = 1;
        }
        $result["rows"] = array();

        foreach ($rands as $rand)
        {
        switch($sort)
        {
        case "date":
        $order = ' ORDER BY e.created DESC, e.id DESC';
        break;

        case "rand":
        $order = '';
        break;

        default:
        $order = ' ORDER BY e.sort DESC, e.id DESC';
        break;
        }
        $rows = DB::query_range_fetch_all(
        "SELECT e.id, e.[name],e.[anons], e.timeedit, e.site_id, e.created FROM {clauses} AS e"
        .$inner
        .($this->diafan->configmodules('where_access_element', 'clauses') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
        ." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
        .($this->diafan->_site->module == 'clauses' && $this->diafan->_route->show ? " AND e.id<>".$this->diafan->_route->show : '')
        ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
        .$where
        .($this->diafan->configmodules('where_access_element', 'clauses') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
        ." GROUP BY e.id"
        .$order,
        $time, $time, $time,
        $sort == "rand" ? $rand : 0,
        $sort == "rand" ? 1 : $count
        );

        $result["rows"] = array_merge($result["rows"], $rows);
        }
        $this->elements($result["rows"], array("count" => $images, "variation" => $images_variation));

        // если категория только одна, задаем ссылку на нее
        if (!empty($result["rows"]) && $one_cat_id)
        {
        $cat = DB::query_fetch_array("SELECT [name], site_id, id FROM {clauses_category} WHERE id=%d LIMIT 1", $one_cat_id);

        $result["name"] = $cat["name"];
        $result["link_all"] = $this->diafan->_route->link($cat["site_id"], $cat["id"], 'clauses', 'cat');
        $result["category"] = true;
        }
        // если раздел сайта только один, то задаем ссылку на него
        elseif (!empty($result["rows"]) && count($site_ids) == 1)
        {
        $result["name"] = DB::query_result("SELECT [name] FROM {site} WHERE id=%d LIMIT 1", $site_ids[0]);
        $result["link_all"] = $this->diafan->_route->link($site_ids[0]);
        $result["category"] = false;
        }
        if(! empty($result["rows"]) && $tag)
        {
        $result["name"] .= ': '.$t["name"];
        }
        //сохранение кеша
        if ($sort != "rand")
        {
        $this->diafan->_cache->save($result, $cache_meta, "clauses");
        }
        }
        foreach ($result["rows"] as &$row)
        {
        $this->prepare_data_element($row);
        }
        foreach ($result["rows"] as &$row)
        {
        $this->format_data_element($row);
        }

        // это то, что добавили
        foreach ($result["rows"] as $key => $r_w)
        $result["rows"][$key]["counter"] = $this->get_counter_view($r_w["id"]);

        return $result;
        }

        Можно продолжить теперь не только для шаблонного тега статей, но и для вывода похожих статей. Находим функцию
        Код
        public function show_block_rel($count, $images, $images_variation){ ... }
        и излагаем ее вот так
        Код
        public function show_block_rel($count, $images, $images_variation)
        {
        $time = mktime(23, 59, 0, date("m"), date("d"), date("Y"));

        //кеширование
        $cache_meta = array(
        "name" => "block_rel",
        "count" => $count,
        "lang_id" => _LANG,
        "element_id" => $this->diafan->_route->show,
        "images" => $images,
        "images_variation" => $images_variation,
        "access" => ($this->diafan->configmodules('where_access_element', 'clauses') || $this->diafan->configmodules('where_access_cat', 'clauses') ? $this->diafan->_users->role_id : 0),
        "time" => $time
        );

        if (! $result = $this->diafan->_cache->get($cache_meta, "clauses"))
        {
        $result["rows"] = DB::query_range_fetch_all(
        "SELECT e.id, e.[name], e.[anons], e.created, e.timeedit, e.site_id FROM {clauses} AS e"
        ." INNER JOIN {clauses_rel} AS r ON e.id=r.rel_element_id AND r.element_id=%d"
        .($this->diafan->configmodules("rel_two_sided") ? " OR e.id=r.element_id AND r.rel_element_id=".$this->diafan->_route->show : '')
        .($this->diafan->configmodules('where_access_element', 'clauses') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='clauses' AND a.element_type='element'" : "")
        ." WHERE e.[act]='1' AND e.trash='0' AND e.created<%d"
        ." AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
        .($this->diafan->configmodules('where_access_element', 'clauses') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
        ." GROUP BY e.id"
        ." ORDER BY e.sort DESC",
        $this->diafan->_route->show, $time, $time, $time, 0, $count
        );
        $this->elements($result["rows"], array("count" => $images, "variation" => $images_variation));
        $this->diafan->_cache->save($result, $cache_meta, "clauses");
        }
        foreach ($result["rows"] as &$row)
        {
        $this->prepare_data_element($row);
        }
        foreach ($result["rows"] as &$row)
        {
        $this->format_data_element($row);
        }

        // это то, что добавили
        foreach ($result["rows"] as $key => $r_w)
        $result["rows"][$key]["counter"] = $this->get_counter_view($r_w["id"]);

        return $result;
        }


        М-да. Если у кого-нибудь не получилось (а данный код я проверил - работает), то не забудьте в настройках модуля отметить следующие пункты, а то наверняка будите думать, что приведенный код - ошибочный. См. картинку.


        Ну, как-то так. Надеюсь принцип понятен. Успехов, коллеги.
  • 30 сентября 2016 г.
  • ВИТАЛИЙ (NVGPRO), огромное спасибо за то что подробно расписали установку кода. .

Новости

  • 24 апреля, среда
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 
  • 15 декабря 2023 г.
  • Подводим итоги 2023 года. Выпустили новую сборку DIAFAN.CMS 7.1.1, вводим новые тарифы на аренду сайта и коммерческую поддержку и автообновления с января 2024 г., строим планы на будущий год.