We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 37030
    • 8 Posts
    Создал плагин для вывода количества посещений, галочка стоит на OnWebPagePrerender
    Предварительно создал TV-параметр с id=27, тип ввода Number, по умолчанию значение 0
    <?php
    if(!isset($_SESSION['usertype'])) { $_SESSION['usertype'] = ''; }
    if($modx->documentObject['donthit'] != 1 && $_SESSION['usertype'] != 'manager') {
    $id = $modx->documentIdentifier;
    $query = "UPDATE modx_site_tmplvar_contentvalues SET value=value+1 WHERE tmplvarid =27 AND contentid=".$id;
    mysql_query($query);
    }
    return;
    ?>
    

    не изменяет значение TV и даже в базе в таблице modx_site_tmplvar_contentvalues нет строк с моим id
    Подскажите, пожалуйста, перерыл инет и тут читал, не нашел решение
    Возможно другой вариант подкинете
    PS
    еще вывод типа пользователя не получается
      • 38454
      • 71 Posts
      Может стоит сделать такой же сниппет, вставить его в шаблон и проверить его работу на каждом шагу?

      А вот это совсем не понял:

      и даже в базе в таблице modx_site_tmplvar_contentvalues нет строк с моим id

        • 37030
        • 8 Posts
        А вот это совсем не понял:

        и даже в базе в таблице modx_site_tmplvar_contentvalues нет строк с моим id
        ну при создании ТВ-параметра он же должен появляться в БД в таблице modx_site_tmplvar_contentvalues? а его там нет
          • 38454
          • 71 Posts
          Как я написал чуть раньше в другом посту — да поправит меня знающий человек, если я ошибаюсь...

          Предполагаю, что если нет записи о tv-параметре, то MODx будет использоваться значение по умолчанию. Т.е. прежде чем обновлять запись в БД, как делаете Вы, нужно проверить, а существует ли она. Если не существует, то создать ее (соответственно присвоить 1). Не?
            • 37030
            • 8 Posts
            Ставил значение 1, не помогло;
            или в таблице ручками?
            Просто тогда для каждой страницы это извращение
              • 38454
              • 71 Posts
              Не, немного не правильно поняли меня. Я предполагаю, что если в таблице modx_site_tmplvar_contentvalues нет данных о значении tv-параметра конкретной страницы, то он будет брать значение «по умолчанию» из другой таблицы (где хранится список tv-парамтеров).

              В этом случае не правильно пытаться обновить данные в таблице modx_site_tmplvar_contentvalues (как у Вас). Представьте, записи нет, а Вы говорите «Обновите эту запись». Конечно нигде ничего не обновится. Нужно посмотреть, есть ли запись в modx_site_tmplvar_contentvalues, для этой страницы и если нет — создать.

              Для каждой страницы ничего не нужно руками создавать — всё автоматизировано.
                • 37030
                • 8 Posts
                создал запись в базе, значение только почему-то с типом "text", ничего не поменялось.
                Может знаете другой способ показывать кол-во просмотров и мой метод заведомо неправильный?
                Хотя хотелось бы знать как правильно менять значения TV
                  • 38454
                  • 71 Posts
                  К сожалению сейчас совсем нет времени — надо убегать. На скорую руку БЕЗ ПРОВЕРКИ набросал код — посмотрите:

                  if(!isset( $_SESSION['usertype'] )) { $_SESSION['usertype'] = ''; }
                  if( ( $modx->documentObject['donthit'] != 1 ) && ( $_SESSION['usertype'] != 'manager' ) ) {
                  
                  	$id = $modx->documentIdentifier;
                  	$query = "SELECT id FROM modx_site_tmplvar_contentvalues WHERE tmplvarid =27 AND contentid=".$id;
                  	$result = $modx->db->query( $query );
                  	$total_rows = $modx->db->getRecordCount( $result );
                  	if($total_rows!=0) {
                  		$row = $modx->db->getRow( $result );
                  		$value = $row['value']+1;
                  		
                  		$query = "UPDATE modx_site_tmplvar_contentvalues SET $value WHERE tmplvarid =27 AND contentid=$id";
                  		$modx->db->query( $query );
                  		} else {
                  		
                  		$fields = array('tmplvarid'	=> 27,
                  			'contentid'	=> $id,
                  			'value'	=>1,
                  			);
                  	
                  		$modx->db->insert( $fields, "modx_site_tmplvar_contentvalues");
                  		
                  		}
                  	
                  }
                  return 1;
                    • 37030
                    • 8 Posts
                    большое спасибо за помощь, но не получилось sad буду искать другие варианты
                      • 31246 ☆ A M B ☆
                      • 428 Posts
                      Вам нужно решение для Ево?
                        Valentin Rasulov - Industrial design (Hobbies - Web Development)
                        Development not standard projects on CMF MODx Revolution.
                        Small sample of extensions