Файл anycontent.php - пример добавления статистики под &# Файл anycontent.php - пример добавления статистики под &#
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Файл anycontent.php - пример добавления статистики под &#

Started by Shaman, July 12, 2008, 11:58:10 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Shaman

Скажите пожалуйста, как перенести статистику о файлах, альбомах и их просмотрах (которая отображается внизу catlist) в файл anycontent.php?
Заранее спасибо.

Makc666

Quote from: Shaman on July 12, 2008, 11:58:10 PM
Скажите пожалуйста, как перенести статистику о файлах, альбомах и их просмотрах (которая отображается внизу catlist) в файл anycontent.php?
Заранее спасибо.
Обработка catlist начинается из файла index.php

Блок кода:
                    case 'catlist':
                        if ($breadcrumb != '' || count($cat_data) > 0) theme_display_cat_list($breadcrumb, $cat_data, $statistics);
                        if (isset($cat) && $cat == USER_GAL_CAT) {
                            list_users();
                        }
                        flush();
                        break;


Как видно, идёт обращение к фукнции:
theme_display_cat_list

Данная функция находится в файле:
./include/themes.inc.php

Начинается блок функции со строк:
if (!function_exists('theme_display_cat_list')) {  //{THEMES}
function theme_display_cat_list($breadcrumb, &$cat_data, $statistics)
{


Если мы посмотрим в конец функции, то увидим интересующий нас блок:
    if ($statistics && count($cat_data) > 0) {
        $template = template_extract_block($template_cat_list, 'footer');
        $params = array('{STATISTICS}' => $statistics);
        echo template_eval($template, $params);
    }


В нём определяется переменная:
{STATISTICS}

Данная переменную используется в формировании шаблона вывода данного блока catlist.

Находится данный блок тоже в файле:
./include/themes.inc.php

Вот этот блок:
// HTML template for the category list
if (!isset($template_cat_list)) { //{THEMES}
$template_cat_list = <<<EOT
<!-- BEGIN header -->
        <tr>
                <td class="tableh1" width="80%" align="left"><b>{CATEGORY}</b></td>
                <td class="tableh1" width="10%" align="center"><b>{ALBUMS}</b></td>
                <td class="tableh1" width="10%" align="center"><b>{PICTURES}</b></td>
        </tr>
<!-- END header -->
<!-- BEGIN catrow_noalb -->
        <tr>
                <td class="catrow_noalb" colspan="3"><table border="0"><tr><td align="left">{CAT_THUMB}</td><td align="left"><span class="catlink"><b>{CAT_TITLE}</b></span>{CAT_DESC}</td></tr></table></td>
        </tr>
<!-- END catrow_noalb -->
<!-- BEGIN catrow -->
        <tr>
                <td class="catrow" align="left"><table border="0"><tr><td>{CAT_THUMB}</td><td><span class="catlink"><b>{CAT_TITLE}</b></span>{CAT_DESC}</td></tr></table></td>
                <td class="catrow" align="center">{ALB_COUNT}</td>
                <td class="catrow" align="center">{PIC_COUNT}</td>
        </tr>
        <tr>
            <td class="tableb" colspan="3">{CAT_ALBUMS}</td>
        </tr>
<!-- END catrow -->
<!-- BEGIN footer -->
        <tr>
                <td colspan="3" class="tableh1" align="center"><span class="statlink">{STATISTICS}</span></td>
        </tr>
<!-- END footer -->
<!-- BEGIN spacer -->
        <img src="images/spacer.gif" width="1" height="7" border="" alt="" /><br />
<!-- END spacer -->

EOT;
}  //{THEMES}


Интересующий нас блок вот:
<!-- BEGIN footer -->
        <tr>
                <td colspan="3" class="tableh1" align="center"><span class="statlink">{STATISTICS}</span></td>
        </tr>
<!-- END footer -->


Соответственно, для переноса его нужно заменить (лучше не удалять).

Заменить можно вот так:
<!-- BEGIN footer -->
        <tr>
                <td colspan="3" class="tableh1" align="center">&nbsp;</td>
        </tr>
<!-- END footer -->


А дальше, а дальше не всё так просто, как показали опыты.
Просто так вставить код в anycontent.php с ходу не получится.
Читаем следующее сообщение...

Makc666

Дальше вот так...

Берёте блок кода:
// HTML template for the category list
if (!isset($template_cat_list)) { //{THEMES}
$template_cat_list = <<<EOT


И превращаете вот в такой код:// HTML template for STATISTICS
$template_statistics = <<<EOT
<!-- BEGIN footer -->
        <tr>
                <td colspan="3" class="tableh1" align="center"><span class="statlink">{STATISTICS}</span></td>
        </tr>
<!-- END footer -->

EOT;
//{THEMES}


Данный код копируете в файл theme.php вашего стиля, а лучше во все используемые вами стили:
./themes/classic/theme.php

Открываете файл:
anycontent.php

Перед кодом:
<?php
endtable
();


Вставляете код:
<?php
    
if ($statistics && count($cat_data) > 0) {
        
$template template_extract_block($template_statistics'footer');
        
$params = array('{STATISTICS}' => $statistics);
        echo 
template_eval($template$params);
    }
?>


Всё :)

И понятное дело нужно не забить, чтобы добавить переменную anycontent в "Конфиг".

Shaman

Спасибо большое за подробное обьяснение!Все получилось!
Думаю тему можно в F.A.Q. перенести.

Shaman

Все вроде понятно с принципом вывода статистики, но в упор не получается вывести ее в теле одного из плагинов (onlinestats) в файле codebase.php  путем вставки в него
<?php
    
if ($statistics && count($cat_data) > 0) {
        
$template template_extract_block($template_statistics'footer');
        
$params = array('{STATISTICS}' => $statistics);
        echo 
template_eval($template$params);
    }
?>


В теле anycontent.php все работает нормально.
Может быть проблема в том, что плагин не подгружает глобальные данные галереи?

Makc666

Quote from: Shaman on July 16, 2008, 01:12:36 AM
Все вроде понятно с принципом вывода статистики, но в упор не получается вывести ее в теле одного из плагинов (onlinestats) в файле codebase.php  путем вставки в него 
<?php
    
if ($statistics && count($cat_data) > 0) {  
        
$template template_extract_block($template_statistics'footer');
        
$params = array('{STATISTICS}' => $statistics);
        echo 
template_eval($template$params);
    }
?>


В теле anycontent.php все работает нормально.
Может быть проблема в том, что плагин не подгружает глобальные данные галереи?

Мне казалось, что это понятно, что файл anycontent.php вызывается из файла index.php, поэтому использует его переменный, в т.ч. глобальные в функциях.
Надеюсь полную чущь не сморозил.

Попробуйте для начала добавить строку в плугин:
require('include/init.inc.php');

Может быть поможет?

А вообще нужно смотреть на плугин :)

Только создайте для этого отдельную тему...