1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

Помощь Увеличение количества просмотров статьи в J2.5 - где?

Тема в разделе "Joomla", создана пользователем iskif, 1 май 2012.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Статус темы:
Закрыта.
Модераторы: arman29, DMS, NightHunter
  1. iskif

    iskif

    Регистр.:
    21 авг 2006
    Сообщения:
    325
    Симпатии:
    35
    сломал весь мозг себе уже :thenks:
    в J1.5 было просто
    файл libraries/joomla/database/table.php
    Код:
    строка 668
    . ' SET hits = ( hits + 1 )'
    сейчас же, в версии 2.5 в этом файле есть такой кусок кода
    PHP:
    /**
        * Method to increment the hits for a row if the necessary property/field exists.
        *
        * @param  mixed  $pk  An optional primary key value to increment. If not set the instance property value is used.
        *
        * @return  boolean  True on success.
        *
        * @link    http://docs.joomla.org/JTable/hit
        * @since  11.1
        */
        
    public function hit($pk null)
        {
            
    // If there is no hits field, just return true.
            
    if (!property_exists($this'hits'))
            {
                return 
    true;
            }
     
            
    // Initialise variables.
            
    $k $this->_tbl_key;
            
    $pk = (is_null($pk)) ? $this->$k $pk;
     
            
    // If no primary key is given, return false.
            
    if ($pk === null)
            {
                return 
    false;
            }
     
            
    // Check the row in by primary key.
            
    $query $this->_db->getQuery(true);
            
    $query->update($this->_tbl);
            
    $query->set($this->_db->quoteName('hits') . ' = (' $this->_db->quoteName('hits') . ' + 1)');
            
    $query->where($this->_tbl_key ' = ' $this->_db->quote($pk));
            
    $this->_db->setQuery($query);
     
            
    // Check for a database error.
            
    if (!$this->_db->query())
            {
                
    $e = new JException(JText::sprintf('JLIB_DATABASE_ERROR_HIT_FAILED'get_class($this), $this->_db->getErrorMsg()));
                
    $this->setError($e);
                return 
    false;
            }
     
            
    // Set table values in the object.
            
    $this->hits++;
     
            return 
    true;
        }
    пробовал менять ' + 1) и hits++; - эффекта ноль. даже просто вырезал этот весь код из файла всё равно счётчик просмотров упрямо изменяется на 1 :confused:

    что и\или где надо исправить, чтоб увеличение было на отличную от 1 цифру ??
     
  2. one

    one

    Регистр.:
    22 июн 2011
    Сообщения:
    409
    Симпатии:
    42
    А в БД глянуть что не позволяет?
     
  3. iskif

    iskif

    Регистр.:
    21 авг 2006
    Сообщения:
    325
    Симпатии:
    35
    хм... а при чём тут БД? вопрос был про изменение счётчика просмотров статей, а не как посмотреть его значение в базе
     
  4. vitmar

    vitmar Постоялец

    Регистр.:
    27 апр 2012
    Сообщения:
    84
    Симпатии:
    40
    Посмотри файл /components/com_content/views/article/view.html
    там есть вот эта функция
    Код:
    public function hit($pk = 0)
        {
                $hitcount = JRequest::getInt('hitcount', 1);
     
                if ($hitcount)
                {
                    // Initialise variables.
                    $pk = (!empty($pk)) ? $pk : (int) $this->getState('article.id');
                    $db = $this->getDbo();
     
                    $db->setQuery(
                            'UPDATE #__content' .
                            ' SET hits = hits + 1' .
                            ' WHERE id = '.(int) $pk
                    );
     
                    if (!$db->query()) {
                            $this->setError($db->getErrorMsg());
                            return false;
                    }
                }
     
                return true;
        }
    Я думаю, что ты это искал.
     
    iskif нравится это.
  5. iskif

    iskif

    Регистр.:
    21 авг 2006
    Сообщения:
    325
    Симпатии:
    35
    дааа!! спасибо :)
    только у меня вместо /components/com_content/views/article/view.html там лежал файл view.html.php с другим содержимым
    возможно, из-за применения фреймворка от одной из студий
    а эта функция у меня находится в \components\com_content\models\article.php
    но спасибо за подсказку, что можно было не останавливаться и искать в других файлах :)
     
  6. nikki

    nikki Постоялец

    Регистр.:
    21 май 2012
    Сообщения:
    85
    Симпатии:
    4
    А как избавиться от кеширования кол-ва просмотров? А то выдает неверную информацию...
     
Статус темы:
Закрыта.