Авторы статей

Доброго времени суток!
В общем обнародую один замечательный хак.

Его свойства:
При добавлении новости на сайте, мы не можем наглым образом указать автора статьи....
Что иногда приводит к не совсем приятным последствиям.

Данный хак позволяет:
При добавлении новости вы можете указать автора статьи (не дополнительные поля)
После статья как обычно размещается на сайте, но появляеться ещё один тег {authors}
который выводит только имя пользователя который добавил статью.

Ссылка на пользователя является активной, и при переходе по ней открывается страница вида http://ваш_сайт/avtor/имя—пользователя тут то и отображаються все статьи пользователя в не зависимости от того зарегестрирован он на сайте или нет!

файл .htaccess
добавить в любое место
RewriteRule ^avtor/([^/]*)(/?)+$ index.php?subaction=avtor&user=$1 [L]

/engine/inc/addnews.php

Найти:

    <tr>
        <td width="140" height="29" style="padding—left:5px;">{$lang['addnews_title']}</td>
        <td><input class="edit" type="text" size="55" name="title"><a href="#" class="hintanchor" onMouseover="showhint('{$lang[hint_title]}', this, event, '220px')">[?]</a></td>
    </tr>

Ниде добавить:

        <tr>
        <td width="140" height="29" style="padding—left:5px;">{$lang['users_name']}</td>
        <td><input class="edit" type="text" size="20" name="users_name"> {$lang['users_namet']}<a href="#" class="hintanchor" onMouseover="showhint('{$lang[users_name_hint]}', this, event, '220px')">[?]</a></td>
    </tr>

Найти:

    $title = $parse—>process($_POST['title']);

Ниже добавить

    $users_name = $parse—>process($_POST['users_name']);

Найти:

    $title = $db—>safesql($title);

Ниже добавить:

    $users_name = $db—>safesql($users_name);

Найти:

    if(trim($title) == "" or !$title){ msg("error",$lang['addnews_error'],$lang['addnews_ertitle'], "javascript:history.go(—1)"); }
Ниже добавить:
    if(trim($users_name) == "" or !$users_name){
        $users_name=$member_db['2'];
    }
Найти:
    if (strlen ($title) > 200) { msg("error",$lang['addnews_error'],$lang['addnews_error'], "javascript:history.go(—1)"); }
Ниже добавить:
        if (strlen ($users_name) > 80) { msg("error",$lang['users_error'],$lang['users_error'], "javascript:history.go(—1)"); }
Найти:
    $db—>query("INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_rate, allow_br, votes, access, expires, symbol) values ('$thistime', '$member_db[2]', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_rating', '$allow_br', '$add_vote', '$group_regel', '$expires', '$catalog_url')");
Заменить на:
    $db—>query("INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_rate, allow_br, votes, access, expires, symbol) values ('$thistime', '$users_name', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_rating', '$allow_br', '$add_vote', '$group_regel', '$expires', '$catalog_url')");

Файл:
language/russian/adminpnl.lng

adminlng.lng
'edit_et'            =>    "Заголовок:",
'users_name_hint'          =>    "Имя автора произведения, приславшего статью (пример <b>elektroshok</b>) Если оставить пустым будет использоваться имя администратора добавляющего новость",
'users_name'          =>    "Имя автора:",
'users_error'        =>    "Имя пользователя не больше 80 символов",
'users_namet'        =>    "Если пустое, (автор Администратор)",

Файл engine/engine.php
После
//####################################################################################################################
//         Просмотр профиля пользователя
//####################################################################################################################
        if ($subaction == 'userinfo'){
                $allow_userinfo = TRUE;
                $allow_active_news = true;
                <strong><strong>include_once</strong></strong> (ENGINE_DIR.'/modules/profile.php');
            } else {
                $allow_active_news = TRUE;
        }
Добавить ниже:
//####################################################################################################################
//         Просмотр всех статей автора
//####################################################################################################################
        if ($subaction == 'avtor'){
                $allow_userinfo = TRUE;
                $allow_active_news = true;
            } else {
                $allow_active_news = TRUE;
        }
После: (есть два варианта строки_заменить второй)
// ################ Вывод для отдельного юзера #################
    elseif ($subaction == 'userinfo')
Заменить на:
    elseif ($subaction == 'userinfo' or $subaction == 'avtor')

engine/inc/shortstory.php
Найти:

if ($config['allow_alt_url'] == "yes")
            $tpl—>set('{author}', "<a {$go_page}href="".$config['http_home_url']."user/".urlencode($row['autor'])."/">".$row['autor']."</a>");
    else
            $tpl—>set('{author}', "<a {$go_page}href="$PHP_SELF?subaction=userinfo&user=".urlencode($row['autor'])."">".$row['autor']."</a>");

Заменить на:

    if ($config['allow_alt_url'] == "yes"){
            $tpl—>set('{author}', "<a {$go_page}href="".$config['http_home_url']."user/".urlencode($row['autor'])."/">".$row['autor']."</a>");
            $tpl—>set('{authors}', "<a {$go_page}href="".$config['http_home_url']."avtor/".urlencode($row['autor'])."/">".$row['autor']."</a>");
    }else{
            $tpl—>set('{author}', "<a {$go_page}href="$PHP_SELF?subaction=userinfo&user=".urlencode($row['autor'])."">".$row['autor']."</a>");
            $tpl—>set('{authors}', "<a {$go_page}href="$PHP_SELF?subaction=avtor&user=".urlencode($row['autor'])."">".$row['autor']."</a>");
}

Fullstory.php (Аналогично предидущему)
© elektroshok
---
28 октября 2007
  • 51
 (голосов: 2)
ROW комментарии: 0

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.