Авторы статей
Доброго времени суток!
В общем обнародую один замечательный хак.
Его свойства:
При добавлении новости на сайте, мы не можем наглым образом указать автора статьи....
Что иногда приводит к не совсем приятным последствиям.
Данный хак позволяет:
При добавлении новости вы можете указать автора статьи (не дополнительные поля)
После статья как обычно размещается на сайте, но появляеться ещё один тег {authors}
который выводит только имя пользователя который добавил статью.
Ссылка на пользователя является активной, и при переходе по ней открывается страница вида http://ваш_сайт/avtor/имя—пользователя тут то и отображаються все статьи пользователя в не зависимости от того зарегестрирован он на сайте или нет!
© elektroshokВ общем обнародую один замечательный хак.
Его свойства:
При добавлении новости на сайте, мы не можем наглым образом указать автора статьи....
Что иногда приводит к не совсем приятным последствиям.
Данный хак позволяет:
При добавлении новости вы можете указать автора статьи (не дополнительные поля)
После статья как обычно размещается на сайте, но появляеться ещё один тег {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 (Аналогично предидущему)
добавить в любое место
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 (Аналогично предидущему)
---
| 28 октября 2007 | ROW | комментарии: 0 |
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.

