Инструменты пользователя

Инструменты сайта


wiki:devel:counter

Это старая версия документа!


Счетчик посещений сайта Dokuwiki

Простейший счетчик для сайта (подсчет посещения любой страницы) без базы данных. Существует масса способов реализации счетчика просмотров страницы на PHP и в основном они работают с базой данных. Но если вам нужно прикрутить по-быстрому к одной странице счетчик посещений, то этот скрипт будет вам полезен. БД он не использует, а создает текстовый файл, в котором и хранит информацию о количестве просмотров. И, как обычно, предлагаю посмотреть как это выглядит на фото или в низу станицы.

Код счетчика

PHP
<?php 
$file = file("count.txt");
$count = implode("", $file);
$count++;
$myfile = fopen("count.txt","w");
fputs($myfile,$count);
fclose($myfile);
?>
<span>Просмотров: <?=$count ?></span> // вывод счетчика

Править будем файл tpl_footer расположенный Dokuwiki\lib\tpl\dokuwiki с добавление стиля:

CSS
.container {
    position: absolute;
    font-family: Georgia, 'Times New Roman', Times, serif;
}
.text-block {
    position: absolute;
    bottom: 0px;
    right: 4px;
    color: black;
}

в файле tpl_footer добавляем в блок <div class="buttons"> нижеприведенный код PHP

PHP
        <a>
            <?php 
                $file = file("count.txt");
                $count = implode("", $file);
                $count++;
                $myfile = fopen("count.txt","w");
                fputs($myfile,$count);
                fclose($myfile);
            ?>
        <style>
            .container {
            position: absolute;
            font-family: Georgia, 'Times New Roman', Times, serif;
            }
            .text-block {
            position: absolute;
            bottom: 0px;
            right: 4px;
            color: black;
            }
        </style>
            <a class="container">
                <span><img src="<?php echo tpl_basedir(); ?>images/button-yandex.png" width="85" height="15" alt="yandex" / >
                    <div class="text-block"><?=$count ?></div>
                </span>
            </a>
        </a>

В папку с картинками загружаем нашу иконку с размером 80px x 12px. и в строке кода <img src="<?php echo tpl_basedir(); ?>images/button-yandex.png" width="85" height="15" alt="yandex" / > прописываем путь к картинке. В моем случае это папка с шаблонами/картинки/.

Я не стал стили (необходимы для наложения текста на картинку) выносить пока в отдельный файл, чтобы было все для примера в одном месте.
Тут добавлен блок-контейнер (<a class="container">) для позиционирования в основном блоке (<div class="buttons">) шаблона и добавления шрифта и цвета текста. $file = file("count.txt"); создает файл в корне Dokuwiki с записями о посещении страниц, при желании можете изменить ее расположение.

PHP
<?php
/**
 * Template footer, included in the main and detail files
 */
 
// must be run from within DokuWiki
if (!defined('DOKU_INC')) die();
?>
 
<!-- ********** FOOTER ********** -->
<footer id="dokuwiki__footer"><div class="pad">
    <div class="license">Если не указано иное, содержимое этой вики предоставляется на&nbsp;условиях следующей лицензии: <bdi><a href="doku.php?id=public_domain_mark" rel="license" class="urlextern">Public Domain</a></bdi></div>
 
    <div class="buttons">
        <a href="https://php.net" title="Powered by PHP" <?php echo $target?>><img
            src="<?php echo tpl_basedir(); ?>images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a>
        <a href="//validator.w3.org/check/referer" title="Valid HTML5" <?php echo $target?>><img
            src="<?php echo tpl_basedir(); ?>images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a>
        <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" <?php echo $target?>><img
            src="<?php echo tpl_basedir(); ?>images/button-css.png" width="80" height="15" alt="Valid CSS" /></a>
        <a href="https://dokuwiki.org/" title="Driven by DokuWiki" <?php echo $target?>><img
            src="<?php echo tpl_basedir(); ?>images/button-dw.png" width="80" height="15"
            alt="Driven by DokuWiki" /></a>
        <a>
            <?php 
                $file = file("count.txt");
                $count = implode("", $file);
                $count++;
                $myfile = fopen("count.txt","w");
                fputs($myfile,$count);
                fclose($myfile);
				$filename = file("stat.txt");
            ?>
        <style>
            .container {
            position: absolute;
            font-family: Georgia, 'Times New Roman', Times, serif;
            }
            .text-block {
            position: absolute;
            bottom: 0px;
            right: 4px;
            color: black;
            }
        </style>
            <a class="container">
                <span><img src="<?php echo tpl_basedir(); ?>images/button-yandex.png" width="85" height="15" alt="yandex" / >
                    <div class="text-block"><?=$count ?></div>
                </span>
            </a>
        </a>
    </div>
    <?php tpl_includeFile('footer.html'); ?>
	<?php
	    $client  = @$_SERVER['HTTP_CLIENT_IP'];
        $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
        $remote  = @$_SERVER['REMOTE_ADDR']; // Определяем IP посетителя
        $bravo   = @$_SERVER["HTTP_USER_AGENT"];//Определяем браузер
            if(filter_var($client, FILTER_VALIDATE_IP)) $ip_address = $client;
            elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip_address = $forward;
            else $ip_address = $remote;
        $file2 = $_SERVER['DOCUMENT_ROOT'] . '/wiki/lib/tpl/dokuwiki/debug.txt';
        file_put_contents($file2, date("F d  H:i:s."). ('    ') . $ip_address . ('    ') . $bravo .  PHP_EOL, FILE_APPEND | LOCK_EX);
	?>
</div></footer><!-- /footer -->
или скачать файл ''tpl_footer'' целиком и поместить в папку Dokuwiki\lib\tpl\dokuwiki.
и нажав на картинку иконки сохранить как button-yandex.png в папке Dokuwiki\lib\tpl\dokuwiki\images.
У кого текст убегает, ловим его в стиле:

CSS
.container {
    position: absolute;
    font-family: Georgia, 'Times New Roman', Times, serif; //шрифт
}
.text-block {
    position: absolute;
    bottom: 0px;  //устанавливает положение нижнего края
    right: 4px;   //расстояние от правого края родительского элемента
    color: black; //цвет текста
}

Ну и все…Наслаждаемся.

Ссылка на источник кода

Только авторизованные участники могут оставлять комментарии.
wiki/devel/counter.1737234638.txt.gz · Последнее изменение: vladpolskiy