ग्राहक खाता डैशबोर्ड लिंक कैसे निकालें


39

मैं ग्राहक खाता डैशबोर्ड बाएं पैनल के निम्नलिखित लिंक निकालना चाहता हूं?

  • मेरे अनुप्रयोग
  • उपहार रजिस्ट्री
  • इनामी अंक
  • गिफ्ट कार्ड लिंक

मैं Magento 1.7 सामुदायिक संस्करण में काम कर रहा हूँ। किसी भी तरह की सहायता को आभार समझेंगे।


आप इस मुफ्त और आसान 'प्लग एंड प्ले' एक्सटेंशन का भी उपयोग कर सकते हैं: magentocommerce.com/magento-connect/…
गेरार्ड डे

Magento, जहाँ कुछ ऐसा प्रतीत होता है कि आसान कुछ अनावश्यक रूप से मुश्किल में बदल जाता है।
जोशुआ 34

जवाबों:


52

चरण 1: (yourPackage / YourTemplate / ग्राहक / खाता / नेविगेशन.phtml) पर जाएं

चरण 2: नीचे की पंक्ति बदलें

<?php $count = count($links); ?>
        **With**
<?php $_count = count($_links); /* Add or Remove Account Left Navigation Links Here -*/
      unset($_links['account']); /* Account Info */     
      unset($_links['account_edit']); /* Account Info */            
      unset($_links['tags']); /* My Tags */
      unset($_links['invitations']); /* My Invitations */
      unset($_links['reviews']);  /* Reviews */
      unset($_links['wishlist']); /* Wishlist */
      unset($_links['newsletter']); /* Newsletter */
      unset($_links['orders']); /* My Orders */
      unset($_links['address_book']); /* Address */
      unset($_links['enterprise_customerbalance']); /* Store Credit */
      unset($_links['OAuth Customer Tokens']); /* My Applications */
      unset($_links['enterprise_reward']); /* Reward Points */
      unset($_links['giftregistry']); /* Gift Registry */
      unset($_links['downloadable_products']); /* My Downloadable Products */
      unset($_links['recurring_profiles']); /* Recurring Profiles */
      unset($_links['billing_agreements']); /* Billing Agreements */
      unset($_links['enterprise_giftcardaccount']); /* Gift Card Link */
?>

उपरोक्त कोड स्निपेट में सभी नेविगेशन लिंक को हटाने का तरीका है। आशा है कि यह सब मदद करेगा।

संदर्भ लिंक: https://github.com/Aproducktion/Magento-Remove-Dashboard-Links


5
यदि आप लेआउट का उपयोग करके कुछ ठीक कर सकते हैं तो XML का I इस तरह हार्डकोडेड समाधान का उपयोग करने की सलाह देगा। @ उसका जवाब एक बहुत साफ क्लीनर है।
Sander Mangel

1
@SanderMangel, क्या आपका मतलब है If you can't??
प्रातः

2
नहीं, वह अर्थ है "मैं सलाह होगा के खिलाफ "
फैबियन Schmengler

यह उत्तर सिस्टम की अंतर्निहित कार्यक्षमता तक पहुंच को रोकता नहीं है जिसे वह हटाने का प्रयास करता है - उत्तर में एक अस्वीकरण जोड़ा जाना चाहिए। सही मार्गों पर जाने या कर्ल का उपयोग करने से पूर्ण अनफ़िट हो जाएगा।
ल्यूक ए। लेबर

नहीं, उसका मतलब है 'मैं सलाह
दूंगा

28

मुझे यहाँ 2 विकल्प दिखाई दे रहे हैं।

पहला और सबसे आसान: बस उन लेआउट आइटम को जोड़ने वाली लेआउट फाइलें ढूंढें और उनके लिए कोड टिप्पणी करें।
उदाहरण के लिए एक्सएमएल के इस Peice के माध्यम से My applicationsजोड़ा app/design/frontend/{interface}/{theme}/layout/oauth.xmlजाता है

<customer_account>
    <reference name="customer_account_navigation">
        <action method="addLink" translate="label" module="oauth">
            <name>OAuth Customer Tokens</name>
            <path>oauth/customer_token</path>
            <label>My Applications</label>
        </action>
    </reference>
</customer_account>

दूसरा तरीका, कि मुझे 100% यकीन नहीं है कि यह काम करेगा इस xml local.xmlको अपने विषय के लेआउट फ़ाइल के अंदर जोड़ना है :

<customer_account>
    <reference name="customer_account_navigation">
        <action method="removeLinkByUrl"><url>oauth/customer_token</url></action>
    </reference>
</customer_account>

आपको <action>प्रत्येक लिंक के लिए एक टैग जोड़ना होगा जिसे आप हटाना चाहते हैं।

तीसरा विकल्प भी है, यदि आप मॉड्यूल का उपयोग नहीं कर रहे हैं, तो उन्हें अक्षम करें। यह भी प्रदर्शन को बढ़ावा दे सकता है।
इसके लिए यह फाइल बनाएं: app/etc/modules/Zzzz.xmlइस सामग्री के साथ:

<config>
    <modules>
        <Mage_Oauth>
             <active>false</active>
        </Mage_Oauth>
    </modules>
</config>

आपको कुछ परेशानी हो सकती है यहां कुछ अन्य मॉड्यूल हैं जिन्हें आप उपयोग करना चाहते हैं, उन लोगों पर निर्भर करें जिन्हें आप अक्षम करना चाहते हैं।


धन्यवाद @ उत्तर के लिए मर्सिए। वैसे मैंने दूसरा विकल्प (removeLinkByUrl) आज़माया था जो आपने प्रश्न डालने से पहले सुझाया था। लेकिन ऐसा लगता है कि यह मेरे लिए काम नहीं किया।
ओशन

4
दूसरा विकल्प काम नहीं कर सकता क्योंकि Mage_Customer_Block_Account_Navigationविरासत में नहीं मिला है Mage_Page_Block_Template_Links
एम पी

26

एक FOSS एक्सटेंशन है जो बैकएंड विकल्प को रिमोट अकाउंट लिंक से जोड़ता है।

एक दूसरा मॉड्यूल है (भी FOSS) जो removeLinkविधि जोड़ता है ताकि आप अपने में निम्नलिखित का उपयोग कर सकेंlocal.xml

अस्वीकरण: मैं दूसरे एक्सटेंशन का डेवलपर हूं।

<customer_account>
        <reference name="customer_account_navigation">
            <action method="removeLink"><name>OAuth Customer Tokens</name></action>
            <action method="removeLink"><name>billing_agreements</name></action>
            <action method="removeLink"><name>recurring_profiles</name></action>
        </reference>
 </customer_account>

स्थानीय से कई तकनीकों के साथ खिलवाड़ करने के बाद। PHP इन ओपन-सोर्स समाधानों को ओवरराइड करता है मेरे पसंदीदा हैं।
माइकल थॉम्पसन

5

सरल समाधान (कार्यान्वयन और उपयोग) मैंने पाया बदलने के लिए है Mage_Customer_Block_Account_Navigationमें app/code/localऔर एक को जोड़ने removeLinkByNameविधि है, जो के रूप में ही होता है Oshan का जवाब है, लेकिन लेआउट फाइलों से प्रयोग करने योग्य है। एक अधिक परंपरागत वर्ग पुनर्लेखन भी काम करेगा, लेकिन संभावित रूप से एक प्लगइन के साथ टकराव का कारण बन सकता है।

चेतावनी! Untested!

एक अधिक जटिल समाधान अपने स्वयं के मॉड्यूल को लिखना होगा Blockजिसके साथ एक विस्तार होता है Mage_Customer_Block_Account_Navigationऔर एक removeLinkByNameविधि शामिल होती है। इस कार्य के लिए, आपको customer_account_navigationब्लॉक को हटाना / हटाना होगा और इसे अपने नए मॉड्यूल के साथ बदलना होगा। तब से, किसी भी समय customer_account_navigationलेआउट में संदर्भित किया जाता है, आपको एक उदाहरण मिलेगा removeLinkByName


मैंने दूसरा विकल्प किया, यह उचित मात्रा में काम है, लेकिन यह काम करता है। मुझे लगभग दो घंटे का समय लगा और मैं पूर्णकालिक Magento के सलाहकार और PHP / Linux डेवलपर के रूप में काम करता हूं। अगर किसी को विवरण की आवश्यकता है, तो मुझे पी.एम.
सिलिकॉनट्रस्टस्टार

सबसे सरल समाधान ist को खत्म करने के लिए एक मुख्य वर्ग है जब वहाँ बहुत सारे समाधान होते हैं?
रिया वेप्रेच

5

एक त्वरित समाधान, बिलिंग आदेशों, आवर्ती प्रोफाइल, मेरे अनुप्रयोगों और मेरे डाउनलोड करने योग्य उत्पादों सहित मेरे आदेशों के नीचे मेरे सभी खाता सूची आइटम निकालने के लिए। Magento 1.9 पर परीक्षण की गई साइट पर, मेरी विशलिस्ट और मेरे न्यूज़लेटर लिंक को भी हटा देंगे:

एप्लिकेशन / डिज़ाइन / फ़्रंट / डिफ़ॉल्ट / ORTHEME / लेआउट / विशलिस्ट / xml से लाइन्स 31 - 66 पर टिप्पणी करें (यदि ऐप / डिज़ाइन / फ्रंटेंड / आरडब्ल्यूडी / डिफॉल्ट / लेआउट / विशलिस्ट / xml से इसे कॉपी न करें)

<!--default>
    <reference name="top.links">
        <block type="wishlist/links" name="wishlist_link" />
        <action method="addLinkBlock"><blockName>wishlist_link</blockName></action>
    </reference>

    <!-- Mage_Wishlist -->
    <!--reference name="right">
        <block type="wishlist/customer_sidebar" name="wishlist_sidebar" as="wishlist" after="cart_sidebar" template="wishlist/sidebar.phtml" />
    </reference>
</default-->
<!--customer_account>
    <!-- Mage_Wishlist -->
    <!--reference name="customer_account_navigation">
        <action method="addLink" translate="label" module="wishlist" ifconfig="wishlist/general/active"><name>wishlist</name><path>wishlist/</path><label>My Wishlist</label></action>
    </reference-->
<!--/customer_account-->
<!--customer_account_index>
    <reference name="right">
        <action method="unsetChild"><name>wishlist</name></action>
    </reference>
</customer_account_index-->

एप्लिकेशन / डिज़ाइन / फ्रंटएंड / डिफ़ॉल्ट / ORTHEME / लेआउट / न्यूज़लेटर.xml से 47 - 65 की टिप्पणी करें (यदि एप्लिकेशन / डिज़ाइन / फ्रंट / rwd / डिफ़ॉल्ट / न्यूज़लेटर / xxml से इसे कॉपी न करें)

न्यूज़लेटर </ name> न्यूज़लेटर / प्रबंधन / </ path> न्यूज़लेटर सदस्यता </ लेबल> </ कार्रवाई> </ संदर्भ> </ customer_account ->

<!--newsletter_manage_index translate="label">
    <label>Customer My Account Newsletter Subscriptions</label>
    <update handle="customer_account"/>
    <reference name="my.account.wrapper">
        <block type="customer/newsletter" name="customer_newsletter">
            <block type="page/html_wrapper" name="customer.newsletter.form.before" as="form_before" translate="label">
                <label>Newsletter Subscription Form Before</label>
            </block>
        </block>
    </reference>
</newsletter_manage_index!-->

सीएसएस (अपनी आवश्यकताओं के अनुसार समायोजित करें)

.block-account .block-content ul li:nth-last-child(1),  .block-account .block-content ul li:nth-last-child(2),  .block-account .block-content ul li:nth-last-child(3),  .block-account .block-content ul li:nth-last-child(4) {
display: none;
}

.cart-table .cart-links > li:last-child {
display:none;
}

5

लिंक हटाने से बचने के लिए, मैं $ _index चर के आधार पर आईडी मान निर्दिष्ट करने की सलाह दूंगा, ताकि आप सीएसएस के माध्यम से लिंक छिपा सकें।

यहाँ मैंने क्या किया है:

YourPackage / YourTemplate / ग्राहक / खाते / नेविगेशन.phtml से

        <?php foreach ($_links as $_link): ?>
            <?php $_last = ($_index++ >= $_count); ?>
            <?php if ($this->isActive($_link)): ?>
                <li class="current<?php echo ($_last ? ' last' : '') ?>" id="account-link-<?php echo $_index;?>"><strong><?php echo $_link->getLabel() ?></strong></li>
            <?php else: ?>
                <li<?php echo ($_last ? ' class="last"' : '') ?> id="account-link-<?php echo $_index;?>"><a href="<?php echo $_link->getUrl() ?>"><?php echo $_link->getLabel() ?></a></li>
            <?php endif; ?>
        <?php endforeach; ?>

तो जाहिर है तब आप जा सकते हैं

        #account-link-1 {
            display:none;
        }

बिल्ली की खाल उतारने का कोई एक तरीका नहीं है, लेकिन यह वास्तव में किसी भी कार्यक्षमता से समझौता किए बिना एक त्वरित और आसान विकल्प है।


1
स्पष्ट रूप से ध्यान दें कि यह उपयोगकर्ताओं को सवाल में सुविधाओं के पीछे की कार्यक्षमता तक पहुंचने से नहीं रोकेगा। पूर्ण एक्सेस या तो CSS एडिट है या क्विक एड्रेस बार एडिटिंग है ... इसलिए सुविधाओं का उपयोग न करने वाले लोगों पर भरोसा न करें।
ल्यूक ए। लेबर

यह काफी उचित है और मैं पूरी तरह से समझता हूं कि आप कहां से आ रहे हैं। मैं सख्ती से इस कार्यक्षमता को हटाना नहीं चाहता था, लेकिन मैं इसे छिपाना चाहता था क्योंकि ग्राहक को विशेष रूप से लगा कि यह उनके ग्राहकों को भ्रमित कर सकता है। प्रत्येक के लिए उनके अपने मेरा अंदाज़ा है!
थॉमस हार्डिंग

5

मैंने सोचा कि ब्लॉक को फिर से लिखने के लिए एक बेहतर समाधान होगा। यह ऊपर उल्लेख किया गया था लेकिन कोई उदाहरण नहीं था:

वैश्विक खंड में अपने config.xml में फिर से लिखें

<blocks>
    <customer>
        <rewrite>
            <account_navigation>Your_Module_Block_Customer_Account_Navigation</account_navigation>
        </rewrite>
    </customer>
</blocks>

Mage_Customer_Block_Account_Navigation में ओवरलिंक जोड़ें:

class Your_Module_Block_Customer_Account_Navigation extends Mage_Customer_Block_Account_Navigation
{
    private $exclude_links = null;

    public function addLink($name, $path, $label, $urlParams=array())
    {
        if (!$this->exclude_links) {
            $this->exclude_links = array(
                'OAuth Customer Tokens', /* My Applications */
                'downloadable_products', /* My Downloadable Products */
                'recurring_profiles', /* Recurring Profiles */
                'billing_agreements' /* Billing Agreements */
            );
        }

        if (!in_array($name, $this->exclude_links)) {
            return parent::addLink($name, $path, $label, $urlParams);
        }
    }
}

यदि आप बहिष्कृत लिंक को हार्ड-कोड नहीं करना चाहते हैं, तो बहिष्करण_लिंक सरणी एक विन्यास सेटिंग से खींच सकती है ।


3

इसके बारे में मैंने जाना है: http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/

हम मानक Magento लेआउट के लगभग सभी लेआउट पहलुओं को बदल सकते हैं, हालांकि कुछ स्थितियां हैं जब यह दृष्टिकोण विफल हो जाता है। विशेष रूप से, यह उस मिनट को स्वयं प्रकट करता है जिसे आप शीर्ष को संशोधित करना चाहते हैं। इस ब्लॉक में आइटम addLink एक्शन पद्धति का उपयोग करके जोड़े जाते हैं, इसलिए यदि आप सोच रहे हैं कि डिफ़ॉल्ट सेट से कुछ लिंक कैसे निकालें, तो उत्तर है, आप नहीं कर सकते हैं! दुर्भाग्य से, पृष्ठ / टेम्पलेट_लिंक ब्लॉक वर्ग एक 'रिमूवल' एक्शन पद्धति को लागू नहीं करता है, इसलिए रिज़ॉर्ट को पूरा ब्लॉक हटाने के लिए अनसेटसिल्ड एप्रोच का उपयोग करना होता है और लिंक ब्लॉक को हमारे अपने लिंक के साथ जोड़ना होता है, जो कि local.xml में जोड़ा जाता है।


2

मैं आपको सबसे पहले यह बताना चाहूंगा कि आपकी समस्याओं को हल करने के विभिन्न तरीके हैं।

  1. यह सबसे आसान तरीका है जो layout.xmlफ़ाइल को आधार के अंदर फ़ाइल में पाया जाता है जिसे आप उदाहरण के लिए हटाना चाहते हैं: अगर मैं "मेरे टैग" को हटाना चाहता हूं तो बस भाग पर टिप्पणी करें।

    <customer_account>
        <!-- Mage_Tag -->
        <reference name="customer_account_navigation">
            <action method="addLink" translate="label" module="tag"><name>tags</name><path>tag/customer/</path><label>My Tags</label></action>
        </reference>
    </customer_account>
    

    लेकिन आप जानते हैं कि हमें आधार फ़ाइल को संशोधित नहीं करना चाहिए, इसलिए एक और अगली सरल विधि जिसे निष्पादित किया जा सकता है

  2. अपने टेम्पलेट navigation.phtmlफ़ाइल में लिंक को खोलना। अपनी फ़ाइल को अपने विषय में कॉपी करें (नोट: फ़ोल्डर संरचना समान होनी चाहिए) base\default\template\customer\account\navigation.phtml। जो उपरोक्त उत्तर में दिखाया गया है।

  3. एक और थकाऊ काम अपने मुख्य मॉड्यूल को फिर से लिखना और एक विधि "RemoveLinkByName" बनाना है।


2

खाता डैशबोर्ड सुविधाओं को हटाने के लिए एक पूर्ण समाधान में क्लाइंट-साइड और सर्वर-साइड संशोधन दोनों शामिल हैं। यदि केवल क्लाइंट-साइड को हटा दिया जाता है और / या छिपा दिया जाता है, तो अभी भी तकनीक के जानकार उपयोगकर्ताओं को अपने ब्राउज़र में मार्गों को हस्त-मैथुन करके या अधिक परिष्कृत CURL "हमले" का उपयोग करके सुविधाओं को एक्सेस करने से रोकना नहीं है (जिसमें उचित शामिल हो सकते हैं) CSRF टोकन और सही के माध्यम से पर्ची)।

क्लाइंट-पक्ष आसानी से XML अपडेट के माध्यम से प्राप्त किया जाता है जैसा कि पहले से दिए गए उत्तरों के ढेरों द्वारा इंगित किया गया है।

सर्वर-साइड थोड़ा अधिक जटिल है और इसे हटाए जाने वाले कार्यक्षमता की समझ की आवश्यकता है।

व्यक्तिगत रूप से, मैं पर्यवेक्षकों द्वारा सशर्त रूप से मना किए गए HTTP स्टेटस कोड को हटाए गए फीचर के प्रत्येक रूट पर उपयोग करने के मार्ग पर जाऊंगा। यह पता लगाने के लिए कि कौन से मार्गों का निरीक्षण करना है, संबंधित नियंत्रक फ़ाइल को खोलें और सामने के प्रत्येक कार्य को ढूंढें, जो अब उपलब्ध नहीं होना चाहिए। इसके बाद, एक मॉड्यूल बनाएं जो सॉफ्ट-डिसेबिल्डिंग फ़ीचर के लिए सिस्टम कॉन्फ़िगरेशन फ़ील्ड को परिभाषित करता है। इन सिस्टम कॉन्फ़िगरेशन फ़ील्ड्स का उपयोग करके, सशर्त रूप से फ्रंटएंड लेआउट XML को अपडेट करें और इसी तरह सशर्त रूप से प्रत्येक देखे गए मार्ग के लिए उचित HTTP प्रतिक्रिया कोड लौटाएं।

उपरोक्त चरणों में से प्रत्येक के लिए कोड उदाहरण आपके पसंदीदा खोज इंजन के माध्यम से मिल सकते हैं।


1

एक स्थानीय। Xml फ़ाइल में यह कोड जोड़ें

<customer_account>
    <reference name="customer_account_navigation">
           <action method="addLink"><name>tags</name></action>
           <action method="addLink"><name>recurring_profiles</name></action>
           <action method="addLink"><name>newsletter</name></action>
           <action method="addLink"><name>billing_agreements</name></action>
           <action method="addLink"><name>OAuth Customer Tokens</name></action>
           <action method="addLink"><name>downloadable_products</name></action>
   </reference>   
</customer_account>

मैगेंटो 1.7.0.2 में परीक्षण किया गया


गुम तर्क 2 Mage_Customer_Block_Account_Navigation :: addLink () के लिए: Magento 1.8.1.0 चेतावनी में इस परिणाम में
एंथोनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.