smf 2.0 - Гороскопы для пользователей

Автор recived, 28 июня 2011, 08:14:11

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

recived

Копирую от сюда. Пример на моем форуме в профиле пользователя http://forum.izhclub.ru - логин demo пароль demo

Т.к у нас икушный форум в основном рассчитан был на женскую аудиторию, то возникла идея сделать гороскопы для них.  2 вопроса, как сделать и откуда брать гороскопы. Немного погуглив, нашел сервис экспорта гороскопа в xml формате. Причем сервис давал несколько разных видов гороскопа, это общий, любовный, эротический, бизнес, мобильный, здоровье, кулинарный и на неделю. Замечательно. Теперь оставалось лишь определить по дате рождения пользователей знак зодиака и закрепить за ним соответсвующие виды гороскопа.

Сначала добавил главную функцию отвечающую за расчеты знака зодиака, а также прикреплял к каждому знаку свою иконку:

Основной код функции пишем в конец файла Sources/subs.php:
function getZodiac($day, $month)
{
    global $settings;

    $day = intval($day);
    $month = intval($month);

    if ($day < 1 || $month < 1)
    {
        return false;
    }

         $zodiacs = array('aries', 'taurus', 'gemini', 'cancer', 'leo', 'virgo', 'libra', 'scorpio', 'sagittarius', 'capricorn', 'aquarius', 'pisces');

    switch($month)
         {
        case 1:     $zMonth = '9:10';   $limit = 20;    break;
                  case 2:     $zMonth = '10:11';        $limit = 19;    break;
                  case 3:     $zMonth = '11:0'; $limit = 21;    break;
                  case 4:     $zMonth = '0:1';  $limit = 20;    break;
                  case 5:     $zMonth = '1:2';  $limit = 21;    break;
                  case 6:     $zMonth = '2:3';  $limit = 22;    break;
                  case 7:     $zMonth = '3:4';  $limit = 23;    break;
                  case 8:     $zMonth = '4:5';  $limit = 23;    break;
                  case 9:     $zMonth = '5:6';  $limit = 23;    break;
                  case 10:    $zMonth = '6:7';  $limit = 23;    break;
                  case 11:        $zMonth = '7:8';      $limit = 22;    break;
                  case 12:    $zMonth = '8:9';  $limit = 22;    break;
    }

         $sign = explode(':', $zMonth);

         $num = ($day >= $limit) ? 1 : 0;
         $zodiac = $zodiacs[$sign[$num]];
$img = '<img src="'.$settings['default_images_url'].'/zodiac/'.strtolower($zodiac).'.gif" width="15" height="15" style="vertical-align:middle;" alt="'.$zodiac.'"  />';
        $array = array('img'=>$img, 'string'=>$zodiac);
        return $array;
}


В Profile-View.php ищем строчку ('today_is_birthday' => $datearray['mon'] == $birth_month && $datearray['mday'] == $birth_day,) и вставляем ниже:

'zodiac' => getZodiac($birth_day, $birth_month)

Так как у меня стоял мод UltimateProfile, то и решил вывести гороскоп в одном из блоков + на jquery (Табы). Этот код заточен под верстку профиля ИК и вставлен в Ultimate.profile.php.

if (isset($context['member']['zodiac']) && ! empty($context['member']['zodiac']))
{
echo '<div class="tabs">
<!– tabs –>
<ul class="tabNavigation">
<li><a href="#obsh"><img src="http://www.iconsearch.ru/uploads/icons/dellipack/16x16/people.png" />  ', $txt['goroscop_obsh'] ,'</a></li>
<li><a href="#zdor"><img src="http://www.iconsearch.ru/uploads/icons/alcohol/32x32/emulation.png" width="16" height="16" />  ', $txt['goroscop_zdor'] ,'</a></li>
<li><a href="#love"><img src="http://www.iconsearch.ru/uploads/icons/valentine/16x16/h5.png" />  ', $txt['goroscop_love'] ,'</a></li>
<li><a href="#ero"><img src="http://www.iconsearch.ru/uploads/icons/silk2/16x16/female.png" />  ', $txt['goroscop_ero'] ,'</a></li>
<li><a href="#biz"><img src="http://www.iconsearch.ru/uploads/icons/finance_icons/16x16/coins.png" />  ', $txt['goroscop_biz'] ,'</a></li>
<li style="float: right; padding: 0 40px 0 20px;">По гороскопу - ' , $context['member']['zodiac']['string'] , '</li>
</ul>
<!– tab containers –>
<div id="obsh">
<p>';

$horo_obsh = simplexml_load_string(file_get_contents('http://img.ignio.com/r/export/utf/xml/daily/com.xml'));
echo '<strong>Вчера: </strong>', $horo_obsh->$context['member']['zodiac']['string']->yesterday;
echo '<hr /><strong>Сегодня:</strong> ', $horo_obsh->$context['member']['zodiac']['string']->today;
echo '<hr /><strong>Завтра: </strong>', $horo_obsh->$context['member']['zodiac']['string']->tomorrow;
echo '<hr /><strong>Послезавтра:</strong> ', $horo_obsh->$context['member']['zodiac']['string']->tomorrow02;

echo'</p>
</div>
<div id="zdor">
<p>';
$horo_zdor = simplexml_load_string(file_get_contents('http://img.ignio.com/r/export/utf/xml/daily/hea.xml'));
echo '<strong>Вчера: </strong>', $horo_zdor->$context['member']['zodiac']['string']->yesterday;
echo '<hr /><strong>Сегодня:</strong> ', $horo_zdor->$context['member']['zodiac']['string']->today;
echo '<hr /><strong>Завтра: </strong>', $horo_zdor->$context['member']['zodiac']['string']->tomorrow;
echo '<hr /><strong>Послезавтра:</strong> ', $horo_zdor->$context['member']['zodiac']['string']->tomorrow02;
echo'</p>
</div>
<div id="love">
<p>';
$horo_lov = simplexml_load_string(file_get_contents('http://img.ignio.com/r/export/utf/xml/daily/lov.xml'));
echo '<strong>Вчера: </strong>', $horo_lov->$context['member']['zodiac']['string']->yesterday;
echo '<hr /><strong>Сегодня:</strong> ', $horo_lov->$context['member']['zodiac']['string']->today;
echo '<hr /><strong>Завтра: </strong>', $horo_lov->$context['member']['zodiac']['string']->tomorrow;
echo '<hr /><strong>Послезавтра:</strong> ', $horo_lov->$context['member']['zodiac']['string']->tomorrow02;
echo '</p>
</div>
<div id="ero">
<p>';
$horo_ero = simplexml_load_string(file_get_contents('http://img.ignio.com/r/export/utf/xml/daily/ero.xml'));
echo '<strong>Вчера: </strong>', $horo_ero->$context['member']['zodiac']['string']->yesterday;
echo '<hr /><strong>Сегодня:</strong> ', $horo_ero->$context['member']['zodiac']['string']->today;
echo '<hr /><strong>Завтра: </strong>', $horo_ero->$context['member']['zodiac']['string']->tomorrow;
echo '<hr /><strong>Послезавтра:</strong> ', $horo_ero->$context['member']['zodiac']['string']->tomorrow02;
echo '</p>
</div>
<div id="biz">
<p>';
$horo_biz = simplexml_load_string(file_get_contents('http://img.ignio.com/r/export/utf/xml/daily/bus.xml'));
echo '<strong>Вчера: </strong>', $horo_biz->$context['member']['zodiac']['string']->yesterday;
echo '<hr /><strong>Сегодня:</strong> ', $horo_biz->$context['member']['zodiac']['string']->today;
echo '<hr /><strong>Завтра: </strong>', $horo_biz->$context['member']['zodiac']['string']->tomorrow;
echo '<hr /><strong>Послезавтра:</strong> ', $horo_biz->$context['member']['zodiac']['string']->tomorrow02;
echo'</p>
</div>
</div>
';

}

echo '<div class="tabs1">
<!– tabs –>
<ul class="tabNavigation">
<li><a href="#comm"><img src="http://www.iconsearch.ru/uploads/icons/vaga/16x16/comment.png" />  ', $txt['profile_comments'] ,'</a></li>
<li><a href="#abou"><img src="http://www.iconsearch.ru/uploads/icons/ultimategnome/16x16/user-info.png" />  ', $txt['profile_about_me'] ,'</a></li>
<li><a href="#vide"><img src="http://www.iconsearch.ru/uploads/icons/bnw/16x16/video.png" />', $txt['profile_media'] ,'</a></li>
<li><a href="#inte">', $txt['profile_interests'] ,'</a></li>
<li><a href="#ero">', $txt['signature'], '</a></li>

</ul>
</div>


Получается мы сделали гороскоп для разных знаков зодиака + их вывели конкретно по знакам пользователей и отобразили красиво в jquery табах. Кстати табы подключать нужно кодом:

<script type="text/javascript" src="http://forum.izhclub.ru/Themes/blue/scripts/jquery.js"></script>
<script type="text/javascript" src="http://forum.izhclub.ru/Themes/blue/scripts/tabs.js"></script>


Ну и css табов:
UL.tabNavigation {
    list-style: none;
background: #d9deeb;
padding: 2px 0 6px 0;


}

UL.tabNavigation LI {
    display: inline;
}

UL.tabNavigation LI A {
padding:  5px 5px 5px 5px;
background: #fff;
text-decoration: none;
}

UL.tabNavigation LI A.selected,
UL.tabNavigation LI A:hover {

}

UL.tabNavigation LI A:focus {
outline: 0;
}

div.tabs > div {

}


#obsh,#zdor,#love,#ero,#biz {
padding: 0 5px 15px 5px;

}
               
.waste {
min-height: 1000px;
}


Ну вообщим кому интересно, можете оформить в виде мода, мне лень было все оформлять )))