Cara Membuat Link User Profile

Gambar 310. Halaman yang dapat menampilkan profile member merupakan salah satu elemen penting di dalam sebuah situs yang mengaktifkan fungsi register

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.

Member Profile

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

 

Post Terkait

Membuat Link User Profile

Cara Membuat Link User Profile pada Menu Frontend Pada sebagian situs yang sedang dibangun atau baru selesai dibangun, dimana pada situs tersebut...

Cara Menampilkan User Profile

Cara Menampilkan User Profile Secara default user profile yang telah melakukan registrasi dan aktif sebagai member sebenarnya sudah ada pada...

Author

Administrator

09 Juli 2018

Hey..... Apa kabar? Semua artikel dan layanan yang kami sediakan di sini semata-mata untuk kepentingan pengguna dan klien. Jadi jika Anda merasa membutuhkan pelayanan kami silahkan jangan ragu untuk menghubungi. Kami juga bersedia untuk melayani konsultasi online melalui media sosial, melalui komentar dan melalui halaman testimonial yang telah kami sediakan. Selain itu Anda juga dapat menggunakan kontak form yang tersedia.

Jika apa yang anda dapatkan dari situs ini bermanfaat, silahkan dukung dengan like dan share . Terimakasih telah berkunjung, silahkan kembali kapanpun anda merasa membutuhkan layanan yang kami sediakan.

Status Akun Iklan 11 Juni 2024

Saya sampaikan bahwa status akun iklan sudah saya cek dan saya kelola. Sehingga pagi ini siap untuk di jalankan.

Abaikan notifikasi/tanda yang ada; Dibatasi anggaran, merah, kuning, apapun itu mohon di abaikan. Saya sudah pertimbangkan dan sesuaikan di masing-masing akun. Pagi ini, pukul 04.45 WIB saya baru selesai periksa dan setting semua akun. Sehingga tidak ada lagi yang perlu di tanyakan. Silahkan jalankan iklan.
Ingin berbagi dengan multibisnisindo dan memberikan kontribusi....? Tulis pengalamanmu Di Sini

Terimakasih
JOPanda

Tidak ada komentar terkait posting ini, Ingin memberi komentar?