coppermine-gallery.com/forum

Support => Русский (Russian) => Language Specific Support => cpg1.4.x FAQ (Russian) => Topic started by: Shaman on July 12, 2008, 11:58:10 PM

Title: Файл anycontent.php - пример добавления статистики под &#
Post by: Shaman on July 12, 2008, 11:58:10 PM
Скажите пожалуйста, как перенести статистику о файлах, альбомах и их просмотрах (которая отображается внизу catlist) в файл anycontent.php?
Заранее спасибо.
Title: Re: Статистика под списком категорий
Post by: Makc666 on July 13, 2008, 01:14:19 PM
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 с ходу не получится.
Читаем следующее сообщение...
Title: Re: Статистика под списком категорий
Post by: Makc666 on July 13, 2008, 01:31:54 PM
Дальше вот так...

Берёте блок кода:
// 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 в "Конфиг".
Title: Re: Файл anycontent.php - пример добавления статистики под
Post by: Shaman on July 13, 2008, 03:17:54 PM
Спасибо большое за подробное обьяснение!Все получилось!
Думаю тему можно в F.A.Q. перенести.
Title: Re: Файл anycontent.php - пример добавления статистики под
Post by: 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 все работает нормально.
Может быть проблема в том, что плагин не подгружает глобальные данные галереи?
Title: Re: Файл anycontent.php - пример добавления статистики под
Post by: Makc666 on July 16, 2008, 09:40:37 PM
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');

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

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

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