Müşteri Hesabı Panosu Bağlantıları Nasıl Kaldırılır


39

Müşteri hesabı kontrol panelinin sol panelindeki aşağıdaki bağlantıları kaldırmak istiyorum?

  • Uygulamalarım
  • Hediye kaydı
  • Ödül Puanları
  • Hediye Kartı Bağlantısı

Magento 1.7 Topluluk Sürümü’nde çalışıyorum. Herhangi bir yardım takdir edilecektir.


Bu ücretsiz ve kolay 'tak ve çalıştır' uzantısını da kullanabilirsiniz: magentocommerce.com/magento-connect/…
Gerard de Visser

Magento, görünüşte kolay olan bir şeyin çok gereksiz bir yere dönüşmesine neden oluyor.
Joshua34

Yanıtlar:


52

Adım 1: Git (yourPackage / YourTemplate / customer / account / navigation.phtml)

Adım 2: Aşağıdaki satırı değiştirin

<?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 */
?>

Yukarıdaki kod parçacığı, tüm gezinme bağlantılarını kaldırmanın yolunu içerir. Umarım bu herkese yardımcı olur.

Referans Bağlantı: https://github.com/Aproducktion/Magento-Remove-Dashboard-Links


5
Mizanpaj XML'lerini kullanarak bir şeyi düzeltebiliyorsanız, bunun gibi bir kodlanmış çözüm kullanmanızı tavsiye ederim. @Marius'un cevabı çok daha temiz.
Sander Mangel

1
@SanderMangel, demek istiyorsun If you can't??
Pratik

2
Hayır, "Ben tavsiye ediyorum demektir karşı "
Fabian Schmengler

Bu cevap, kaldırmaya çalıştığı sistemlerin temel işlevlerine erişimi engellemez; cevaba bir feragatname eklenmelidir. Doğru rotaları ziyaret etmek veya kıvrılmak kullanmak tam serbest erişime izin verecektir.
Luke A. Leber

Hayır, o ben ediyorum demektir karşı tavsiye '
Xenocide8998

28

Burada 2 seçenek görüyorum.

İlk ve en kolay: Sadece bu menü öğelerini ekleyen düzen dosyalarını bulun ve kodunu yorumlayın.
Örneğin My applications, app/design/frontend/{interface}/{theme}/layout/oauth.xmlbu XML grubu üzerinden eklenir

<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>

İkinci yöntem, işe yarayacağından% 100 emin değilim, bu xml'yi local.xmltemanızın düzen dosyasına eklemek :

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

<action>Kaldırmak istediğiniz her bağlantı için bir etiket eklemeniz gerekir .

Ayrıca 3. seçeneği de mevcut, eğer modülleri hiç kullanmıyorsanız, sadece devre dışı bırakın. Bu aynı zamanda performansı da artırabilir.
Bunun için bu dosyayı oluşturun: app/etc/modules/Zzzz.xmlbu içerikle:

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

Burada bazı sıkıntılarınız olabilir, kullanmak istediğiniz bazı modüller, devre dışı bırakmak istediğinize bağlı olarak değişebilir.


Cevabınız için @Marius @ teşekkürler. Peki, soruyu koymadan önce önerdiğiniz ikinci seçeneği (removeLinkByUrl) denedim. Ama görünüşe göre benim için işe yaramadı.
Oshan

4
İkinci seçenek işe yaramaz çünkü Mage_Customer_Block_Account_Navigationdevralınmaz Mage_Page_Block_Template_Links.
mpw

26

Uzak hesap bağlantılarına arka uç seçeneğini ekleyen bir FOSS uzantısı var.

Bir yoktur İkinci modül ekler (ayrıca FOSS) removeLinkEğer aşağıdaki kullanabilmeniz için yöntem sizinlocal.xml

Feragatname: İkinci uzantının geliştiricisiyim.

<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>

Local.xml geçersiz kılmalarından PHP'ye kadar birkaç teknikle uğraşmak bu açık kaynaklı çözümler benim favorim.
Michael Thompson,

5

Bulduğum basit çözüm (uygulama ve kullanım) değiştirmektir Mage_Customer_Block_Account_Navigationiçinde app/code/localbir ve eklemek removeLinkByNameneyi aynı yapar yöntemi, Oshan cevabı yok, ama düzen dosyalarından kullanılabilir. Daha geleneksel bir sınıf yeniden yazma da işe yarayabilir, ancak potansiyel olarak bir eklentiyle çakışmalara neden olabilir.

Uyarı! Test edilmemiş!

Daha karmaşık bir çözüm, kendi modülünüzü Blockgenişleten Mage_Customer_Block_Account_Navigationve bir removeLinkByNameyöntem içeren yazmaktır . Bunun çalışması için customer_account_navigationbloğu kaldırmanız / ayırmanız ve yeni modülünüzünki ile değiştirmeniz gerekir. O andan itibaren, herhangi bir zamanda customer_account_navigationmizanpaja başvurulursa, bir örneğini alırsınız removeLinkByName.


İkinci seçeneği yaptım, bu adil bir iştir, ama işe yarıyor. Bana iki saat sürdü ve tam zamanlı bir Magento danışmanı ve PHP / Linux geliştiricisi olarak çalışıyorum. Ayrıntıya ihtiyacı olan varsa, bana PM.
siliconrockstar

en basit çözüm, çok sayıda düzgün çözüm olduğunda bir Çekirdek sınıfını geçersiz kılmak mıdır?
Ria Weyprecht

5

Fatura Anlaşmaları, Düzenli Profiller, Uygulamalarım ve İndirilebilir Ürünlerim dahil olmak üzere Siparişlerim altındaki tüm Hesabım listesi öğelerini kaldırmak için hızlı bir çözüm. Ayrıca, Magento 1.9'da test edilen, site genelinde, İstek Listem & Bültenim bağlantısını kaldıracak

App / design / frontend / default / YOURTHEME / layout / wishlist.xml adresinden 31 - 66 numaralı satırlara yorum yapın (yoksa / app / design / frontend / rwd / default / layout / wishlist.xml dosyasından kopyalayın)

<!--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-->

App / design / frontend / default / YOURTHEME / layout / newsletter.xml adresinden 47 - 65 numaralı satırlara yorum yapın (yoksa uygulama / design / frontend / rwd / default / layout / newsletter.xml dosyasından kopyalayın)

bülten </name> bülten / yönet / </path> Bülten Abonelikleri </label> </action> </reference> </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!-->

CSS (gereksinimlerinize göre ayarlayın)

.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

Bağlantıları kaldırmaktan kaçınmak için $ _index değişkenine göre kimlik değerleri atamanızı öneririm, böylece bağlantıları CSS ile gizleyebilirsiniz.

İşte yaptığım şey:

Paketinizden / YourTemplate / customer / account / navigation.phtml sayfanızdan

        <?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; ?>

Açıkçası o zaman gidebilirsin

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

Bir kediyi cildin tek yolu yoktur, ancak bu gerçekten herhangi bir işlevsellikten ödün vermeden hızlı ve kolay bir seçenektir.


1
Bunun, kullanıcıların söz konusu özelliklerin arkasındaki işlevselliğe erişmelerini engellemeyeceği açıkça belirtilmelidir. Tam erişim bir CSS düzenlemesi veya hızlı bir adres çubuğu düzenlemesidir ... bu yüzden özellikleri kullanmayan insanlara güvenmeyin.
Luke A. Leber,

Bu yeterince adil ve nereden geldiğini tamamen anlıyorum. Bu işlevi kesinlikle kaldırmak istemedim, ancak özellikle gizlemek istemedim çünkü müşteri bunun müşterilerini şaşırtabileceğini düşünüyordu. Her biri kendilerine göre sanırım!
Thomas Harding

5

Bloğu yeniden yazmak için daha iyi bir çözüm olacağını düşündüm. Bu yukarıda bahsedildi, ancak hiç bir örnek yoktu:

Yeniden yazmayı global bölümdeki config.xml dosyasına ekleyin:

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

Mage_Customer_Block_Account_Navigation içindeki addLink'i geçersiz kıl:

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);
        }
    }
}

Dışlanan bağlantıları kodlamak istemiyorsanız, exclude_links dizisi bir yapılandırma ayarından çekilebilir .


3

Bu konuda googled budur: http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/

Standart Magento düzeninin neredeyse tüm yerleşim özelliklerini değiştirebiliriz, ancak bu yaklaşımın başarısız olduğu durumlar olabilir. Özellikle, bu top.links bloğunu değiştirmek istediğiniz dakikayı gösterir. Bu bloktaki öğeler, addLink eylem yöntemi kullanılarak eklenir, bu nedenle bazı bağlantıları varsayılan kümeden nasıl kaldıracağınızı merak ediyorsanız, cevabı veremezsiniz! Ne yazık ki, page / template_links blok sınıfı bir 'removeLink' eylem yöntemini uygulamamaktadır, bu nedenle tesis, unsetChild yaklaşımını kullanarak tüm bloğu kaldırmak ve link bloğunu local.xml içine eklenen kendi linklerimizle geri eklemek içindir.


2

Öncelikle problemlerinizi çözmenin farklı yolları olduğunu söylemenizi istiyorum.

  1. layout.xmlÖrneğin, "etiketlerim" i kaldırmak istersem, sadece bölümü yorumlamak için tabanın içindeki dosyadaki kodu bulmanın en kolay yoludur .

    <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>

    Ancak, temel dosyayı değiştirmememiz gerektiğini biliyorsunuz, bu yüzden gerçekleştirilebilecek bir sonraki basit yöntem

  2. Şablon dosyanızdaki bağlantıyı kaldırma. Dosyanızı temanıza kopyalamak için navigation.phtml(Not: klasör yapısı aynı olmalıdır) base\default\template\customer\account\navigation.phtml. Yukarıdaki cevapta gösterilmiştir.

  3. Başka bir sıkıcı görev çekirdek modülünüzü yeniden yazmak ve "RemoveLinkByName" yöntemi oluşturmaktır.


2

Hesap panosu özelliklerini kaldırmak için tam bir çözüm hem müşteri tarafı hem de sunucu tarafı değişikliği içerir. Yalnızca müşteri tarafı kaldırılır ve / veya gizlenirse, teknolojiyi kullananların rotalarını tarayıcılarında el ile oluşturarak veya daha karmaşık bir CURL "saldırısı" (uygun olanı da içerebilen) kullanarak elden çıkarmaya çalıştıran, merak uyandıran hiçbir şey yoktur. CSRF belirteci ve doğrudan kayma).

Müşteri tarafı, daha önce verilen cevapların bolluğu ile belirtilen XML güncellemeleriyle kolayca elde edilir.

Sunucu tarafı biraz daha karmaşıktır ve kaldırılmakta olan işlevlerin anlaşılmasını gerektirir.

Şahsen, kaldırılmakta olan özelliğin her yolunda koşullu olarak yasaklı HTTP durum kodlarını döndürmek için gözlemcileri kullanma yoluna giderdim. Hangi yolların gözleneceğini bulmak için, ilgili denetleyici dosyasını açın ve artık bulunmaması gereken ön uç işlemlerin her birini bulun. Ardından, söz konusu özelliğin devre dışı bırakılması için sistem yapılandırma alanlarını tanımlayan bir modül oluşturun. Bu sistem konfigürasyon alanlarını kullanarak, ön düzen mizanpajını koşullu olarak güncelleyin ve benzer şekilde, gözlemlenen her rota için uygun HTTP yanıt kodlarını döndürün.

Yukarıdaki adımların her biri için kod örnekleri, favori arama motorunuzdan bulunabilir.


1

Bir local.xml dosyasına bu kodu ekleyin

<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>

Magento'da Test Edildi 1.7.0.2


Magento 1.8.1.0'da bu Uyarı ile sonuçlanır: Mage_Customer_Block_Account_Navigation :: addLink ()
Anthony
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.