Jump to content


Popular Content

Showing content with the highest reputation since 06/03/20 in all areas

  1. 5 points
    I've seen there's a feature request submitted 7 years ago about bulk auto recalculate. I know you can do that from phpMyAdmin or with a script but enough is enough. <? /** * Bulk Auto Recalculate Client Domain & Products/Services * * @writtenby Kian * */ use WHMCS\Database\Capsule; add_hook('AdminAreaHeaderOutput', 1, function($vars) { if ($vars['filename'] == 'clientssummary' AND $_GET['userid'] AND in_array($_GET['kata'], array('bulkAutoRecalculateP', 'bulkAutoRecalculateD'))) { $adminUsername = ''; // Optional for WHMCS 7.2 and later if ($_GET['kata'] == 'bulkAutoRecalculateP') { foreach(Capsule::table('tblhosting')->where('userid', '=', $_GET['userid'])->pluck('id') as $v) { localAPI('UpdateClientProduct', array('serviceid' => $v, 'autorecalc' => true), $adminUsername); } header('Location: clientssummary.php?userid=' . $_GET['userid']); die(); } elseif ($_GET['kata'] == 'bulkAutoRecalculateD') { foreach (Capsule::table('tbldomains')->where('userid', '=', $_GET['userid'])->pluck('id') as $v) { localAPI('UpdateClientDomain', array('domainid' => $v, 'autorecalc' => true), $adminUsername); } header('Location: clientssummary.php?userid=' . $_GET['userid']); die(); } } return <<<HTML <script> $(document).ready(function(){ $('[href*="affiliates.php?action=edit&id="], [href*="clientssummary.php?userid="][href*="&activateaffiliate=true&token="]').closest('li').after(('<li><a href="#" id="kata_BulkAutoRecalculate"><i class="fas fa-fw fa-sliders-h" style="width:16px;text-align:center;"></i> Bulk Auto Recalculate</a></li>')); $('#kata_BulkAutoRecalculate').on('click', function(e){ e.preventDefault(); $('#modalAjaxTitle').html('Bulk Auto Recalculate'); $('#modalAjaxBody').html('<div class="container col-md-12"><div class="row"><div class="col-md-6 text-center"><div class="panel panel-default"><div class="panel-body"><p><i class="fas fa-box fa-5x"></i></p><p><small>Auto Recalculate Customer\'s <strong>Products/Services</strong></small></p><p><a href="clientssummary.php?userid={$_GET['userid']}&kata=bulkAutoRecalculateP" class="btn btn-info btn-block">Recalculate Now »</a></p></div></div></div><div class="col-md-6 text-center"><div class="panel panel-default"><div class="panel-body"><p><i class="fas fa-globe fa-5x"></i></p><p><small>Auto Recalculate Customer\'s <strong>Domains</strong></small></p><p><a href="clientssummary.php?userid={$_GET['userid']}&kata=bulkAutoRecalculateD" class="btn btn-info btn-block">Recalculate Now »</a></p></div></div></div></div></div>'); $('#modalAjax .modal-submit').addClass('hidden'); $('#modalAjaxLoader').hide(); $('#modalAjax .modal-dialog').addClass('modal-lg'); $('#modalAjax').modal('show'); }) }) </script> HTML; });
  2. 2 points
    Yes, this works - I'm a contact under the account which is owned by my manager, and I'm able to create tickets through that.
  3. 2 points
    Hi @aivcastaneda, you will find your answer in the 2nd answer from Brian in this post : it belongs to the SSL page but it is the same way to translate the Sitelock Page. Greetings Christian
  4. 2 points
    Personally I feel like it makes sense that tapping on the subject of the ticket opens it rather than adding it to the selection - sometimes I might need to open it briefly to check it's the right one to delete. This is how it works on various other apps such as Gmail as well.
  5. 2 points
    Hi everyone! Since I spend most of my time during the day on the WHMCS admin dashboard, answering tickets, activating services, following up with stuff, etc. I wanted to keep eye strain to a minimum, so I recently created this CSS file to turn our admin area into a dark look and feel. ------- Today, I'd like to share with you steps to achieve that. The file is compatible with Blend theme of v7.9.2 of WHMCS, I haven't tested it on the other versions yet. The process is pretty simple and straightforward IF YOU HAVEN'T MADE ANY CUSTOMIZATIONS to your Blend theme already. So just download the attached file (blend-dark.zip) and extract it anywhere in your computer. Next, open the folder and then the "images" folder to locate the (logo-dark.psd) file to edit it by placing your own logo there. Then save it as "logo-dark.gif" replacing the already existing file. Now you should end up with a file tree like this ... blend |__ css | |__ admin-dark.css | | |__ images | |__ logo-dark.gif | |__ logo-dark.psd | |__ header.tpl Now back top and compress your "blend" folder ... Name it something memorable, like "blend-2222.zip" in this example. Next navigate to the "admin" folder inside your WHMCS installation, and open the "templates" folder (based on your customizations, the "admin" folder name may differ, so this here presumes the default setting). /path/to/whmcs/admin/templates/ Next make sure to ZIP and backup your current Blend theme folder (name it something like "blend-original.zip). Next, upload the "blend-2222.zip" you compressed earlier to the "templates" folder and unzip it, and you should be all set and ready! If you have any notes or additions, please feel free to add! Also, any mistakes or errors are unintentional, please feel free to share and highlight them. Wishing everyone a good day! - Mohamed
  6. 2 points
    Hi @WHMCS John, Thanks for that. I can see that v1.0.2 resolves the timestamps and also truncates the ticket number properly. Cheers!
  7. 2 points
    Check out https://www.supportpal.com/integrations/whmcs-integration & https://docs.supportpal.com/current/WHMCS+Integration I've used it myself in a past life and it practically looks the same as WHMCS support its all nicely embedded in and has a similar look and feel as WHMCS Support Tickets, as an admin you would answer the tickets from the SupportPal UI
  8. 2 points
    there was an abandoned cart addon, but I think that ironically got abandoned. the only addon I can think of which would employ exit intent popups would be Exit Offers - but it's not free, and I don't know if it still works with the latest release.
  9. 2 points
    No one feels thanked because you had the intention to say “thank you.” I just want to take the time to say "THANK YOU" to all developers who helps WHMCS users to get their WHMCS app tweaked, fixed, customized and are still helping with many tips and things. My special "THANK YOU" get to @brian! who is the most contributor of all code changes and tweaks! Donation sent!
  10. 2 points
    I think you've really overcomplicated this by using multiple hooks and the way you're using each of them - it can be simplified to something more clearer... in fact, it could be reduced far more than i'm going to post here as i'm trying to keep it understandable for all. to a certain extent, that bit is fine... i'd argue that removing the affiliates link for everyone, then wanting to add it back just for clients, is a little silly - just remove it for non-clients. i'm not sure that you have going from that screenshot. you have to be careful because just one character wrong and it won't necessarily throw an error, the hook just won't work. out of the box, I don't think that Lagom does anything kinky with the navbars (other than to split the primary / secondary locations) - using hooks on them should still work... and i'm speaking as someone who was generously given a Lagom developers license by a client. 😎 one way I would write that hook would be... <?php add_hook('ClientAreaPrimaryNavbar', 1, function($primaryNavbar) { $client = Menu::context('client'); # remove for all if (!is_null($primaryNavbar->getChild('Home'))) { $primaryNavbar->removeChild('Home'); } # remove for non-clients if (is_null($client) && !is_null($primaryNavbar->getChild('Store'))) { $primaryNavbar->removeChild('Store'); } if (is_null($client) && !is_null($primaryNavbar->getChild('Affiliates'))) { $primaryNavbar->removeChild('Affiliates'); } if (is_null($client) && !is_null($primaryNavbar->getChild('Knowledgebase'))) { $primaryNavbar->removeChild('Knowledgebase'); } if (is_null($client) && !is_null($primaryNavbar->getChild('Announcements'))) { $primaryNavbar->removeChild('Announcements'); } # add for non-clients if (is_null($client)) { $primaryNavbar->addChild('hosting')->setLabel(Lang::trans('Hosting'))->setOrder(11); if (!is_null($primaryNavbar->getChild('hosting'))) { $primaryNavbar->getChild('hosting')->addChild('sharedhosting')->setLabel(Lang::trans('Shared Hosting'))->setURI('cart.php?gid=1')->setOrder(1); $primaryNavbar->getChild('hosting')->addChild('wordpresshosting')->setLabel(Lang::trans('WordPress Hosting'))->setURI('cart.php?gid=34')->setOrder(2); } $primaryNavbar->addChild('ecommerce')->setLabel(Lang::trans('Ecommerce Hosting'))->setOrder(12); if (!is_null($primaryNavbar->getChild('ecommerce'))) { $primaryNavbar->getChild('ecommerce')->addChild('ecommerce1')->setLabel(Lang::trans('CS-Cart Hosting'))->setURI('cart.php?gid=36')->setOrder(1); $primaryNavbar->getChild('ecommerce')->addChild('ecommerce2')->setLabel(Lang::trans('Magento Hosting'))->setOrder(2); } $primaryNavbar->addChild('vps')->setLabel(Lang::trans('Virtual Private Servers'))->setOrder(13); if (!is_null($primaryNavbar->getChild('vps'))) { $primaryNavbar->getChild('vps')->addChild('vps1')->setLabel(Lang::trans('VPS Cloud Shared'))->setURI('cart.php?gid=33')->setOrder(1); $primaryNavbar->getChild('vps')->addChild('vps2')->setLabel(Lang::trans('VPS Cloud Dedicated'))->setURI('cart.php?gid=31')->setOrder(2); } $primaryNavbar->addChild('dedicated')->setLabel(Lang::trans('Dedicated Servers'))->setURI('cart.php?gid=14')->setOrder(14); $primaryNavbar->addChild('cscart')->setLabel(Lang::trans('CS-Cart'))->setOrder(15); if (!is_null($primaryNavbar->getChild('cscart'))) { $primaryNavbar->getChild('cscart')->addChild('cscartlicenses')->setLabel(Lang::trans('CS-Cart Licenses'))->setURI('cart.php?gid=2')->setOrder(1); $primaryNavbar->getChild('cscart')->addChild('cscarthosting')->setLabel(Lang::trans('CS-Cart Hosibg'))->setURI('cart.php?gid=36')->setOrder(2); } } # add for clients only if (!is_null($client)) { $primaryNavbar->addChild('kb')->setLabel(Lang::trans('knowledgebasetitle'))->setURI('knowledgebase.php')->setOrder(50); } }); possibly an oversight on your part, but the magento child doesn't contain a link. in terms of how to add menu items for logged in users, i've done that at the end of the above hook where i've added a kb link back in for clients only. if you mean Services/Domains/Billing/Support, and removing them entirely/individually, then you don't really need to check whether the user is logged in or not - the same as you don't need to (though I do in the above hook) check that the client is not logged in when removing the "Store" link... it doesn't matter because only non-clients see the store link, clients don't (at least out of the box)... as an aside, you could nuke them with about 4 lines of code if you had to - but there are only four elements to remove, so let's not be deploying weapons of mass destruction for something so small. ☢️ note this quick method works because these default navbar children have unique names - if you had a situation where a link exists in both logged non-logged navbars (home being the obvious example), and you wanted to change their links depending on client logged in status, then under those circumstances, you would check first whether they were logged in or not... but I think for your purpose, you won't have to. so if you wanted to remove the Services tab for logged in users... if (!is_null($primaryNavbar->getChild('Services'))) { $primaryNavbar->removeChild('Services'); } that works because it checks to see of the parent exists, and only if it does, does it try to remove it - so for a non-client, it wouldn't get past the if statement. for kb, see above; for affiliates, I solved the issue by only removing it for non-logged in users - for new menu items, see above (re: kb and how I added the non-logged in parents with their kids).
  11. 2 points
    Would love to see an overhaul of themes so that we're not stuck with an old version of Bootstrap. Ideally, removing the dependency entirely so you can switch in something other than Bootstrap should you wish to. Also child themes ala Wordpress so upgrades can be done to a main theme but custom changes are isolated. An easy way to create and edit custom pages. Ability to edit and re-order the menu in the client area. Splitting of updates to WHMCS into streams for security updates and feature updates. Better responsive mobile layout in the admin area. Consistent use of OBVIOUS buttons & links in the client area. The number of times I've had to explain to clients they can click on the line in the table, anywhere, but no don't click on the URL...
  12. 1 point
    yes. the simplistic way might be to do it in the template(s), e.g {if $loggedin}output template design A{else}output template design B{/if} or you could redirect to a specific orderform template using a hook based on the loggedin status. how different will the orderforms designs be e.g are they slight variations on each other or radically different ??
  13. 1 point
    the important thing to appreciate here is that your WHMCS install isn't linked in the way you think to whmcs.com - the links within the software are just that, links.... whmcs.com is not embedded within the software, so the links to open a ticket, visit this community are just links and nothing more... hence why you need to login etc. creating admins in your WHMCS has no connectivity or interaction with whmcs.com - they're just staff that have access to your install, not whmcs.com. I suppose you could create contacts/sub-accounts on the WHMCS site for those admins who you want to be able to open tickets with WHMCS - but next time you open a ticket with them, ask them and i'm sure they'll be able to tell you if it's possible and the procedure.
  14. 1 point
    you shouldn't need to do anything to the template, just use an action hook to remove the sidebars from the left-hand side... once you have removed all of the sidebars, then the content should be displayed automatically over a wider area. <?php use WHMCS\View\Menu\Item as MenuItem; add_hook('ClientAreaPrimarySidebar', 1, function(MenuItem $primarySidebar) { if (!is_null($primarySidebar->getChild('Service Details Overview'))) { $primarySidebar->removeChild('Service Details Overview'); } if (!is_null($primarySidebar->getChild('Service Details Actions'))) { $primarySidebar->removeChild('Service Details Actions'); } });
  15. 1 point
    Preview: Code: <?php /** * @writtenby Kian */ use WHMCS\Database\Capsule; add_hook('AdminAreaHeaderOutput', 1, function($vars) { if ($vars['filename'] == 'clientsservices') { $moduleName = 'cpanel'; // Replace with your server module name if (Capsule::select(Capsule::raw('SELECT t1.id FROM tblhosting AS t1 LEFT JOIN tblproducts AS t2 ON t1.packageid = t2.id WHERE t1.id = "' . $_GET['productselect'] . '" AND t2.servertype = "' . $moduleName . '"'))) { $output .= <<<HTML <script type="text/javascript"> $(document).ready(function(){ $("#inputDedicatedip").addClass("pull-left"); $("#inputDedicatedip").closest(".fieldarea").append('<a href="https://google.com" class="btn btn-danger pull-right"><i class="fas fa-shower"></i> Bath Time</a>'); }); </script> HTML; return $output; } } }); But there's a downside that I can't figure how to solve. When you click "Products/Services" tab WHMCS brings you to a "random" product/service. The ID for this specific product is not available hence the script can't be triggered.
  16. 1 point
    Nop, it just keeps starting all over again from the beginning with splash screen and everything whenever I exit (not log out, unless pressing "Back" purposefully causes logout event). OS: Android 6.0.1
  17. 1 point
    Annyeonghaseyo? 🙂 one of the few words I still remember from times when lived and studied in Korea 🙂 welcome! how is the hosting niche in South Korea?
  18. 1 point
    Hi all, We've added the ability to long-press tickets in the list screen in v1.0.5. You can select multiple tickets and a delete icon is displayed in the top bar. Please give it a try and let us have your feedback!
  19. 1 point
    has anyone said that it's insecure? I would maintain that it's LESS secure than logging in. even if you're hosting the domain? what happens if the client has subaccounts that are entitled to receive Quote Emails and accept them ? you could then get yourself into a situation where one of them, or someone else who checks their mail, has accepted the quote, but you've got no way of knowing who is accepting it without them logging in - even if you were logging IPs etc in the hook.
  20. 1 point
    Not to mention that if you have a page that allows to accept quotes by simply visiting page.php?quoteid=1, who stops a lamer from creating a never ending loop? page.php?quoteid=1 page.php?quoteid=2 page.php?quoteid=3 page.php?quoteid=4 page.php?quoteid=5 ... page.php?quoteid=9999 It ruins your business. Even my approach is not foolproof but of course an hash is more secure than an ID. I don't think a lamer would waste time to brute force a string like a7a4d8eb90f6b1b6eb8289d36ef214978 or to reverse engineer the hash registering X times, asking N quotes and stuff like that.
  21. 1 point
    Hi @zitu4life Thanks for taking part in the WHMCS App Technical Preview and providing your feedback. We will take your feedback into consideration to improve our app 🙂
  22. 1 point
    Hello there Currently we can monitor our business with this new app , see some metrics, and also ticket reply. But my feeling is that it can get even better. - Webdesigners; - "Professional" Developers; - Webhosting business; - WHMCS it self, as a software; - And possible many more areas that are using WHMCS software; We do not have even an option to take quick notes. Idea is to have a PM addon access on the app, or if app provide a way somehow to have a quick MENU named Others where users would choose to add specific futures currently existing on WHMCS as default. Not asking for full futures, but those basically one (see current projects, create new, create tasks on the goo, mark task as completed). A cellphone usually is always with us, so even, on the beach, mountain, hospital, airport, etc, etc...great idea for a project can raise and having a way to note it before we forget is good, or even assign a new task to the team.👍 Setting Icon could be re-arranged to provide more space, as after we sett up our our app we will use it very offen.
  23. 1 point
    well done. i'll give you two presents and then i'm gone until Saturday... 🎁 if you're intent on doing this in the viewinvoice template, then it would be... {if $paymentmodule == "localbank"} <td>: 123123{$clientsdetails["customfields2"]}</td> {else} <td>: 77777{$clientsdetails["customfields2"]}</td> {/if} or... {if $paymentmethod == "Local Bank"} <td>: 123123{$clientsdetails["customfields2"]}</td> {else} <td>: 77777{$clientsdetails["customfields2"]}</td> {/if} either should work and you just need to decide whether to check for the gateway name (localbank) or its display name "Local Bank". if you're going to do it in localbank.php, then it will work there too and remove the need for you to edit the viewinvoice template (and worry about updates removing those changes in the future)... function localbank_link($params) { $code = '<p>' . '123123 ' . $params['clientdetails']['customfields2'] . '</p>'; return $code; }
  24. 1 point
    I hear you - this is a 3 day week for me (shouldn't be online on Thursday and hopefully in no condition to do so on Friday either! 🍻), so these first three days are crazily busy! oh if you just wanted to pass a link to a product and have only that product appear in the product group, of the cart then that's completely doable with a hook. last year, I posted a hook to do that for product addons, where you could link to individually addons, multiple addons, predefined groups, marketconnect groups etc... with a few minor tweaks, it can be changed to work for products instead... in my first product group, I have 12 products and if I use cart.php?gid=1 (or just cart.php) it will shown them all as normal... however, when using the modified hook, if I were to use cart.php?gid=1&pid=45, then it will only show that one product to the user. is that what you want to do? e,g give links to product(s) to different users... e.g to send someone to AV.be only, cart.php?gid=1&pid=6 ? or you could even define specific aftermarket domains into a group and only show them to the user... if so, the modified hook can do that. 🙂
  25. 1 point
    Hey brian! first at all, I want to forward a really big thank you to you as I was quite often seeing you were helping with comments related to HEXONET. Very very appreciated! Nice to see that you both managed to find a solution. I will update the documentation on our side to also include more details about a cpanel setup. Kai
  26. 1 point
    Hi Sachin I have updated the app and now it's working thank you.
  27. 1 point
    I could write a horror book about whitelabel websites 😬 I'll try to keep it short: Sending email notification using affiliates/resellers SMTP credentials Configuring multiple domains on the same installation of WHMCS (eg. pinkaffiliate.com, blueaffiliate.com...) Allowing affiliates/resellers to upload a logo and customize header, footer, change colors etc. Restrict products/services and support departments based on affiliate Invoicing end-users from the same WHMCS from multiple companies All these things are doable but it's a short step from whitelabel to multitenancy. Sooner or later people end up thinking to host multiple brands, affiliates and resellers all in the same system but WHMCS is not multi-tenant. In my opinion if an affiliate wants tu run his own website, he's not an affiliate but a reseller, a web agency or a wannabe provider. Sell him a reseller package + WHMCS license so he can play any role he wants. My opinion is based on the fact that managing such a structure is frustrating and time-consuming. If you still want to give it a try, there's a MG module named Multibrand that can be helpful.
  28. 1 point
    Same principle... {if $LANG.metadescription[$filename]} <meta name="description" content="{$LANG.metadescription[$filename]}" /> <meta property="og:description" content="{$LANG.metadescription[$filename]}" /> {/if} <meta property="og:url" content="{$systemurl}{$currentpagelinkback|replace:'|':''}" /> <meta property="og:type" content="article" /> <meta property="og:title" content="{$pagetitle}" /> Meta descriptions (OG & standard one) are basically the same thing. Title and type are nothing special. As for url, the {$systemurl}{$currentpagelinkback|replace:'|':''} combo should work but I didn't test it.
  29. 1 point
    WHMCS multi-language is based on PHP sessions meaning that spiders/crawlers can "see" and index pages only in default language. That said, translating titles, meta descriptions and contents in multiple languages is a waste of time from an SEO perspective since search engines can't see translations. Yes, from time to time Google can index things like: index.php?language=arabic index.php?language=english index.php?language=italian But there's nothing to celebrate since they're still based on sessions hence duplicate content is just around the corner. Moreover WHMCS doesn't have any SEO enhancement so you have to implement them manually. No no no no... 🥶 not keywords. This tag has been deprecated by all search engines more than a decade ago so don't waste time writing them. Anyone can write things like: Best hosting, top hosting, most powerful hosting, hosting for rich people, money, sex, tits, lady gaga naked, trump hairs, bitcoin, viagra, bungabunga berlusconi That's why keywords are no longer used. As for meta description, it is not a ranking factor. It's just a description that shows up in search results. It doesn't affect your rankings but just CTR since visitors are more inclined to click your link if there's a nice description. Anyway you can implement meta descriptions with an action hook (see below) but keep in mind that the only way to index multilingual pages is to use different URLs for each language like follows: example.com/hello example.de/hello it.example.com/ciao Canonical URLs are also needed to avoid duplicate content issues like these ones: example.com/hello example.com/HELLO example.com/hElLo Sadly WHMCS is a duplicate content generator ☹️
  30. 1 point
    Hi @zitu4life, Thanks for your detailed feedback as always! An admin user with API access will have access to all API commands. The ability to limit access to API commands is possible via Authentication Credentials: https://docs.whmcs.com/API_Authentication_Credentials Try connecting to the app using an API credential pair with API access restricted to certain commands; the statistics require the GetStats API command, so limiting access to that command in the API Role (System > GetStats) may achieve your desired result. Some experimentation may be required to get the level of access with which you're happy.
  31. 1 point
    which web hosting companies are you talking about? users are going to have to register when they order anyway (and at least then, they're parting with $$$) - I don't see the point of registering first and then being allowed to order (though i've described in other posts how to prevent access to cart unless they're logged in). the idea should be to make it easier for users to buy from you, not make them register first, or in my opinion, start throwing exit banners at them... both of which would personally put me off... others opinions may be different.
  32. 1 point
    After months of hard work, we are delighted to launch Single Page Checkout Order form with our most amazing theme Croster. This update of Croster includes so many other exciting features also along with some bug fixes. Our goal is to provide our users with the most convenient and unique experience with our products & services. Please have a look at all new exciting features we have added in this release to boost your experience and expectations with Croster. to see full changed logs please click here
  33. 1 point
    This something that they should be add long time it already 5 Years https://requests.whmcs.com/topic/two-factor-authentication-for-sub-account
  34. 1 point
    Hi Helmuts, nested product groups in the admin area? never tried, but I would be amazed if it were supported. you definitely can't nest out of the box with the client area navbar or sidebar... it can be faked (to a degree by indenting the labels using a hook), and there are addons that could do it to the navbar - though it effectively makes a fake css menu and how that would work with bredh (if that's your theme), i'm not sure. as I said, you can't nest with subcats - Advanced Menu Manager could do it in the navbar, but I suspect you're looking more for sidebar solutions with this. looking at your situation, I would be tempted to split the categories sidebar into two separate sidebars - so remove aftermarket groups from the existing categories sidebar and then create a new sidebar below it with just these domains aftermarket TLD groups... that would allow you to keep them in their current TLD product groups and that second sidebar would then be effectively split by TLD group... that solution would require a sidebar action hook to perform both tasks.
  35. 1 point
    like this blend-dark themes want use more switch css between dark and default is there some hook code ? need @brian!
  36. 1 point
    { "extensions": ".ax", "uri": "socket://whois.ax", "available": "Domain not found" }, note the closing comma is only required if this is not the last entry in the json file.
  37. 1 point
    like the one i gave you in your other thread ? that's about the only one I can think of - unless you want to get a custom theme for your entire site and if that's the case, you can look in Marketplace templates and there will be some free and paid ones there (though the free themes will often come with no support).
  38. 1 point
    <?php add_hook('ClientAreaHeadOutput', 1, function($vars) { if ($vars['templatefile'] == 'viewannouncement') { return <<<HTML <meta name="description" content="{$vars['summary']}"> HTML; } }); add_hook('ClientAreaPageAnnouncements', 1, function($vars) { return array('pagetitle' => $vars['title']); }); To be honest, there's almost no benefit in doing that due to the following reason: Meta descriptions are not a ranking factor Google "sees" WHMCS in default language only Good meta descriptions can't be simply an excerpt
  39. 1 point
    Hi @brian! , with your help, this has now been done with a great result. THANK YOU!
  40. 1 point
    up until those last five words, I would have said to just make the articles private via settings - then users would have to login to view the kb article. however, those last words mean that you'll have to check whether they're logged in and if they have active services - you can do that either in the template or using a hook - and then you can determine what to show them based on that result... that will include whether they can see categories, previews of the first lines of articles etc - you really need to think about what you want users with no active services to be able to see in the kb area.
  41. 1 point
    Hey @zitu4life, You’re asking a very expansive question there and certainly one you want to be asking of your server administrator or hosting provider. The reason for this is it vastly depends on the environment you are using. As a very basic example...A server with one CPU core that has a single process running at 100% all of the time would have a load average of 1.0, however, a server with four CPU cores, the load average would be 4.0 where the CPU’s are being fully utilised. You probably want to be concerned when the server is overloaded, in other words, the CPU(s) running over capacity. How you to determine that is based upon the server configuration/environment itself (which I gave a basic example of). I hope this helps.
  42. 1 point
    hi to file clientregister.tpl All input like the <input type="text" name="firstname" id="inputFirstName" class="field form-control"style="padding-right:40px" placeholder="{$LANG.orderForm.firstName} style="padding-right:40px" Do it
  43. 1 point
    just for completion, the usual solution for a situation like that would be to use a background image rather than specify a colour in the code... though because the image has to be A4/letter, it will increase the size of the PDF... it's been years since i've been asked about this! it's not necessarily true that it needs to use the same logo (actual same file) for all three - e.g the email logo URL can be defined in general settings... it's true that WHMCS would like to use logo.png/jpg as the source for both the website and PDF logos, but you can define what logo it used on the website by defining a path for assetLogoPath in a hook (i've posted that hook previously)... ... and as you have found out, you can define a different path in the PDF too.
  44. 1 point
    I urge caution if you have used or a planning to use the new domain pricing import function. There are so many domain extensions now and prices change reasonably often. It is pretty hard to stay on top of it and changing prices is tedious to say the least. So WHMCS has this new thing that will import prices from certain registries. In principle it is a great idea and it works well...but it hasn't been thought through properly by WHMCS. So you do your import and all your domain prices are updated. Nice. You can even quite decide on your margin for domains with quite fine granularity. Also nice. You run the import and you notice that there has been a price rise for a domain. You need to update the price that customers are paying (but only for that domain, so the bulk pricing updater isn't the tool for the job). In a customer > domain page you would check "Auto Recalculate on Save ". Well guess what, there is no global way to do that. If you have hundreds of domains with a range of prices, you are in trouble if you want to update them for each of your thousands of customers. WHMCS seems to have considered the first half of updating prices but have failed to realise the implications for users when it comes to the effect of an automated wholesale price change. The suggestions from WHMCS? Write my own module - thanks, but why should I do the work to fix a problem created by your software. And what makes you assume I have the skills to do that? Update each domain manually - I am still laughing... Use the bulk pricing updater - when you have a hammer, everything looks like a nail :P Add a feature request - someone did 7 years ago (!) and because it only got 34 votes it was closed and ignored - https://requests.whmcs.com/topic/bulk-auto-recalculate-option. A feature request system that is based on popularity is flawed and I won't use it. Post something here. - well I am doing that so maybe others will realise the implications of this pricing import "feature" that you might not have noticed. It shouldn't be hard for WHMCS to produce a utility to solve a problem they created, but there is a puzzling resistance to do so.
  45. 1 point
    Instead of pin, etc I simply ask customers to login and then open a ticket. Maybe this is not so secure?
  46. 1 point
    Me gustaria alguna recomendacion para recibir pagos en efectivo en México y de ser posible también en Colombia, pero que exista un módulo para WHMCS compatible con PHP 7.2 o superior. Agradeceria su ayuda.
  47. 1 point
    7. WHMCS Calendar - that can have recurring events (weeks/months/years etc)... though no automated emails are generated and there is no longer the calendar widget on the homepage (though the old calendar widget still works if you copy it from an older install). you could probably write a hook to convert them to todos/emails etc. I can see a possible solution in Marketplace, but i'd go along with Kian on this and do it outside of WHMCS if you can.
  48. 1 point
    well i'm not responsible for what it's called. then why isn't this corner filled with all those developers, that are currently releasing products, sharing their knowledge with others? because there is no earthly incentive for them to do so, but that's another story that I could easily get sidetracked down.... do not fall into the belief that DC is filled with developers just waiting to answer questions... it's not. the reality is that there are literally only a handful of users who even reply in DC (and none of us are paid to be here), and a couple of that handful will be WHMCS staff.... so that is a very very small percentage of available WHMCS developers... most of the rest only come here to announce the release of their commercial products and have zero interest in replying to these threads. so as I said previously, I am not preventing anyone else from replying to the thread to explain how to do it - would you have preferred that I just ignored the thread like everyone else?? I didn't ask you to explain why. the fact that you don't want to develop it commercially wouldn't matter to me... this is a public community and if I post the core functionality of a commercial product, then it will potentially damage their sales... therefore, it's a moral decision on my part - if the roles were reversed, I wouldn't want someone to give away the functionally of a commercial product that I had spent time developing. in the past, i've posted example code here that, miraculously, a few days/weeks later has been released commercially as a product by someone else.... hey it happens... if others choose to do that, then that's up to them. in any event, the information is out there... there was a free addon years ago that added a percentage/fixed fee to invoices for those paying by different gateways - it's now available on GitHub and you can examine the source code... I just quickly tried it on v7.4.2 and it still works - but bear in mind that it's unlikely to work on v8 as it still uses old MySQL queries, so its code will have to be updated before then.... and unlike what you want to do, it just changes the invoices and is not shown during checkout.
  49. 1 point
    I had a similar question which i created a support ticket for and will share the answer here since it is not in the general documentation. question: How is the default payment method for new clients defined? We currently have a free trial product which clients order and then after 30 days we upgrade them manually to a paid product but it seems that direct debit is then chosen as their default paymemt method but this is problem since they never left us their bank account details (we have a separate payment gateway for this). If i change the order of payment gateways for the paid product will this change their default payment method after we upgrade them? Or is their default payment method defined when they order the free product, and again, is this done by the order of payment gateways? answer: The system default payment method is the first payment gateway in the list when you view your gateways page. Then, depending on if the client choose a gateway other than the default when placing an order, that client could be using something different than 'default', and then there is the ability to set on the product level a specific gateway as well. The hierarchy is as follows: Invoice level (if you have the option enabled for clients to choose their own gateway when paying an invoice) Product level (this can be set per each product the client has by viewing the product details and changing the payment gateway here) Client level (what is set in the drop down on the clients profile page) System default (the first gateway in the list of configured gateways) Further to this, each product group you have setup with orderable products, you can hide specific gateways so only a certain one is used or vise versa. So if they order the free product, and you have only a specific gateway setup for this, then when they upgrade to the paid version and that free product gateway is not available for the paid one, it will then default to whatever is the default gateway or whatever the client has selected as their gateway in their profile.
  50. 1 point
    from within WHMCS, what about changing the SMTP mail settings to blank ? setup --> general settings --> mail untried, but I think it might work.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated