1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.1.x Отображение поисковых роботов [RU]

Тема в разделе "Плагины для XenForo [1.x]", создана пользователем Андрей Х, 19.05.2011.

Загрузка
  1. Андрей Х

    Андрей Х Местный

    Регистрация:
    26.04.11
    Сообщения:
    183
    Симпатии:
    155
    Версия XF:
    1.5.11
    Описание: данный продукт позволяет отображать поисковых роботов на странице "Сейчас на сайте"

    spiders.png

    Установка:
    1. Загрузить все из папки upload в корень
    2. Импортировать файл продукта
    3. Редактировать шаблон online_list. Найти
      HTML:
                      <dl class="guestCount"><dt>{xen:phrase guests_online}:</dt>
                          <dd>{xen:number $onlineTotals.guests}</dd></dl>
      Ниже добавить:
      HTML:
                      <dl class="pairsJustified"><dt>{xen:phrase spiders}:</dt>
                          <dd>{xen:number $onlineTotals.spiders}</dd></dl>
    4. Редактировать шаблон member_list_item. Найти
      HTML:
      {xen:phrase guest}</h3>
      Заменить на:
      HTML:
      {$user.username}</h3>
    Доп. инфо: Ставить тем кому очень надо или просто невтерпеж. Kier на оф. форуме сказал, что данный функционал скорее всего будет реализован в версии XenForo 1.2.
     

    Вложения:

    Consul, vovik1646, Eddy и 5 другим нравится это.
  2. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    1. Это собственная разработка или плагин с оф. сайта?
    2. И где собсно само вложение? :)
     
    Андрей Х нравится это.
  3. Андрей Х

    Андрей Х Местный

    Регистрация:
    26.04.11
    Сообщения:
    183
    Симпатии:
    155
    Версия XF:
    1.5.11
    Тьфу ты, прикрепить забыл. :)
    Нет, не собственная. От наших немецких друзей. Не знаю, есть ли он на оф. форуме. Вроде не видел.
    Перевел ровно одно слово Spiders - Поисковики
     
    Romchik® нравится это.
  4. Nik

    Nik Read only

    Регистрация:
    19.02.11
    Сообщения:
    160
    Симпатии:
    11
    все сделал, а чет изменении нет... у кого получилось?
     
  5. Андрей Х

    Андрей Х Местный

    Регистрация:
    26.04.11
    Сообщения:
    183
    Симпатии:
    155
    Версия XF:
    1.5.11
    У меня получилось, скриншот с моего сайта
     
  6. Nik

    Nik Read only

    Регистрация:
    19.02.11
    Сообщения:
    160
    Симпатии:
    11
    Сейчас отключил у себя?
     
  7. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Этой версии нам ещё ждать и ждать.
     
  8. Андрей Х

    Андрей Х Местный

    Регистрация:
    26.04.11
    Сообщения:
    183
    Симпатии:
    155
    Версия XF:
    1.5.11
    Ничего не отключал, у меня на форуме все работает. Можно, как демо посмотреть.
     
    Nik нравится это.
  9. spy

    spy ИнквизитоР

    Регистрация:
    04.03.11
    Сообщения:
    373
    Симпатии:
    191
    А аватарки им [поисковикам] прицепить можно? :D
     
  10. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Было бы неплохо :)
     
  11. spy

    spy ИнквизитоР

    Регистрация:
    04.03.11
    Сообщения:
    373
    Симпатии:
    191
    Здраствуйте!
    проблем как-бы нет, но в журнале ошибок сервера есть одна маленькая ошибочка:
    вот интересно, че она (ошибка) мне хочит сообщить?

    Информация об ошибке
    Код:
    ErrorException: Undefined index: HTTP_USER_AGENT - library/PiXhousecom/SpidersOnline/Model/User.php:23
    Сгенерирована пользователем: Неизвестная учётная запись, Воскресенье в 23:40
    Трассировка стэка
    Код:
    #0 /home/idev/html/library/PiXhousecom/SpidersOnline/Model/User.php(23): XenForo_Application::handlePhpError(8, 'Undefined index...', '/home/idev/html...', 23, Array)
    #1 /home/idev/html/library/XenForo/Controller.php(445): PiXhousecom_SpidersOnline_Model_User->updateSessionActivity(0, '213.175.75.71', 'XenForo_Control...', 'Index', 'valid', Array)
    #2 /home/idev/html/library/XenForo/Controller.php(351): XenForo_Controller->updateSessionActivity(Object(XenForo_ControllerResponse_View), 'XenForo_Control...', 'Index')
    #3 /home/idev/html/library/XenForo/FrontController.php(317): XenForo_Controller->postDispatch(Object(XenForo_ControllerResponse_View), 'XenForo_Control...', 'Index')
    #4 /home/idev/html/library/XenForo/FrontController.php(132): XenForo_FrontController->dispatch(Object(XenForo_RouteMatch))
    #5 /home/idev/html/index.php(13): XenForo_FrontController->run()
    #6 {main}
    Содержимое запроса
    Код:
    array(3) {
      ["url"] => string(17) "http://мойсайт.ру/"
      ["_GET"] => array(0) {
      }
      ["_POST"] => array(0) {
      }
    }
     
  12. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Сделайте проще. Сообщите разработчику плагина, в котором эта ошибка возникает (SpidersOnline). Ему будет проще и быстрее локализовать эту ошибку и пофиксить.
     
  13. spy

    spy ИнквизитоР

    Регистрация:
    04.03.11
    Сообщения:
    373
    Симпатии:
    191
    не думаю что этот плагин кто-то еще поддерживает.... так как стоит еще бэта версия. и о обнавлениях ниче не слышал. :)
     
  14. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Ну тогда посмотрите внимательно на 23-ю строку исходника и попробуйте самостоятельно исправить ошибку. В крайнем случае кидайте кусок кода сюда, может быть кто-нибудь подскажет, как это можно будет исправить.
     
  15. spy

    spy ИнквизитоР

    Регистрация:
    04.03.11
    Сообщения:
    373
    Симпатии:
    191
    PHP:
    <?php
    /*======================================================================*\
    || #################################################################### ||
    || # ---------------------------------------------------------------- # ||
    || # Copyright ©2010 PiX-house.com. All Rights Reserved.                ||
    || # ---------------------------------------------------------------- # ||
    || #################################################################### ||
    \*======================================================================*/
     
    class PiXhousecom_SpidersOnline_Model_User extends XFCP_PiXhousecom_SpidersOnline_Model_User
    {
        public function 
    updateSessionActivity($userId$ip$controllerName$action$viewState, array $inputParams$viewDate null)
        {
            
    $response parent::updateSessionActivity($userId$ip$controllerName$action$viewState$inputParams$viewDate);
     
            
    $db $this->_getDb();
     
            
    $userId intval($userId);
            
    $ipNum sprintf('%u'ip2long($ip));
            
    $uniqueKey = ($userId $userId $ipNum);
     
            
    $agent '';
            
    $agent strtolower($_SERVER['HTTP_USER_AGENT']);
     
            
    $db->update('xf_session_activity',
                array(
    'useragent' => $agent),
                
    'unique_key = ' $uniqueKey
            
    );
     
            return 
    $response;
        }
    }
    да мне этот код ни о чем не говорит...:confused:

    row 23:
    PHP:
    $agent strtolower($_SERVER['HTTP_USER_AGENT']);
    Не знаю почему, но мне кажется надо добавить mb_ впереди, то есть: mb_strtolower,
    чета нашел в пхп.нет про неё, тип:
    Как вы считаете? Поправьте если че.
     
  16. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Ну вместо этой строки напишите:
    PHP:
    if (!empty($_SERVER['HTTP_USER_AGENT'])) {
      
    $agent strtolower($_SERVER['HTTP_USER_AGENT']);
    } else {
      
    $agent '';
    }
     
  17. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Лучше так (оно ж ругается на отсутствие самого индекса, не на отсутствие значения):

    PHP:
    if (isset($_SERVER['HTTP_USER_AGENT'])) {
      
    $agent strtolower($_SERVER['HTTP_USER_AGENT']);
    } else {
      
    $agent '';
    }
     
  18. spy

    spy ИнквизитоР

    Регистрация:
    04.03.11
    Сообщения:
    373
    Симпатии:
    191
    Привет и спасибо! пропишу и буду ждать... :)
     
  19. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Это не совсем корректно. Дело в том, что empty проверяет на пустое или отсутствующее значение, а также на определенность переменной. Если переменная не определена, будет возвращено true. Если переменная определена, но равна NULL, то также вернет true. Ну и в случае числовой переменной, если она равна нулю, также будет возвращено true.
    В случае использования isset могут быть грабли в виде определенной переменной, но равной нулевому байту (в C, например, это граница переменной), а не NULL. Для PHP это различные данные. Т.е. isset посчитает это определенной переменной и вернет true, что может в дальнейшем привести к неправильной обработке строковой переменной.
    Если обратить внимание, то в самом ксене также используется проверка через empty, как более безопасная и однозначная.
    Если переменная не определена (отсутствие индекса также означает неопределенность переменной), то empty без ошибок возвращает true, и условие выполняется корректно.

    В общем я настаиваю на применении функции empty, а не isset :)
     
    sandis и Pepelac нравится это.
  20. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Тут вопрос все ж таки, что в итоге мы хотим получить.

    Если важен факт именно наличия значения переменной, тогда да, empty наш вариант. Здесь же важен факт определения переменной (значение нас не интересует), точнее, индекса массива. Я в таком случае голосую за isset.

    Можно вообще извратиться и использовать array_key_exists.
     
    Yoskaldyr и sandis нравится это.

Поделиться этой страницей