Saya ingin menghapus tautan berikut di panel kiri dasbor akun pelanggan?
- aplikasi saya
- Daftar Hadiah
- Poin Hadiah
- Tautan Kartu Hadiah
Saya bekerja di Magento 1.7 Community Edition. Bantuan apa pun akan dihargai.
Saya ingin menghapus tautan berikut di panel kiri dasbor akun pelanggan?
Saya bekerja di Magento 1.7 Community Edition. Bantuan apa pun akan dihargai.
Jawaban:
Langkah 1: Buka (yourPackage / YourTemplate / customer / akun / navigation.phtml)
Langkah 2: Ganti baris di bawah ini
<?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 */ ?>
Cuplikan kode di atas berisi cara untuk menghapus semua tautan navigasi. Semoga ini bisa membantu semua.
Referensi Tautan: https://github.com/Aproducktion/Magento-Remove-Dashboard-Links
If you can't
??
Saya melihat 2 opsi di sini.
Pertama dan termudah: Cukup temukan file tata letak yang menambahkan item menu ini dan beri komentar kode untuknya.
Misalnya My applications
ditambahkan app/design/frontend/{interface}/{theme}/layout/oauth.xml
melalui suatu bagian 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>
Metode kedua, bahwa saya tidak 100% yakin itu akan berhasil adalah menambahkan xml ini di dalam local.xml
file layout tema Anda:
<customer_account>
<reference name="customer_account_navigation">
<action method="removeLinkByUrl"><url>oauth/customer_token</url></action>
</reference>
</customer_account>
Anda perlu menambahkan satu <action>
tag untuk setiap tautan yang ingin Anda hapus.
Ada juga opsi ke-3, jika Anda tidak menggunakan modul sama sekali, cukup nonaktifkan mereka. Ini juga dapat meningkatkan kinerja.
Untuk ini buat file ini: app/etc/modules/Zzzz.xml
dengan konten ini:
<config>
<modules>
<Mage_Oauth>
<active>false</active>
</Mage_Oauth>
</modules>
</config>
Anda mungkin memiliki beberapa masalah di sini adalah beberapa modul lain yang ingin Anda gunakan, tergantung pada modul yang ingin Anda nonaktifkan.
Mage_Customer_Block_Account_Navigation
tidak diwarisi dari Mage_Page_Block_Template_Links
.
Ada ekstensi FOSS yang menambahkan opsi backend ke tautan akun jarak jauh.
Ada modul kedua (juga FOSS) yang menambahkan removeLink
metode sehingga Anda dapat menggunakan yang berikut dilocal.xml
Penafian: Saya adalah pengembang ekstensi kedua.
<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>
Solusi yang paling sederhana (pelaksanaan dan penggunaan) saya telah menemukan adalah untuk menggantikan Mage_Customer_Block_Account_Navigation
di app/code/local
dan menambahkan removeLinkByName
metode, yang tidak sama dengan apa jawaban Oshan ini tidak, tetapi dapat digunakan dari file layout. Penulisan ulang kelas yang lebih tradisional juga akan berfungsi, tetapi berpotensi menyebabkan konflik dengan plugin.
Peringatan! Belum dicoba!
Solusi yang lebih rumit adalah dengan menulis modul Anda sendiri dengan Block
yang meluas Mage_Customer_Block_Account_Navigation
dan mencakup removeLinkByName
metode. Agar ini berfungsi, Anda harus menghapus / membatalkan set customer_account_navigation
blok dan menggantinya dengan yang untuk modul baru Anda. Sejak saat itu, setiap kali customer_account_navigation
direferensikan dalam tata letak, Anda akan mendapatkan instance dengan removeLinkByName
.
Solusi cepat, untuk menghapus semua item daftar Akun Saya di bawah Pesanan Saya, termasuk Perjanjian Penagihan, Profil Berulang, Aplikasi Saya dan Produk Saya Yang Dapat Diunduh. Juga akan menghapus tautan Wishlist saya & Newsletter Saya, di seluruh situs, diuji di Magento 1.9:
Mengomentari baris 31 - 66 dari aplikasi / desain / frontend / default / YOURTHEME / layout / wishlist.xml (jika tidak ada, salin dari aplikasi / desain / frontend / rwd / default / layout / wishlist.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-->
Mengomentari baris 47 - 65 dari aplikasi / desain / frontend / default / YOURTHEME / layout / newsletter.xml (jika tidak ada, salinlah dari app / desain / frontend / rwd / default / layout / newsletter.xml)
buletin </name> buletin / kelola / </path> Berlangganan Newsletter </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 (sesuaikan sesuai kebutuhan Anda)
.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;
}
Untuk menghindari menghapus tautan, saya akan merekomendasikan menetapkan nilai ID berdasarkan variabel $ _index, sehingga Anda dapat menyembunyikan tautan melalui CSS.
Inilah yang saya lakukan:
Dari YourPackage / YourTemplate / customer / akun / navigation.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; ?>
Jadi jelas Anda bisa pergi
#account-link-1 {
display:none;
}
Tidak ada cara untuk menguliti kucing, tetapi ini adalah pilihan yang cepat dan mudah tanpa benar-benar mengorbankan fungsionalitas apa pun.
Saya pikir solusi yang lebih baik adalah dengan menulis ulang blok. Ini disebutkan di atas tetapi tidak ada contoh:
Tambahkan penulisan ulang ke config.xml Anda di bagian global:
<blocks>
<customer>
<rewrite>
<account_navigation>Your_Module_Block_Customer_Account_Navigation</account_navigation>
</rewrite>
</customer>
</blocks>
Abaikan addLink di 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);
}
}
}
Array exclude_links dapat menarik dari pengaturan konfigurasi jika Anda tidak ingin membuat kode tautan yang dikecualikan.
inilah yang saya cari di Google tentang ini: http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/
Kami dapat mengubah hampir semua aspek tata letak dari tata letak Magento standar namun ada beberapa situasi ketika pendekatan ini gagal. Khususnya, ini memanifestasikan dirinya sendiri saat Anda ingin memodifikasi blok top.links. Item dalam blok ini ditambahkan menggunakan metode tindakan addLink jadi jika Anda bertanya-tanya bagaimana cara menghapus beberapa tautan dari set default, jawabannya adalah, Anda tidak bisa! Sayangnya, kelas blok halaman / template_links tidak menerapkan metode tindakan 'removeLink' sehingga resor ini akan menghapus seluruh blok menggunakan pendekatan unsetChild dan menambahkan blok tautan kembali dengan tautan kami sendiri ditambahkan ke dalamnya di local.xml.
Pertama-tama saya ingin Anda memberi tahu bahwa ada berbagai cara untuk menyelesaikan masalah Anda.
Ini adalah cara termudah yang menemukan kode dalam layout.xml
file di dalam basis yang ingin Anda hapus misalnya: jika saya ingin menghapus "Tag saya" maka komentar saja bagiannya.
<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>
Tapi Anda tahu bahwa kita tidak boleh memodifikasi file base, jadi metode sederhana berikutnya yang bisa dilakukan adalah
Menghapus tautan di navigation.phtml
file template Anda. Untuk itu salin file Anda ke tema Anda (Catatan: struktur folder harus sama) dari menu base\default\template\customer\account\navigation.phtml
. yang ditunjukkan pada jawaban di atas.
Tugas menjemukan lainnya adalah menulis ulang modul inti Anda dan membuat metode "RemoveLinkByName".
Solusi lengkap untuk menghapus fitur dasbor akun mencakup modifikasi sisi klien dan sisi server. Jika hanya sisi klien yang dihapus dan / atau disembunyikan, maka tidak ada yang menghentikan pengguna yang mengerti teknologi untuk tetap mengakses fitur-fitur dengan membuat sendiri rute di browser mereka atau dengan menggunakan serangan "CURL" CURL yang lebih canggih (yang dapat mencakup Token CSRF dan lolos langsung).
Sisi klien mudah dicapai melalui pembaruan XML seperti yang ditunjukkan oleh sejumlah besar jawaban yang sudah diberikan.
Sisi server sedikit lebih kompleks dan membutuhkan pemahaman tentang fungsionalitas yang sedang dihapus.
Secara pribadi, saya akan menempuh rute menggunakan pengamat untuk mengembalikan kode status HTTP terlarang secara bersyarat pada setiap rute fitur yang dihapus. Untuk mengetahui rute mana yang harus diamati, buka file controller terkait dan temukan masing-masing tindakan front-end yang seharusnya tidak lagi tersedia. Selanjutnya, buat modul yang mendefinisikan bidang konfigurasi sistem untuk menonaktifkan fitur tersebut. Dengan menggunakan bidang konfigurasi sistem ini, perbarui XML tata letak ujung depan dengan persyaratan dan kembalikan juga kode respons HTTP yang sesuai untuk setiap rute yang diamati.
Contoh kode untuk setiap langkah di atas dapat ditemukan melalui mesin pencari favorit Anda.
Tambahkan ke file local.xml kode ini
<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>
Diuji dalam Magento 1.7.0.2