We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33563
    • 17 Posts
    Заказчик придумал новую проблему, считать клики по баннерам, ну а баннеры понятное дело просто выводятся с помощью ditto.

    Делать страничку с редиректом было скучно, соорудил следующую конструкцию:

    В шаблоне ditto, добавил к ссылками параметр rel с id ресурса, вот так:

    <a href="..." rel="[+id+]" >...</a>


    Написал небольшой код на jquery (Здесь adverts — id контейнера с баннерами, /c.html — адрес страницы со сниппетом ):
    	$("#adverts a").each ( function () {
    			var link = $(this);
    			link.click(function () {					
    				$.get( '/c.html', { id: link.attr('rel') }, function() { window.location = link.attr('href'); } );				
    				return false;				
    			} );	
    		})
    


    А по адресу /c.html вставил такой сниппет:

    <?php
    if ((int)$_GET['id']>0) {
    
    $docid = $_GET['id'];
    $field = $modx->getTemplateVar('counter', '', $docid ); 
    $id = $field['id'];
    $counter = $field['value'];
    
    if ((int)$counter != 0 ) { $counter++; } else { $counter = 1; }
    
    $tvc = $modx->getFullTableName('site_tmplvar_contentvalues');
    if ($counter == 1) { $sql="INSERT INTO $tvc (tmplvarid, contentid, value) values ($id, $docid, '$counter')"; } 
    else { $sql="UPDATE $tvc SET value='$counter' WHERE tmplvarid=$id AND contentid=$docid"; };
    $modx->db->query($sql);
    
    }
    ?>


    Теперь у ресурсов с баннерами надо добавить TV с названием counter и значением по умолчанию — 0, в нём будут считаться клики.
    Получилось довольно просто и красиво.

    Защиты от накрутки нет, но можно при желании допилить, возможно сделаю.
      • 27552
      • 24 Posts
      c помощью ditto ? т.е для каждого баннера отделаьная страница ? пытаюсь решить вопрос с баннерами, вот в этой теме http://modxcms.com/forums/index.php/topic,60698.msg345216.html#msg345216