sven30 Posted January 9, 2018 Share Posted January 9, 2018 I have one product that I only want customers to register a new domain with their hosting. Meaning, no option for "Transfer your domain from another registrar" and no option for "I will use my existing domain and update my nameservers". Just registration option only. I just want to hide those other 2 options for this one hosting product only. pid=174 How would I configure this? Attached is what is currently there and what I'm wanting to hide. I can't find any info on hooks for this domain options area. and I really can't seem to find it in templates either. It must be in the core. Is there a way I could hide it via css or some other way using hooks still? I know all the options in admin are more "all or nothing"...or globally set for all products. Any help would be much appreciated. Link to comment Share on other sites More sharing options...
sentq Posted January 9, 2018 Share Posted January 9, 2018 go to Admin Area -> Setup -> General Settings -> Domains tab -> *Domain Registration Options* Link to comment Share on other sites More sharing options...
sven30 Posted January 9, 2018 Author Share Posted January 9, 2018 I believe that removes them globally. I just need it for one product when pid=174 is loaded. Link to comment Share on other sites More sharing options...
sentq Posted January 10, 2018 Share Posted January 10, 2018 we could use ActionHooks for this, create new PHP file inside /includes/hooks/ directory, and put the following code inside it: <?php /** * Disable the use of domain transfer, own domains for specific products, only domain register will be available * * @author SENTQ */ add_hook("ClientAreaPage", 1, function($vars){ // Specify Products IDs, where only domain registration will be available for, separate by comma "," $productIds = array(174, 175, 178); if ($vars['filename'] == "cart" && $vars['action'] == "add" && in_array($vars['productinfo']['pid'], $productIds)){ return array("transferdomainenabled" => false, "owndomainenabled" => false); } }); Link to comment Share on other sites More sharing options...
sven30 Posted January 10, 2018 Author Share Posted January 10, 2018 4 minutes ago, sentq said: we could use ActionHooks for this, create new PHP file inside /includes/hooks/ directory, and put the following code inside it: <?php /** * Disable the use of domain transfer, own domains for specific products, only domain register will be available * * @author SENTQ */ add_hook("ClientAreaPage", 1, function($vars){ // Specify Products IDs, where only domain registration will be available for, separate by comma "," $productIds = array(174, 175, 178); if ($vars['filename'] == "cart" && $vars['action'] == "add" && in_array($vars['productinfo']['pid'], $productIds)){ return array("transferdomainenabled" => false, "owndomainenabled" => false); } }); This worked like perfectly! Thank you so much!! Link to comment Share on other sites More sharing options...
brian! Posted January 10, 2018 Share Posted January 10, 2018 15 hours ago, sven30 said: This worked like perfectly! Thank you so much!! i'd be tempted to use ClientAreaPageCart and then you won't have to check that filename eq "cart"... but i'm just being picky. Link to comment Share on other sites More sharing options...
sven30 Posted January 10, 2018 Author Share Posted January 10, 2018 13 minutes ago, brian! said: i'd be tempted to use ClientAreaPageCart and then you won't have to check that filename eq "cart"... but i'm just being picky. I might test that. Where you do guys find all these variables? Like transferdomainenabled and owndomainenabled? Is there a whmcs docs page with all of them? I know there's a hook index page, but curious if there was one for all these obscure ones. Link to comment Share on other sites More sharing options...
sentq Posted January 10, 2018 Share Posted January 10, 2018 1 hour ago, brian! said: i'd be tempted to use ClientAreaPageCart and then you won't have to check that filename eq "cart"... but i'm just being picky. I don't know if client's version of WHMCS support this ActionHook point, WHMCS never mention in what version it was introduced (except in release notes), this way it's compatible with any version, right 1 hour ago, sven30 said: I might test that. Where you do guys find all these variables? Like transferdomainenabled and owndomainenabled? Is there a whmcs docs page with all of them? I know there's a hook index page, but curious if there was one for all these obscure ones. inside any template file use this smarty tag {debug} for a popup window with all available variables Link to comment Share on other sites More sharing options...
sven30 Posted January 10, 2018 Author Share Posted January 10, 2018 16 minutes ago, sentq said: I don't know if client's version of WHMCS support this ActionHook point, WHMCS never mention in what version it was introduced (except in release notes), this way it's compatible with any version, right inside any template file use this smarty tag {debug} for a popup window with all available variables I'm running v7.4.1 and about to upgrade to v7.4.2 Link to comment Share on other sites More sharing options...
sentq Posted January 10, 2018 Share Posted January 10, 2018 Just now, sven30 said: I'm running v7.4.1 and about to upgrade to v7.4.2 it should work with all versions (5.x, 6.x, 7.x) Link to comment Share on other sites More sharing options...
sven30 Posted January 10, 2018 Author Share Posted January 10, 2018 Thanks guys for your help. One thing I'be been wanting to do is trim down my code. Is it possible for someone to help me do this? Here's my complete code for this product custom cart layout (some of which we worked on above). Is there a way I can consolidate some of these hooks and if/else statements? I'm not a real programmer or a sufficient one anyway and there's a lot of redundancy in my code. Basically what my full hook file does is removes a lot of secondary and primary sidebar and navbar items, and the domain options, and mobile view dropdowns. Let me know. <?php /* Removes shopping cart left sidebar for student package only. */ use WHMCS\View\Menu\Item as MenuItem; add_hook('ClientAreaSecondarySidebar', 1, function(MenuItem $SecondarySidebar) { //Find out about product and remove items from sidebar $produtsSize=sizeOf($_SESSION['cart']['products']); $nosidebar=false; for($i = 0; $i < $produtsSize;$i++) { if ($_SESSION['cart']['products'][$i]['pid'] == 174) { $nosidebar=true; } } if($nosidebar || $_GET['pid']=="174") { if(!is_null($SecondarySidebar->getChild('Categories'))){ $SecondarySidebar->removeChild('Categories') ->removeChild('Actions') ->removeChild('Product Categories') ->removeChild('Choose Currency'); } } }); /* Removes items from primary header nav if student package only. */ add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar) { //Find out about product and remove items from primarynavbar $produtsSize=sizeOf($_SESSION['cart']['products']); $nosidebar=false; for($i = 0; $i < $produtsSize;$i++) { if ($_SESSION['cart']['products'][$i]['pid'] == 174) { $nosidebar=true; } } if($nosidebar || $_GET['pid']=="174") { $client = Menu::context('client'); if (is_null($client)) { echo $lastpage; $primaryNavbar->addChild('Home') ->setUri('https://www.allwebnow.com/students') ->setOrder(0); if (!is_null($primaryNavbar->getChild('Store'))) { $primaryNavbar->removeChild('Store') ->removeChild('Affiliates') ->removeChild('Knowledgebase') ->removeChild('Network Status') ->removeChild('Announcements'); } } } }); /* Removes Account drop down at top right for just student package only. */ add_hook('ClientAreaSecondaryNavbar', 1, function (MenuItem $secondaryNavbar) { //Find out about product and remove items from secondarynavbar $produtsSize=sizeOf($_SESSION['cart']['products']); $nosidebar=false; for($i = 0; $i < $produtsSize;$i++) { if ($_SESSION['cart']['products'][$i]['pid'] == 174) { $nosidebar=true; } } if($nosidebar || $_GET['pid']=="174") { $client = Menu::context('client'); if (is_null($client)) { if (!is_null($secondaryNavbar->getChild('Account'))) { $secondaryNavbar->removeChild('Account'); } } } }); add_hook("ClientAreaPage", 1, function($vars){ // Specify Products IDs, where only domain registration will be available for, separate by comma "," $productIds = array(174); if ($vars['filename'] == "cart" && $vars['action'] == "add" && in_array($vars['productinfo']['pid'], $productIds)){ return array("transferdomainenabled" => false, "owndomainenabled" => false); } }); //Find out about product and remove mobile product dropdown and currenty if in mobile view $produtsSize=sizeOf($_SESSION['cart']['products']); $nosidebar=false; for($i = 0; $i < $produtsSize;$i++) { if ($_SESSION['cart']['products'][$i]['pid'] == 174) { $nosidebar=true; } } if($nosidebar || $_GET['pid']=="174") { // removes mobile currency dropdown function RemoveCurrency($vars) { $output .= "<script type=\"text/javascript\"> jQuery( \"select[name='currency']\" ).remove(); </script>"; return $output; } add_hook("ClientAreaFooterOutput",1,"RemoveCurrency"); //removes mobile product category dropdown function RemoveProduct($vars) { $output .= "<script type=\"text/javascript\"> jQuery('optgroup[label=\"Product Categories\"]').remove(); </script>"; return $output; } add_hook("ClientAreaFooterOutput",1,"RemoveProduct"); } ?> Link to comment Share on other sites More sharing options...
brian! Posted January 11, 2018 Share Posted January 11, 2018 19 hours ago, sentq said: I don't know if client's version of WHMCS support this ActionHook point, WHMCS never mention in what version it was introduced (except in release notes), this way it's compatible with any version, right fair enough... if only WHMCS had detailed documentation about this sort of thing. Link to comment Share on other sites More sharing options...
sven30 Posted January 19, 2018 Author Share Posted January 19, 2018 UPDATE: So I did a whmcs upgrade to latest version and now this hook that you guys helped with doesn't seem to hide the other domain name options. Did anything change that anyone knows about in the latest release or is this hook no longer valid? If so, let me know if I need to change anything to the below code. add_hook("ClientAreaPage", 1, function($vars){ // Specify Products IDs, where only domain registration will be available for, separate by comma "," $productIds = array(174); if ($vars['filename'] == "cart" && $vars['action'] == "add" && in_array($vars['productinfo']['pid'], $productIds)){ return array("transferdomainenabled" => false, "owndomainenabled" => false); } }); Link to comment Share on other sites More sharing options...
sentq Posted January 19, 2018 Share Posted January 19, 2018 replace this line add_hook("ClientAreaPage", 1, function($vars){ with this one add_hook("ClientAreaPageCart", 1, function($vars){ just in case WHMCS doesn't allow any overrides from ClientAreaPage, let me know the result. Link to comment Share on other sites More sharing options...
sven30 Posted January 19, 2018 Author Share Posted January 19, 2018 (edited) TADA! that did it! I wonder why it was working great and consistently before and then stopped working. Regardless it's working and i'm happy. BTW, thank you so much! Edited January 19, 2018 by sven30 Link to comment Share on other sites More sharing options...
Recommended Posts