در این مقاله قصد داریم با نحوه رفع مشکل عدم نمایش آمار سیستم در مدیریت whmcs نسخه 8 درخدمت شما باشیم.
همانگونه که اطلاع دارید در whmcs نسخه 8 برخلاف نسخه های پیشین امکان مشاهده آمار کلی سیستم وجود ندارد، منظور از آمار کلی سیستم موارد زیر میباشد :
برای رفع این مشکل میتوانید از هوک زیر در سیستم خود استفاده کنید.
ابتدا در مسیر زیر یک فایل با نام دلخواه (tarh-state.php) بسازید :
includes > hooks
سپس کد های زیر را در فایل ایجاد شده کپی کنید.
<?php use WHMCS\Database\Capsule; add_hook('AdminAreaHeaderOutput', 1, function($vars) { $tarhkar = Capsule::select(Capsule::raw('SELECT value FROM tblconfiguration WHERE setting = "Version" LIMIT 1'))[0]->value; if (explode('.', $tarhkar)[0] != '8'): return; endif; $showZero = true; $ordersTotal = Capsule::select(Capsule::raw('SELECT COUNT(t1.id) AS total FROM tblorders AS t1 LEFT JOIN tblorderstatuses AS t2 ON t1.status = t2.title WHERE t2.showpending = "1"'))[0]->total; $invoicesTotal = Capsule::select(Capsule::raw('SELECT COUNT(id) AS total FROM tblinvoices WHERE status = "Unpaid" AND duedate <= CURDATE()'))[0]->total; $ticketsTotal = Capsule::select(Capsule::raw('SELECT COUNT(t1.id) AS total FROM tbltickets AS t1 LEFT JOIN tblticketstatuses AS t2 ON t1.status = t2.title WHERE t2.showawaiting = "1" AND merged_ticket_id = "0"'))[0]->total; if (!$ordersTotal AND !$invoicesTotal AND !$ticketsTotal): return; endif; $notificationsLabel = AdminLang::trans('setup.notifications'); $orderText = AdminLang::trans('stats.pendingorders'); $invoiceText = AdminLang::trans('stats.overdueinvoices'); $ticketText = AdminLang::trans('stats.ticketsawaitingreply'); if ($ordersTotal OR $showZero) { $pendingOrdersJS = <<<HTML $('#tarhkarfallback').next('ul').append('<li><a href="orders.php?status=Pending" data-toggle="tooltip" data-placement="bottom" title="{$orderText}" data-original-title="{$orderText}" style="word-wrap:break-word"><small><span class="ico-container"><i class="fad fa-shopping-cart"></i></span><span class="tarhkarfallback">{$ordersTotal}</span> {$orderText}</small></a></li>'); HTML; } if ($invoicesTotal OR $showZero) { $overdueInvoicesJS = <<<HTML $('#tarhkarfallback').next('ul').append('<li><a href="invoices.php?status=Overdue" data-toggle="tooltip" data-placement="bottom" title="{$invoiceText}" data-original-title="{$invoiceText}" style="word-wrap:break-word"><small><span class="ico-container"><i class="fad fa-sack-dollar"></i></span><span class="tarhkarfallback">{$invoicesTotal}</span> {$invoiceText}</small></a></li>'); HTML; } if ($ticketsTotal OR $showZero) { $awaitingTicketsJS = <<<HTML $('#tarhkarfallback').next('ul').append('<li><a href="supporttickets.php" data-toggle="tooltip" data-placement="bottom" title="{$ticketText}" data-original-title="{$ticketText}" style="word-wrap:break-word"><small><span class="ico-container"><i class="fad fa-question-circle"></i></span><span class="tarhkarfallback">{$ticketsTotal}</span> {$ticketText}</small></a></li>'); HTML; } return <<<HTML <script type="text/javascript"> $(document).on('ready', function() { $('ul.right-nav').first('li').prepend('<li class="bt has-dropdown"><a id="tarhkarfallback" href="#"><div class="badge-container"><i class="fas fa-exclamation-triangle always"></i><span class="badge"><span class="fas fa-times"></span></span></div><span class="visible-sidebar"> {$notificationsLabel}</span></a><ul class="drop-icons"></ul></li>'); $("*[id=\'tarhkarfallback\']").on("click", function(e) { e.preventDefault(); $(e.currentTarget).parent("li").toggleClass("expanded"); }); {$pendingOrdersJS} {$overdueInvoicesJS} {$awaitingTicketsJS} $('#tarhkarfallback').next('ul').css({"width": "350px", "left": "-134px"}); $('span.tarhkarfallback').css({"font-weight": "700"}); }); </script> HTML; });
کدنویسی هوک بگونه ای میباشد که نسخه whmcs را تشخیص داده و باکس اطلاعیه درصورتی نمایش داده میشود که حداقل یک تیکت در انتظار پاسخ و یا یک فاکتور سررسید و یا یک سفارش معلق در سیستم وجود داشته باشد، درغیر این صورت باکس اطلاعیه نمایش داده نمیشود.
امیدواریم مقاله “رفع مشکل عدم نمایش آمار سیستم در مدیریت whmcs نسخه 8” مورد رضایت شما قرار گرفته باشد.