10.01.2018 05:46:16 pm
Ради эксперимента добавил блок - Откуда пришел пользователь, видный только администратору сайта. В блоке выводится IP пользователя и рефферер. Сейчас расскажу, как я делал.
Первым делам создаем новую таблицу в БД - phpfox_user_entered, у меня префикс phpfox_, если у вас другой, следует его изменить. В таблице четыре поля:
Создаю файл: shadowing.class.php с таким содержимым:
И закидываю его в папку: module/user/include/service/.
Создаю файл: entered.class.php с содержимым:
Закидываю сюда: module/user/include/component/block/.
Создаю файл: entered.html.php с содержимым:
Закидываю сюда: module/user/template/default/block/.
Далее в файле: include/library/phpfox/phpfox/phpfox.class.php, в конце функции: run() добавил строчку:
Теперь создаем новый компонент "entered" и в Менеджере блоков добавляю новый блок с такими параметрами:
Продукт: Core
Модуль: User
Заголовок: Откуда пришел гость
Контролер: --core.index-member
Компонент: --entered
Место: Block 1
Can Drag/Drop: Нет
Активность: Да
И в "User Group Access" ставим галочку только на против администратора.
Вот и все.
В блоке будет отображено пять последних переходов со сторонних сайтов. Переходы с поисковой выдачи Google будут выводится такого вида:
Первым делам создаем новую таблицу в БД - phpfox_user_entered, у меня префикс phpfox_, если у вас другой, следует его изменить. В таблице четыре поля:
- enter_id тип:
int(11)
Дополнительно:AUTO_INCREMENT
- user_ip тип:
varchar(25)
- referrer тип:
text
- time_stamp тип:
int(15)
Создаю файл: shadowing.class.php с таким содержимым:
<?php
class User_Service_Shadowing extends Phpfox_Service
{
// Запись: Откуда пришел гость
public function entered()
{
$request = Phpfox::getLib('request');
$referrer = $request->getServer('HTTP_REFERER');
if (!Phpfox::isUser() && $referrer && parse_url($referrer, PHP_URL_HOST) != Phpfox::getParam('core.host'))
{
$ip = $request->getIp();
$time = PHPFOX_TIME - 86400;
$enterId = $this->database()
->select('enter_id')
->from(Phpfox::getT('user_entered'))
->where('user_ip = \'' . $ip . '\' AND time_stamp > ' . (int) $time)
->execute('getSlaveField');
if (empty($enterId))
{
$this->database()
->insert(Phpfox::getT('user_entered'), array(
'user_ip' => $ip,
'referrer' => $referrer,
'time_stamp' => PHPFOX_TIME
)
);
}
}
} // Запись: Откуда пришел гость END
// Получение: Откуда пришел гость
public function getEntered()
{
$rows = $this->database()
->select('*')
->from(Phpfox::getT('user_entered'))
->order('enter_id DESC')
->limit(5)
->execute('getSlaveRows');
if (empty($rows) && !count($rows))
{
return null;
}
$count = count($rows);
for ($i = 0; $i < $count; $i++)
{
$rows[$i]['link'] = '<a href="' . $rows[$i]['referrer'] . '" title:"' . $rows[$i]['referrer'] . '" class="row_sub_link" target="_blank">' . (mb_strlen($rows[$i]['referrer']) > 28 ? mb_substr($rows[$i]['referrer'], 0, 28) . '...' : $rows[$i]['referrer']) . '</a>';
}
return $rows;
} // Получение: Откуда пришел гость END
}
И закидываю его в папку: module/user/include/service/.
Создаю файл: entered.class.php с содержимым:
<?php
class User_Component_Block_Entered extends Phpfox_Component
{
public function process()
{
if (!Phpfox::isAdmin())
{
return false;
}
$rows = Phpfox::getService('user.shadowing')->getEntered();
if (empty($rows))
{
return false;
}
$this->template()
->assign(array(
'sHeader' => Phpfox::getPhrase('track.recently_viewed_by'),
'rows' => $rows
)
);
return 'block';
}
}
Закидываю сюда: module/user/include/component/block/.
Создаю файл: entered.html.php с содержимым:
{foreach from=$rows item=row}
<div style="width: 175px; margin: 0 0 7px 0">
{$row.link}
<div class="extra_info">
<div style="width: 45%; float: left; text-align: left;">
<a href="http://ipgeobase.ru/?address={$row.user_ip}" target="_blank">{$row.user_ip}</a>
</div>
<div style="width: 55%; float: right; text-align: right;">
{$row.time_stamp|convert_time}
</div>
</div>
<div class="clear"></div>
</div>
{/foreach}
Закидываю сюда: module/user/template/default/block/.
Далее в файле: include/library/phpfox/phpfox/phpfox.class.php, в конце функции: run() добавил строчку:
Phpfox::getService('user.shadowing')->entered();
Теперь создаем новый компонент "entered" и в Менеджере блоков добавляю новый блок с такими параметрами:
Продукт: Core
Модуль: User
Заголовок: Откуда пришел гость
Контролер: --core.index-member
Компонент: --entered
Место: Block 1
Can Drag/Drop: Нет
Активность: Да
И в "User Group Access" ставим галочку только на против администратора.
Вот и все.
В блоке будет отображено пять последних переходов со сторонних сайтов. Переходы с поисковой выдачи Google будут выводится такого вида:
https://www.google.com/
.- Жалоба