Cara Membuat Link User Profile
- Administrator
- Member profile, Profile member, Profile, How To Show User Profile
- 2885 Kali Dilihat
- 0 Komentar
Cara Membuat Link User Profile pada Menu Frontend
Pada sebagian situs yang sedang dibangun atau baru selesai dibangun, dimana pada situs tersebut mengaktifkan fungsi register member. Terdapat beberapa bagian element yang harus disesuaikan agar link member dapat menunjukan profile member sesuai SESSION login. Dengan kata lain agar nama member pada bebrapa elemen atau bagian tertentu dapat mengarah pada halaman profile member. Karena secara default pada elemen tertentu yang terdapat pada PopojiCms link member hanya akan diarahkan pada link url https://nama-domain.com/member, hal tersebut mengakibatkan link url mengarah pada halaman error ketika di klik. Karena sesungguhnya tidak ada halaman dengan link url tersebut. Tentang hal ini bukan berarti om Dwira Survivor tidak paham atau keliru, akan tetapi hal itu ditujukan salah satunya untuk menjaga keamanan situs terkait. Disisi lain beberapa developer yang membangun sebuah situs menginginkan link url profile member mengarah pada halaman profile member yang sesungguhnya. Berkaitan dengan hal ini telah terjadi beberapa kali di dalam group official PopojiCms di facebook, seorang developer bingung menanyakan tentang error yang terjadi ketika bermaksud mengunjungi halaman profile member dengan melakukan klik link url yang ada, simak percakapan pada kabar berita di group official PopojiCms berikut. Oleh karena itu melalui artikel ini saya akan memberikan tutorial tentang bagaimana Cara Membuat Link User Profile.
Yang perlu diketahui adalah bahwa terdapat beberapa bagian elemen yang memiliki atau menampilkan nama member dengan link url https://nama-domain.com/member, maka dalam hal ini anda juga harus melakukan perubahan di beberapa elemen. Sebagai contoh adalah pada halaman semua pengguna pada dashboard admin, secara default pada table daftar semua pengguna tidak ada link yang mengarah pada profile pengguna terkait. Untuk itu anda harus melakukan perubahan pada file admin_user.php
yaitu pada root_directory/po-content/component/user/admin_user.php
atau silahkan pelajari Cara Menampilkan User Profile. Contoh yang kedua adalah di halaman detailpost, silahkan lihat pada bagian meta post artikel ini di atas, atau pada bagian post editor dibawah. Secara default tidak akan ada aksi ketika di klik, karena tidak ada link url disana, melainkan javascript:void(0)
. Untuk melihatnya silahkan akses salah satu artikel pada situs yang anda bangun, lalu arahkan mouse pada nama post editor dan lihat di bagian sudut kiri-bawah layar komputer. Maka anda akan lihat yang tampil bukan sebuah link url melainkan javascript:void(0)
.
Dan amati juga halaman post ini, silahkan arahkan mouse pada nama post editor lalu lihat pada sudut kiri-bawah. Maka anda akan melihat sebuah link url disana, sekarang coba lakukan klik pada link tersebut, anda akan melihat halaman profile saya seperti pada gambar berikut.
Berikut adalah Cara Membuat Link User Profile
Sebelum melangkah lebih jauh, akan menjadi lebih baik jika anda membuat sebuah notifikasi bagi setiap member yang baru login agar ubah akun dengan membuat nama, buat profil, dan melengkapi foto profil dengan unggah foto profil. Supaya situs yang anda bangun benar-benar hidup sebagaimana seharusnya.
Cara Membuat Link User Profile Post Editor
Link URL Post Editor ini akan ditempatkan pada setiap post, terutama tampil pada halaman detailpost(dalam penggunaan tema Chingsy). Anda juga dapat menambahkan post editor pada elemen lain, misalnya pada halaman post di beranda, pada halaman tag, pada halaman pencarian, halaman kategori, serta halaman lain yang anda kehendaki.
Cara Membuat Link User Profile Post Editor pada elemen detailpost.php
Silahkan buka elemen file detailpost.php pada direktori root_directory/po-content/themes/theme-active/detailpost.php kemudian cari baris kode berikut:
<li><a href="javascript:void(0)"><i class="icon-user"></i><?=$this->post()->getAuthorName($post['editor']);?></a></li>
ubah baris kode tersebut menjadi seperti dibawah:
<li><a href="<?=BASE_URL;?>/member/profile/<?=$this->post()->getAuthor($post['editor'])['username'];?>" target="_blank"><i class="icon-user"></i> <?=$this->post()->getAuthorName($post['editor']);?></a></li>
Masih pada elemen file detailpost.php pada direktori root_directory/po-content/themes/theme-active/detailpost.php, silahkan gulir kebawah dan temukan baris kode berikut pada bagian post editor:
<h3 class="panel-title"><?=$this->e($front_post_by);?> <span><a href="javscript:void(0)"><?=$editor['nama_lengkap'];?></a></span></h3>
Ubah baris kode tersebut dengan menyalin kode dibawah ini:
<h3 class="panel-title"><?=$this->e($front_post_by);?> <span><a href="<?=BASE_URL;?>/member/profile/<?=$this->post()->getAuthor($post['editor'])['username'];?>"><?=$editor['nama_lengkap'];?></a></span></h3>
Cara Membuat Link User Profile Post Editor pada halaman post yang berada didalam dashboard admin
Silahkan buka elemen file admin_post.php pada root_dir/po-content/component/post/admin_post.php lalu perhatikan pada bagian Fungsi yang digunakan untuk menampilkan data json pada tabel seperti berikut:
/**
* Fungsi ini digunakan untuk menampilkan data json pada tabel.
*
* This function use for display json data in table.
*
*/
public function datatable()
{
if (!$this->auth($_SESSION['leveluser'], 'post', 'read')) {
echo $this->pohtml->error();
exit;
}
$table = 'post';
$primarykey = 'id_post';
$columns = array(
array('db' => 'p.'.$primarykey, 'dt' => '0', 'field' => $primarykey,
'formatter' => function($d, $row, $i){
return "<div class='text-center'>n
<input type='checkbox' id='titleCheckdel' />n
<input type='hidden' class='deldata' name='item[".$i."][deldata]' value='".$d."' disabled />n
</div>n";
}
),
array('db' => 'p.'.$primarykey, 'dt' => '1', 'field' => $primarykey),
array('db' => 'p.'.$primarykey, 'dt' => '2', 'field' => $primarykey,
'formatter' => function($d, $row, $i){
$post_cats = $this->podb->from('post_category')
->where('id_post', $d)
->fetchAll();
$cats = '';
foreach($post_cats as $post_cat) {
$cat_desc = $this->podb->from('category_description')
->where('id_category', $post_cat['id_category'])
->fetch();
$cats .= $cat_desc['title']." - ";
}
return rtrim($cats, " - ");
}
),
array('db' => 'pd.title', 'dt' => '3', 'field' => 'title',
'formatter' => function($d, $row, $i){
if ($row['headline'] == 'Y') {
$headline = "<i class='fa fa-star text-warning'></i> {$GLOBALS['_']['post_headline']}";
} else {
$headline = "<i class='fa fa-star'></i> {$GLOBALS['_']['post_not_headline']}";
}
return "".$d."<br /><i><a href='".$this->postring->permalink(rtrim(WEB_URL, '/'), array('id_post' => $row['id_post'], 'seotitle' => $row['seotitle'], 'date' => $row['date']))."' target='_blank'>".$this->postring->permalink(rtrim(WEB_URL, '/'), array('id_post' => $row['id_post'], 'seotitle' => $row['seotitle'], 'date' => $row['date']))."</a></i><br /><br />
<div class='btn-group btn-group-xs'>
<a class='btn btn-xs btn-default' style='font-size:11px;'><i class='fa fa-user'></i> ".$row['nama_lengkap']."</a>
<a class='btn btn-xs btn-default' style='font-size:11px;'><i class='fa fa-calendar'></i> ".date('d M y', strtotime($row['date']))."</a>
<a class='btn btn-xs btn-default tbl-subscribe' id='".$row['id_post']."' style='font-size:11px;'><i class='fa fa-rss'></i> {$GLOBALS['_']['post_subscribe']}</a>
<a class='btn btn-xs btn-default' href='route.php?mod=post&act=facebook&id=".$row['id_post']."' style='font-size:11px;'><i class='fa fa-facebook'></i> {$GLOBALS['_']['post_share']}</a>
<a class='btn btn-xs btn-default' href='route.php?mod=post&act=twitter&id=".$row['id_post']."' style='font-size:11px;'><i class='fa fa-twitter'></i> {$GLOBALS['_']['post_share']}</a>
<a class='btn btn-xs btn-default' style='font-size:11px;'><i class='fa fa-eye'></i> ".$row['hits']."</a>
<a class='btn btn-xs btn-default' id='seth".$row['id_post']."' data-headline='".$row['headline']."' style='font-size:11px;'>".$headline."</a>
</div>";
}
),
array('db' => 'p.active', 'dt' => '4', 'field' => 'active'),
array('db' => 'p.'.$primarykey, 'dt' => '5', 'field' => $primarykey,
'formatter' => function($d, $row, $i){
return "<div class='text-center'>n
<div class='btn-group btn-group-xs'>n
<a class='btn btn-xs btn-warning setheadline' id='".$d."' data-toggle='tooltip' title='{$GLOBALS['_']['post_headline']}'><i class='fa fa-star'></i></a>
<a href='admin.php?mod=post&act=edit&id=".$d."' class='btn btn-xs btn-default' id='".$d."' data-toggle='tooltip' title='{$GLOBALS['_']['action_1']}'><i class='fa fa-pencil'></i></a>
<a class='btn btn-xs btn-danger alertdel' id='".$d."' data-toggle='tooltip' title='{$GLOBALS['_']['action_2']}'><i class='fa fa-times'></i></a>
</div>n
</div>n";
}
),
array('db' => 'p.date', 'dt' => '', 'field' => 'date'),
array('db' => 'p.seotitle', 'dt' => '', 'field' => 'seotitle'),
array('db' => 'p.headline', 'dt' => '', 'field' => 'headline'),
array('db' => 'p.hits', 'dt' => '', 'field' => 'hits'),
array('db' => 'u.nama_lengkap', 'dt' => '', 'field' => 'nama_lengkap')
);
$joinquery = "FROM post AS p JOIN post_description AS pd ON (pd.id_post = p.id_post) JOIN users AS u ON (u.id_user = p.editor)";
if ($_SESSION['leveluser'] == '1' || $_SESSION['leveluser'] == '2') {
$extrawhere = "pd.id_language = '1'";
} else {
$extrawhere = "pd.id_language = '1' AND p.editor = '".$_SESSION['iduser']."'";
}
echo json_encode(SSP::simple($_POST, $this->poconnect, $table, $primarykey, $columns, $joinquery, $extrawhere));
}
Sesuaikan bagian diatas menjadi seperti dibawah ini:
/**
* Fungsi ini digunakan untuk menampilkan data json pada tabel.
*
* This function use for display json data in table.
*
*/
public function datatable()
{
if (!$this->auth($_SESSION['leveluser'], 'post', 'read')) {
echo $this->pohtml->error();
exit;
}
$table = 'post';
$primarykey = 'id_post';
$columns = array(
array('db' => 'p.'.$primarykey, 'dt' => '0', 'field' => $primarykey,
'formatter' => function($d, $row, $i){
return "<div class='text-center'>n
<input type='checkbox' id='titleCheckdel' />n
<input type='hidden' class='deldata' name='item[".$i."][deldata]' value='".$d."' disabled />n
</div>n";
}
),
array('db' => 'p.'.$primarykey, 'dt' => '1', 'field' => $primarykey),
array('db' => 'p.'.$primarykey, 'dt' => '2', 'field' => $primarykey,
'formatter' => function($d, $row, $i){
$post_cats = $this->podb->from('post_category')
->where('id_post', $d)
->fetchAll();
$cats = '';
foreach($post_cats as $post_cat) {
$cat_desc = $this->podb->from('category_description')
->where('id_category', $post_cat['id_category'])
->fetch();
$cats .= $cat_desc['title']." - ";
}
return rtrim($cats, " - ");
}
),
array('db' => 'pd.title', 'dt' => '3', 'field' => 'title',
'formatter' => function($d, $row, $i){
if ($row['headline'] == 'Y') {
$headline = "<i class='fa fa-star text-warning'></i> {$GLOBALS['_']['post_headline']}";
} else {
$headline = "<i class='fa fa-star'></i> {$GLOBALS['_']['post_not_headline']}";
}
return "".$d."<br /><i><a href='".$this->postring->permalink(rtrim(WEB_URL, '/'), array('id_post' => $row['id_post'], 'seotitle' => $row['seotitle'], 'date' => $row['date']))."' target='_blank'>".$this->postring->permalink(rtrim(WEB_URL, '/'), array('id_post' => $row['id_post'], 'seotitle' => $row['seotitle'], 'date' => $row['date']))."</a></i><br /><br />
<div class='btn-group btn-group-xs'>
<a class='btn btn-xs btn-default' style='font-size:11px;' href='".WEB_URL."member/profile/".$row['username']."' target='_blank'><i class='fa fa-user'></i> ".$row['nama_lengkap']."</a>
<a class='btn btn-xs btn-default' style='font-size:11px;'><i class='fa fa-calendar'></i> ".date('d M y', strtotime($row['date']))."</a>
<a class='btn btn-xs btn-default tbl-subscribe' id='".$row['id_post']."' style='font-size:11px;'><i class='fa fa-rss'></i> {$GLOBALS['_']['post_subscribe']}</a>
<a class='btn btn-xs btn-default' href='route.php?mod=post&act=facebook&id=".$row['id_post']."' style='font-size:11px;'><i class='fa fa-facebook'></i> {$GLOBALS['_']['post_share']}</a>
<a class='btn btn-xs btn-default' href='route.php?mod=post&act=twitter&id=".$row['id_post']."' style='font-size:11px;'><i class='fa fa-twitter'></i> {$GLOBALS['_']['post_share']}</a>
<a class='btn btn-xs btn-default' style='font-size:11px;'><i class='fa fa-eye'></i> ".$row['hits']."</a>
<a class='btn btn-xs btn-default' id='seth".$row['id_post']."' data-headline='".$row['headline']."' style='font-size:11px;'>".$headline."</a>
</div>";
}
),
array('db' => 'p.active', 'dt' => '4', 'field' => 'active'),
array('db' => 'p.'.$primarykey, 'dt' => '5', 'field' => $primarykey,
'formatter' => function($d, $row, $i){
return "<div class='text-center'>n
<div class='btn-group btn-group-xs'>n
<a class='btn btn-xs btn-warning setheadline' id='".$d."' data-toggle='tooltip' title='{$GLOBALS['_']['post_headline']}'><i class='fa fa-star'></i></a>
<a href='admin.php?mod=post&act=edit&id=".$d."' class='btn btn-xs btn-default' id='".$d."' data-toggle='tooltip' title='{$GLOBALS['_']['action_1']}'><i class='fa fa-pencil'></i></a>
<a class='btn btn-xs btn-danger alertdel' id='".$d."' data-toggle='tooltip' title='{$GLOBALS['_']['action_2']}'><i class='fa fa-times'></i></a>
</div>n
</div>n";
}
),
array('db' => 'p.date', 'dt' => '', 'field' => 'date'),
array('db' => 'p.seotitle', 'dt' => '', 'field' => 'seotitle'),
array('db' => 'p.headline', 'dt' => '', 'field' => 'headline'),
array('db' => 'p.hits', 'dt' => '', 'field' => 'hits'),
array('db' => 'u.nama_lengkap', 'dt' => '', 'field' => 'nama_lengkap'),
array('db' => 'u.username', 'dt' => '', 'field' => 'username')
);
$joinquery = "FROM post AS p JOIN post_description AS pd ON (pd.id_post = p.id_post) JOIN users AS u ON (u.id_user = p.editor)";
if ($_SESSION['leveluser'] == '1' || $_SESSION['leveluser'] == '2') {
$extrawhere = "pd.id_language = '1'";
} else {
$extrawhere = "pd.id_language = '1' AND p.editor = '".$_SESSION['iduser']."'";
}
echo json_encode(SSP::simple($_POST, $this->poconnect, $table, $primarykey, $columns, $joinquery, $extrawhere));
}
Cara Membuat Link User Profile SESSION login member username
Link URL profile member ini akan tampil pada bagian menu frontend situs yang anda bangun saat member terkait sedang login, sebagai contoh dapat anda lihat pada gambar diatas.
Untuk itu silahkan buka file header.php pada root_dir/po-content/themes/theme-active/header.php, secara default link url pada SESSION login member username adalah seperti berikut:
<li><a href="<?=BASE_URL;?>/member"><?=$_SESSION['namauser_member'];?></a></li>
Ubah baris kode tersebut menjadi seperti berikut ini:
<li><a href="<?=BASE_URL;?>/member/profile/<?=$_SESSION['namauser_member'];?>"><?=$_SESSION['namauser_member'];?></a></li>
Link URL SESSION login member username tersebut hanya berlaku untuk level member yang login melalui link url https://nama-domain.com/member/login
. Bagaimana untuk menampilkan SESSION login member superadmin dan admin yang login melalui https://nama-domain.com/po-admin
?
Setelah anda menyesuaikan Link URL SESSION login member username yang login melalui link url https://nama-domain.com/member/login
, sekarang anda memiliki struktur kode seperti berikut pada elemen file header.php:
<?php if ($this->pocore()->call->posetting[17]['value'] == 'Y') { ?>
<?php if (empty($_SESSION['namauser_member']) AND empty($_SESSION['passuser_member']) AND empty($_SESSION['login_member'])) { ?>
<li class="dropdown magz-dropdown"><a href="#"> <i class="ion-person"></i></a>
<ul class="dropdown-menu">
<li><a href="<?=BASE_URL;?>/member/login"><i class="ion-person"></i> <?=$this->e($front_member_login);?></a></li>
<li><a href="<?=BASE_URL;?>/member/register"><i class="ion-person-add"></i> <?=$this->e($front_member_register);?></a></li>
</ul>
</li>
<?php } else { ?>
<li><a href="<?=BASE_URL;?>/member/profile/<?=$_SESSION['namauser_member'];?>"><i class="ion-person"></i> <?=$_SESSION['namauser_member'];?></a></li>
<?php } ?>
<?php } ?>
Untuk menampilkan SESSION login member superadmin dan admin yang login melalui https://nama-domain.com/po-admin
silahkan tambahkan baris kode berikut ini:
<?php if (empty($_SESSION['namauser']) AND empty($_SESSION['passuser']) AND $_SESSION['login'] == 0) { ?>
<li><a href="<?=BASE_URL;?>/po-admin" data-lightbox="ajax-gallery"><?=$this->e($front_member_login);?> Admin</a></li>
<?php } else { ?>
<li><a href="<?=BASE_URL;?>/member/profile/<?=$_SESSION['namauser'];?>" data-lightbox="ajax-gallery"><?=$_SESSION['namauser'];?></a></li>
Sehingga secara keseluruhan anda akan memiliki struktur kode berikut pada elemen file header.php:
<?php if ($this->pocore()->call->posetting[17]['value'] == 'Y') { ?>
<?php if (empty($_SESSION['namauser_member']) AND empty($_SESSION['passuser_member']) AND empty($_SESSION['login_member'])) { ?>
<li><a href="<?=BASE_URL;?>/member/login" data-lightbox="ajax-gallery"><i class="icon-user text-info"></i></a>
<ul>
<li><a href="<?=BASE_URL;?>/member/login" data-lightbox="ajax-gallery"><?=$this->e($front_member_login);?></a></li>
<li><a href="<?=BASE_URL;?>/member/register" data-lightbox="ajax-gallery"><?=$this->e($front_member_register);?></a></li>
</ul>
</li>
<?php } else { ?>
<li><a href="<?=BASE_URL;?>/member/profile/<?=$_SESSION['namauser_member'];?>" data-lightbox="ajax-gallery"><?=$_SESSION['namauser_member'];?></a></li>
<?php } ?>
<?php if (empty($_SESSION['namauser']) AND empty($_SESSION['passuser']) AND $_SESSION['login'] == 0) { ?>
<li><a href="<?=BASE_URL;?>/po-admin" data-lightbox="ajax-gallery"><?=$this->e($front_member_login);?> Admin</a></li>
<?php } else { ?>
<li><a href="<?=BASE_URL;?>/member/profile/<?=$_SESSION['namauser'];?>" data-lightbox="ajax-gallery"><?=$_SESSION['namauser'];?></a></li>
<?php } ?>
<?php } ?>
Yang menjadi sangat penting berkaitan dengan aktifnya fungsi register dan login, serta ditampilkanya link url SESSION member login adalah keamanan situs anda. Untuk itu silahkan merujuk pada artikel tentang cara Merubah nama folder, Permission Login Admin Berdasarkan IP, Scurity login admin berdasarkan IP address menggunakan htaccess, dan yang belum sempat saya buat artikelnya adalah Cara instal Fake Admin Panel Honeypot dan SECURITY Protection dimana ini adalah sebuah cms.
Saya merasa bahwa apa yang telah saya berikan cukup jelas, selebihnya dapat anda kembangkan sesuai dengan kebutuhan anda. Jika anda mengalami kesulitan dalam implementasi, atau membutuhkan bantuan dalam pegembangan. Maka silahkan berikan kontribusi melalui formulir komentar yang telah tersedia. Terimakasih telah berkunjung