Скажите пожалуйста, как перенести статистику о файлах, альбомах и их просмотрах (которая отображается внизу catlist) в файл anycontent.php?
Заранее спасибо.
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"> </td>
</tr>
<!-- END footer -->
А дальше, а дальше не всё так просто, как показали опыты.
Просто так вставить код в anycontent.php с ходу не получится.
Читаем следующее сообщение...
Дальше вот так...
Берёте блок кода:
// 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 в "Конфиг".
Спасибо большое за подробное обьяснение!Все получилось!
Думаю тему можно в F.A.Q. перенести.
Все вроде понятно с принципом вывода статистики, но в упор не получается вывести ее в теле одного из плагинов (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 все работает нормально.
Может быть проблема в том, что плагин не подгружает глобальные данные галереи?
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');
Может быть поможет?
А вообще нужно смотреть на плугин :)
Только создайте для этого отдельную тему...