1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Склонение слов и словосочетаний в SE

Discussion in 'Моды - Mods' started by lem1x, Nov 29, 2010.

  1. lem1x Thread starter Active member


    Offline
    Message Count:
    166
    Likes Received:
    68
    С позволения Евгения Евтеева выкладываю мод склонений (написанный им же)

    Данный мод с помощью Яндекс.Склонятора, научит Вашу социальную сеть склонять слова или словосочетания.
    Для этого необходимо написать всего одну функцию и использовать в скриптах или сразу в шаблоне, чтобы выводить про склоненные слова.

    PHP:
    function get_declination_user($text_for_decl ''$decl_num 1) {
     
        if( !empty(
    $text_for_decl) ) {
     
            
    $xml simplexml_load_file("http://export.yandex.ru/inflect.xml?name=" $text_for_decl);
            
    $nodes $xml->inflection;
            
    $i 1;
            foreach(
    $nodes as $node) {
     
                if(
    $i == $decl_num)
                    return 
    $node;
                else
                    
    $i++;
            }
        }
        return 
    $text_for_decl;
    }
    У функции «get_declination_user()» имеются два входных параметра:
    1. $text_for_decl – слово или словосочетание, которое необходимо просклонять.
    2. $decl_num – число, соответствующее склонению (Кто? — 1, Кого? — 2, Кому? — 3, Кого? — 4, Кем? — 5, О ком? — 6).
    Данную функцию необходимо вставить в файл include / class_user.php внутрь класса SEUser.

    Чтобы в шаблоне использовать данную функцию необходимо вставить следующий код:
    PHP:
    {$user->get_declination_user($Words2)}
    Передаваемые параметры означают, что слово в переменной $Words необходимо просклонять в родительный падеж.

    Ссылка на статью:
    http://statprog.ru/2010/11/25/get-declination-user/

    Если, кому пригодилась - кликните по "спасибке"
    Alpert108 and mjpash like this.
  2. Prado Challenge Everything


    Offline
    • Admin
    Message Count:
    3,191
    Likes Received:
    786
    My version of phpFox:
    3.0.0
    Скриншот бы.

    ---------- Сообщение добавлено в 08:24 ---------- Предыдущее сообщение было в 08:17 ----------

    Кстати на сайте новость опубликована.
  3. lem1x Thread starter Active member


    Offline
    Message Count:
    166
    Likes Received:
    68
    Даже не знаю, что за скрин нужен...
    Ну к примеру (я для себя использую склонения имен) Возьмем в пример фотоотметки - по стандарту русский язык выставляется так (фото с Иванов Иван) и это не есть правильно.После склонения должно получиться Фото с Ивановым Иваном.

    Для этого в шаблоне profile_photos.tpl находим строку:
    PHP:
    {lang_sprintf id=1205 1=$url->url_create('profile'$owner->user_info.user_username2=$owner->user_displayname}
    и подставив код из новости получаем это:
    PHP:
    {lang_sprintf id=1205 1=$url->url_create('profile'$owner->user_info.user_username2=$owner->get_declination_user($owner->user_displayname5)}
    в конце кода видим цифру "5" (Творительный падеж - Кем\Чем)

    Естественно, не забываем в include / class_user.php вставить выше преведенный код.

    [IMG]
  4. berserk007rus Novice member


    Offline
    Message Count:
    27
    Likes Received:
    0
    можете помочь разобраться? куда вставлять



    и нужно ли в нем что либо изменять?



    тоесть это надо в каждом разделе редактировать?
  5. lem1x Thread starter Active member


    Offline
    Message Count:
    166
    Likes Received:
    68
    berserk007rus, нет менять ничего не нужно.
    Я вставил в class_user.php
    После этой строчки:
    Code:
    var $session_info;	// CONTAINS THE PRIVACY LEVEL THAT IS ALLOWED TO MODERATE FOR THIS USER
    Данный код:
    Code:
    function get_declination_user($text_for_decl = '', $decl_num = 1) {
    
    	if( !empty($text_for_decl) ) {
    	
    		$xml = simplexml_load_file("http://export.yandex.ru/inflect.xml?name=" . $text_for_decl);
    		$nodes = $xml->inflection;
    		$i = 1;
    		foreach($nodes as $node) {
    		
    			if($i == $decl_num)
    				return $node;
    			else
    				$i++;
    		}
    	}
    	return $text_for_decl;
    } 
    
    К сожалению да.В том шаблоне где Вам нужно просклонять фразу - нужно подключать этот скрипт через:
    Code:
    {$user->get_declination_user($СЛОВО, 2)}
    Вместо "СЛОВО" код, необходимый для склонения и естественно вместо "2" стави нужный падеж.
  6. lem1x Thread starter Active member


    Offline
    Message Count:
    166
    Likes Received:
    68
    Еще пример:
    В user_friends.tpl есть код отвечающий за "посмотреть друзей ИМЯ"
    Там так же стоит по стандарту.
    Ищем такую фразу:
    Code:
    {lang_sprintf id=836 1=$user_displayname_short}
    И меняем её на:
    Code:
    {lang_sprintf id=836 1=$owner->get_declination_user($user_displayname_short, 2)}
    И вот у нас уже получилось " посмотреть Друзей Пети, Вани, Маши" и т.д.
    Спасибо за внимание.
    StormMan likes this.
  7. StormMan User


    Offline
    Message Count:
    247
    Likes Received:
    63
    А что где нужно заменить, чтобы в Ленте активности эту штуковину применить? К примеру, чтобы вместо
    Code:
    Маши Иванова оставил(а) комментарий к фотографии Петя Сидоров
    было
    Code:
    Маши Иванова оставил(а) комментарий к фотографии Пети Сидорова
  8. ExTRANE Active member


    Offline
    Message Count:
    278
    Likes Received:
    62
    Вопрос .. с данным модом .. странички на много дольше начнутся грузится???? или разница небольшая будет? кто ставил, отзовитесь
  9. StormMan User


    Offline
    Message Count:
    247
    Likes Received:
    63
    Я на глаз разницы не заметил.

    ---------- Сообщение добавлено в 20:04 ---------- Предыдущее сообщение было в 19:56 ----------

    Где нужно склонять имена юзеров. Искал по разным файлам и фразам все места, где это встречается (за исключением перечисленных выше). Частично сей пост - памятка для самого себя))


    В user_friends_block.tpl
    HTML:
    {lang_sprintf id=867 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=867 1=$owner->get_declination_user($owner->user_displayname, 2)}
    там же
    HTML:
    {lang_sprintf id=872 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=872 1=$owner->get_declination_user($owner->user_displayname, 2)}
    там же
    HTML:
    {lang_sprintf id=873 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=873 1=$owner->get_declination_user($owner->user_displayname, 2)}


    В user_friends_manage.tpl
    HTML:
    {lang_sprintf id=877 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=877 1=$owner->get_declination_user($owner->user_displayname, 4)}
    там же
    HTML:
    {lang_sprintf id=880 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=880 1=$owner->get_declination_user($owner->user_displayname, 2)}
    там же
    HTML:
    {lang_sprintf id=881 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=881 1=$owner->get_declination_user($owner->user_displayname, 6)}
    там же
    HTML:
    {lang_sprintf id=888 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=888 1=$owner->get_declination_user($owner->user_displayname, 5)}
    там же
    HTML:
    {lang_sprintf id=912 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=912 1=$owner->get_declination_user($owner->user_displayname, 5)}
    языковую переменную 918 в русском и английском вариантах заменить на
    Code:
    Вы ждали подтверждения дружбы от %1$s. Вы уверены, что хотите отменить ваш запрос на дружбу с %2$s?
    и
    Code:
    You are waiting for a friendship confirmation from %1$s. Are you sure you want to cancel your request for friendship with %2$s?
    соответственно.

    далее в том же файле (user_friends_manage.tpl)
    HTML:
    {lang_sprintf id=918 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=918 1=$owner->get_declination_user($owner->user_displayname, 2) 2=$owner->get_declination_user($owner->user_displayname, 5)}
    там же
    HTML:
    {lang_sprintf id=921 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=921 1=$owner->get_declination_user($owner->user_displayname, 5)}

    В profile.tpl
    HTML:
    {lang_sprintf id=1023 1=$owner->user_displayname_short}
    заменить на
    HTML:
    {lang_sprintf id=1023 1=$owner->get_declination_user($owner->user_displayname_short, 5)}

    В profile.tpl, а также в follow_list.tpl (если есть) !! Шаг не сработал, профайл перестал открываться. Интересно, почему...
    HTML:
    {lang_sprintf id=1204 1=$owner->user_displayname_short 2=$total_photo_tags}
    заменить на
    HTML:
    {lang_sprintf id=1204 1=get_declination_user($owner->user_displayname_short, 5) 2=$total_photo_tags}

    В albums.tpl !! Этот шаг у меня тоже не сработал - перестала открываться старница...
    HTML:
    {lang_sprintf id=1000138 1=$url->url_create('profile', $owner->user_info.user_username) 2=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=1000138 1=$url->url_create('profile', $owner->user_info.user_username) 2=get_declination_user($owner->user_displayname, 2)}
    (сама фраза у меня "Фотоальбомы <a href='%1$s'>%2$s</a>")

    там же
    HTML:
    {lang_sprintf id=1000139 1=$owner->user_displayname}
    заменить на
    HTML:
    {lang_sprintf id=1000139 1=$owner->get_declination_user($owner->user_displayname, 2)}
    (фраза "У %1$s нет Фотоальбомов.")



    В album.tpl !! Этот шаг у меня не сработал
    HTML:
    {lang_sprintf id=1000141 1=$url->url_create('profile', $owner->user_info.user_username) 2=$owner->user_displayname 3=$url->url_create('albums', $owner->user_info.user_username)}
    заменить на
    HTML:
    {lang_sprintf id=1000141 1=$url->url_create('profile', $owner->user_info.user_username) 2=get_declination_user($owner->user_displayname, 2) 3=$url->url_create('albums', $owner->user_info.user_username)}
    (фраза "<a href='%3$s'>Фотоальбомы</a> <a href='%1$s'>%2$s</a>")


    Продолжение следует... :) Кто ещё занимался внедрением русского языка на свой сайт - пишите, где что ещё нужно исправлять.

    И очень интересно узнать, почему не сработал приём в трёх отмеченных случаях.

    Кому пригодилось - не забываем про "спасибо" и плюсы в репутацию :)
    Alpert108 likes this.
  10. lem1x Thread starter Active member


    Offline
    Message Count:
    166
    Likes Received:
    68
    StormMan, Пробовали с Евгением Евтеевым просклонять пару дней назад ленту активности - к сожалению не удалось.Дело в том, что - склоняется сразу все фразы в тот падеж, в который склоняеш. Если что получится - сообщу!

    ---------- Сообщение добавлено в 12:03 ---------- Предыдущее сообщение было в 03:07 ----------

    В home.tpl есть строчка:
    PHP:
    {capture assign='action_text'}{lang_sprintf id=$actions[actions_loop].action_text 1=$actions[actions_loop].action_vars[02=$actions[actions_loop].action_vars[13=$actions[actions_loop].action_vars[24=$actions[actions_loop].action_vars[35=$actions[actions_loop].action_vars[46=$actions[actions_loop].action_vars[57=$actions[actions_loop].action_vars[6]}{/capture}
    Её меняем на:
    Code:
    {capture assign='action_text'}{lang_sprintf id=$actions[actions_loop].action_text 1=$actions[actions_loop].action_vars[0] 2=$user->get_declination_user($actions[actions_loop].action_vars[1], 2) 3=$actions[actions_loop].action_vars[2] 4=$actions[actions_loop].action_vars[3] 5=$actions[actions_loop].action_vars[4] 6=$actions[actions_loop].action_vars[5] 7=$actions[actions_loop].action_vars[6]}{/capture}
    Но склоняется вся лента активности, а вот как определенные фразы просклонять - даже не знаю...

Share This Page

All rights reserved SocEngine.ru ©