Теги авторизации через соц. сети в main.tpl
Начиная с версии dle 10.3 появилась возможность подключить возможность авторизации на сайте через социальные сети и разные сервисы популярные среди простых пользователей. Конечно их не так много как в аналогах работающих уже не один год, но все же это первый шаг скрипта и в дальнейшем их будет только больше. Главная проблема заключается именно в том, что у многих дизайн построен так, что нет места добавить кнопки именно в файл login.tpl и если вы именно из их списка, то можете воспользоваться хаком и добавить возможность использовать новую функцию dle в файле main.tpl и разместить их там где вам позволяет ваш сайт.
1. В файле index.php найти:
$tpl->set ( '{AJAX}', $ajax );
Добавить выше:
// social auth
if( $config['allow_social'] AND $config['allow_registration'] AND !$is_logged ) {
include_once (ENGINE_DIR . '/data/socialconfig.php');
if( !$_SESSION['state'] ) $_SESSION['state'] = md5(uniqid(rand(), TRUE));
if( $social_config['vk'] ) {
$social_params = array(
'client_id' => $social_config['vkid'],
'redirect_uri' => $config['http_home_url'] . "index.php?do=auth-social&provider=vk",
'scope' => 'offline,wall,email',
'state' => $_SESSION['state'],
'response_type' => 'code'
);
$tpl->set( '[vk]', "" );
$tpl->set( '[/vk]', "" );
$tpl->set( '{vk_url}', 'http://oauth.vk.com/authorize' . '?' . http_build_query($social_params) );
} else {
$tpl->set_block( "'\\[vk\\](.*?)\\[/vk\\]'si", "" );
$tpl->set( '{vk_url}', '' );
}
if( $social_config['od'] ) {
$social_params = array(
'client_id' => $social_config['odid'],
'redirect_uri' => $config['http_home_url'] . "index.php?do=auth-social&provider=od&state=" . $_SESSION['state'],
'response_type' => 'code'
);
$tpl->set( '[odnoklassniki]', "" );
$tpl->set( '[/odnoklassniki]', "" );
$tpl->set( '{odnoklassniki_url}', 'http://www.odnoklassniki.ru/oauth/authorize' . '?' . http_build_query($social_params) );
} else {
$tpl->set_block( "'\\[odnoklassniki\\](.*?)\\[/odnoklassniki\\]'si", "" );
$tpl->set( '{odnoklassniki_url}', '' );
}
if( $social_config['fc'] ) {
$social_params = array(
'client_id' => $social_config['fcid'],
'redirect_uri' => $config['http_home_url'] . "index.php?do=auth-social&provider=fc",
'scope' => 'public_profile, email',
'display' => 'popup',
'state' => $_SESSION['state'],
'response_type' => 'code'
);
$tpl->set( '[facebook]', "" );
$tpl->set( '[/facebook]', "" );
$tpl->set( '{facebook_url}', 'https://www.facebook.com/dialog/oauth' . '?' . http_build_query($social_params) );
} else {
$tpl->set_block( "'\\[facebook\\](.*?)\\[/facebook\\]'si", "" );
$tpl->set( '{facebook_url}', '' );
}
if( $social_config['google'] ) {
$social_params = array(
'client_id' => $social_config['googleid'],
'redirect_uri' => $config['http_home_url'] . "index.php?do=auth-social&provider=google",
'scope' => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile',
'state' => $_SESSION['state'],
'response_type' => 'code'
);
$tpl->set( '[google]', "" );
$tpl->set( '[/google]', "" );
$tpl->set( '{google_url}', 'https://accounts.google.com/o/oauth2/auth'.'?' . http_build_query($social_params) );
} else {
$tpl->set_block( "'\\[google\\](.*?)\\[/google\\]'si", "" );
$tpl->set( '{google_url}', '' );
}
if( $social_config['mailru'] ) {
$social_params = array(
'client_id' => $social_config['mailruid'],
'redirect_uri' => $config['http_home_url'] . "index.php?do=auth-social&provider=mailru",
'state' => $_SESSION['state'],
'response_type' => 'code'
);
$tpl->set( '[mailru]', "" );
$tpl->set( '[/mailru]', "" );
$tpl->set( '{mailru_url}', 'https://connect.mail.ru/oauth/authorize'.'?' . http_build_query($social_params) );
} else {
$tpl->set_block( "'\\[mailru\\](.*?)\\[/mailru\\]'si", "" );
$tpl->set( '{mailru_url}', '' );
}
if( $social_config['yandex'] ) {
$social_params = array(
'client_id' => $social_config['yandexid'],
'redirect_uri' => $config['http_home_url'] . "index.php?do=auth-social&provider=yandex",
'state' => $_SESSION['state'],
'response_type' => 'code'
);
$tpl->set( '[yandex]', "" );
$tpl->set( '[/yandex]', "" );
$tpl->set( '{yandex_url}', 'https://oauth.yandex.ru/authorize' . '?' . http_build_query($social_params) );
} else {
$tpl->set_block( "'\\[yandex\\](.*?)\\[/yandex\\]'si", "" );
$tpl->set( '{yandex_url}', '' );
}
} else {
$_SESSION['state'] = false;
$tpl->set_block( "'\\[vk\\](.*?)\\[/vk\\]'si", "" );
$tpl->set( '{vk_url}', '' );
$tpl->set_block( "'\\[odnoklassniki\\](.*?)\\[/odnoklassniki\\]'si", "" );
$tpl->set( '{odnoklassniki_url}', '' );
$tpl->set_block( "'\\[facebook\\](.*?)\\[/facebook\\]'si", "" );
$tpl->set( '{facebook_url}', '' );
$tpl->set_block( "'\\[google\\](.*?)\\[/google\\]'si", "" );
$tpl->set( '{google_url}', '' );
$tpl->set_block( "'\\[mailru\\](.*?)\\[/mailru\\]'si", "" );
$tpl->set( '{mailru_url}', '' );
$tpl->set_block( "'\\[yandex\\](.*?)\\[/yandex\\]'si", "" );
$tpl->set( '{yandex_url}', '' );
}
// social auth
2. В файл main.tpl, в нужное место добавить:
<div class="sociallogin">
[vk]<a href="{vk_url}" target="_blank"><img src="/templates/newtemplates/images/social/vkontakte.gif" /></a>[/vk]
[odnoklassniki]<a href="{odnoklassniki_url}" target="_blank"><img src="/templates/newtemplates/images/social/odnoklassniki.gif" /></a>[/odnoklassniki]
[facebook]<a href="{facebook_url}" target="_blank"><img src="/templates/newtemplates/images/social/facebook.gif" /></a>[/facebook]
[mailru]<a href="{mailru_url}" target="_blank"><img src="/templates/newtemplates/images/social/mailru.gif" /></a>[/mailru]
[yandex]<a href="{yandex_url}" target="_blank"><img src="/templates/newtemplates/images/social/yandex.gif" /></a>[/yandex]
[google]<a href="{google_url}" target="_blank"><img src="/templates/newtemplates/images/social/google.gif" /></a>[/google]
</div>
После маленькой манипуляции в скрипте вы сможете в любом месте main.tpl вставить теги при этом не испортив дизайн и не доставив дискомфорт своим пользователям. Будет ли данный хак работать на версиях выше dle 10.3 неизвестно, но вы всегда сможете это проверить сами.
Автор: Vitnet