ฉันต้องการลบลิงค์ต่อไปนี้ในแผงควบคุมบัญชีลูกค้าด้านซ้ายหรือไม่
- แอปพลิเคชันของฉัน
- ของขวัญรีจิสทรี
- คะแนนสะสม
- ลิงค์บัตรของขวัญ
ฉันทำงานใน Magento 1.7 Community Edition ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.
ฉันต้องการลบลิงค์ต่อไปนี้ในแผงควบคุมบัญชีลูกค้าด้านซ้ายหรือไม่
ฉันทำงานใน Magento 1.7 Community Edition ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.
คำตอบ:
ขั้นตอนที่ 1:ไปที่ (yourPackage / YourTemplate / ลูกค้า / บัญชี / navigation.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
If you can't
??
ฉันเห็น 2 ตัวเลือกที่นี่
สิ่งแรกและง่ายที่สุด: เพียงค้นหาไฟล์เลย์เอาต์ที่เพิ่มรายการเมนูเหล่านี้และใส่รหัสสำหรับพวกเขา
ตัวอย่างเช่นMy applications
เพิ่มapp/design/frontend/{interface}/{theme}/layout/oauth.xml
ผ่านชิ้นส่วนของ 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>
แท็กสำหรับแต่ละลิงก์ที่คุณต้องการลบ
นอกจากนี้ยังมีตัวเลือกที่ 3 หากคุณไม่ได้ใช้งานโมดูลเลยเพียงแค่ปิดการใช้งาน สิ่งนี้สามารถเพิ่มประสิทธิภาพได้
สำหรับสิ่งนี้สร้างไฟล์นี้: app/etc/modules/Zzzz.xml
ด้วยเนื้อหานี้:
<config>
<modules>
<Mage_Oauth>
<active>false</active>
</Mage_Oauth>
</modules>
</config>
คุณอาจมีปัญหาบางอย่างที่นี่คือโมดูลอื่น ๆ ที่คุณต้องการใช้ขึ้นอยู่กับโมดูลที่คุณต้องการปิดการใช้งาน
Mage_Customer_Block_Account_Navigation
Mage_Page_Block_Template_Links
มีนามสกุล 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>
ทางออกที่ง่ายที่สุด (การดำเนินงานและการใช้งาน) ที่ฉันได้พบคือการเปลี่ยนMage_Customer_Block_Account_Navigation
ในapp/code/local
และเพิ่มremoveLinkByName
วิธีการซึ่งไม่เหมือนกันกับสิ่งที่คำตอบของ Oshanไม่ แต่สามารถใช้งานได้จากไฟล์รูปแบบ การเขียนคลาสแบบดั้งเดิมมากขึ้นก็สามารถใช้ได้เช่นกัน แต่อาจทำให้เกิดข้อขัดแย้งกับปลั๊กอินได้
คำเตือน! ยังไม่ทดลอง!
วิธีแก้ปัญหาที่ซับซ้อนมากขึ้นก็คือการเขียนโมดูลของคุณเองด้วยการBlock
ขยายMage_Customer_Block_Account_Navigation
และรวมถึงremoveLinkByName
วิธีการ เพื่อให้สามารถใช้งานได้คุณจะต้องลบ / ปลดcustomer_account_navigation
บล็อกและแทนที่ด้วยบล็อกสำหรับโมดูลใหม่ของคุณ จากนั้นในเวลาใด ๆ ที่ถูกอ้างถึงในรูปแบบที่คุณจะได้รับตัวอย่างด้วยcustomer_account_navigation
removeLinkByName
วิธีแก้ปัญหาอย่างรวดเร็วเพื่อลบรายการในบัญชีของฉันทั้งหมดด้านล่างคำสั่งซื้อของฉันรวมถึงข้อตกลงการเรียกเก็บเงินโปรไฟล์ที่เกิดขึ้นประจำแอปพลิเคชันของฉันและผลิตภัณฑ์ที่ดาวน์โหลดได้ของฉัน จะลบลิงก์รายการสิ่งที่ฉันปรารถนาและจดหมายข่าวของฉันทั่วทั้งไซต์ทดสอบใน Magento 1.9:
แสดงความคิดเห็นบรรทัดที่ 31 - 66 จากแอพ / ออกแบบ / ส่วนหน้า / ค่าเริ่มต้น / YOURTHEME / เลย์เอาต์ / Favorites.xml (หากไม่มีให้คัดลอกจากแอพ / ออกแบบ / ส่วนหน้า / rwd / ค่าเริ่มต้น / โครงร่าง / Favorites.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-->
แสดงความคิดเห็นบรรทัดที่ 47 - 65 จากแอพ / ออกแบบ / ส่วนหน้า / ค่าเริ่มต้น / YOURTHEME / เลย์เอาต์ / newsletter.xml (หากไม่มีให้คัดลอกจากแอพ / ออกแบบ / ส่วนหน้า / rwd / ค่าเริ่มต้น / โครงร่าง / newsletter.xml)
จดหมายข่าว </name> จดหมายข่าว / จัดการ / </path> การสมัครรับจดหมายข่าว </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 (ปรับตามความต้องการของคุณ)
.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;
}
เพื่อหลีกเลี่ยงการลบลิงก์ฉันขอแนะนำให้กำหนดค่า ID ตามตัวแปร $ _index ดังนั้นคุณสามารถซ่อนลิงก์ผ่าน CSS
นี่คือสิ่งที่ฉันทำ:
จาก yourPackage / YourTemplate / ลูกค้า / บัญชี / 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; ?>
เห็นได้ชัดว่าคุณสามารถไปได้
#account-link-1 {
display:none;
}
ไม่มีวิธีใดที่จะทำให้แมวเป็นแมว แต่นี่เป็นตัวเลือกที่ง่ายและรวดเร็วโดยไม่กระทบต่อการทำงานใด ๆ
ฉันคิดว่าทางออกที่ดีกว่าคือการเขียนบล็อกใหม่ สิ่งนี้ถูกกล่าวถึงข้างต้น แต่ไม่มีตัวอย่าง:
เพิ่มการเขียนซ้ำลงใน config.xml ของคุณในส่วนส่วนกลาง:
<blocks>
<customer>
<rewrite>
<account_navigation>Your_Module_Block_Customer_Account_Navigation</account_navigation>
</rewrite>
</customer>
</blocks>
แทนที่ addLink ใน 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);
}
}
}
อาร์เรย์ excluse_links สามารถดึงมาจากการตั้งค่าหากคุณไม่ต้องการให้โค้ดที่ถูกแยกออกไปเชื่อมโยงอย่างหนัก
นี่คือสิ่งที่ฉัน googled เกี่ยวกับเรื่องนี้: http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/
เราสามารถเปลี่ยนเลย์เอาต์เกือบทั้งหมดของเลย์เอาต์ Magento มาตรฐานได้อย่างไรก็ตามมีบางสถานการณ์ที่วิธีการนี้ล้มเหลว โดยเฉพาะอย่างยิ่งสิ่งนี้แสดงให้เห็นถึงนาทีที่คุณต้องการแก้ไขบล็อก top.links รายการในบล็อกนี้จะถูกเพิ่มโดยใช้วิธีการกระทำของ addLink ดังนั้นหากคุณสงสัยว่าจะลบลิงค์บางส่วนออกจากชุดเริ่มต้นคำตอบคือคุณไม่สามารถ! ขออภัยคลาสบล็อกหน้า / template_links ไม่ได้ใช้วิธีการดำเนินการ 'removeLink' ดังนั้นทางรีสอร์ทจึงทำการลบทั้งบล็อกโดยใช้วิธี unsetChild และเพิ่มลิงค์บล็อกกลับด้วยลิงก์ของเราเองที่เพิ่มเข้าไปใน local.xml
ฉันต้องการให้คุณบอกก่อนว่ามีวิธีการที่แตกต่างกันในการแก้ปัญหาของคุณ
มันเป็นวิธีที่ง่ายที่สุดที่จะค้นหารหัสใน 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>
แต่คุณรู้ว่าเราไม่ควรแก้ไขไฟล์พื้นฐานดังนั้นอีกวิธีการถัดไปที่สามารถทำได้คือ
การยกเลิกการลิงก์ในไฟล์เทมเพลตสำหรับการคัดลอกnavigation.phtml
ไฟล์ของคุณไปยังธีมของคุณ (หมายเหตุ: โครงสร้างโฟลเดอร์ควรเหมือนกัน) จากbase\default\template\customer\account\navigation.phtml
จาก ซึ่งแสดงในคำตอบข้างต้น
งานที่น่าเบื่ออีกอย่างคือการเขียนโมดูลหลักของคุณใหม่และสร้างวิธีการ "RemoveLinkByName"
โซลูชันเต็มรูปแบบในการลบคุณลักษณะแผงควบคุมบัญชีรวมถึงการปรับเปลี่ยนฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ หากมีเพียงลูกค้าฝั่งที่ถูกลบและ / หรือซ่อนอยู่ก็ไม่มีอะไรที่จะหยุดผู้ใช้ที่มีความชำนาญด้านเทคโนโลยีจากยังคงเข้าถึงคุณลักษณะโดยการกำหนดเส้นทางในเบราว์เซอร์ของตนเองหรือโดยใช้ "การโจมตี" CURL ที่ซับซ้อนยิ่งขึ้น โทเค็น CSRF และสลิปผ่าน)
ฝั่งไคลเอ็นต์สามารถทำได้อย่างง่ายดายผ่านการอัปเดต XML ตามที่ระบุโดยคำตอบมากมายที่ให้ไว้แล้ว
ฝั่งเซิร์ฟเวอร์มีความซับซ้อนกว่าเล็กน้อยและต้องการความเข้าใจในการใช้งานที่ถูกลบออกไป
โดยส่วนตัวแล้วฉันจะไปที่เส้นทางของการใช้ผู้สังเกตการณ์เพื่อส่งคืนรหัสสถานะ HTTP ที่ต้องห้ามตามเงื่อนไขในแต่ละเส้นทางของคุณลักษณะที่จะถูกลบออก ในการค้นหาเส้นทางที่ต้องสังเกตุให้เปิดไฟล์คอนโทรลเลอร์ที่เกี่ยวข้องและค้นหาการกระทำส่วนหน้าแต่ละอันที่ไม่ควรใช้อีกต่อไป จากนั้นสร้างโมดูลที่กำหนดฟิลด์การกำหนดค่าระบบสำหรับคุณสมบัติที่กล่าวถึงการปิดใช้งาน soft การใช้ฟิลด์การกำหนดค่าระบบเหล่านี้อัพเดต XML โครงร่างของส่วนหน้าและส่งคืนรหัสตอบกลับ HTTP ที่เหมาะสมสำหรับแต่ละเส้นทางที่สังเกตเห็น
ตัวอย่างโค้ดสำหรับแต่ละขั้นตอนข้างต้นสามารถพบได้ผ่านเครื่องมือค้นหาที่คุณชื่นชอบ
เพิ่มไปยังไฟล์ local.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>
ทดสอบใน Magento 1.7.0.2