답변:
1 단계 : (yourPackage / YourTemplate / customer / account / 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
??
여기에 두 가지 옵션이 있습니다.
가장 쉽고 쉬운 방법 :이 메뉴 항목을 추가하고 해당 코드를 주석으로 처리하는 레이아웃 파일을 찾으십시오.
예를 들어이 XML 조각을 통해 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>
사용하지 않으려는 모듈에 따라 사용하려는 다른 모듈이 있습니다.
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
a와 추가 removeLinkByName
것과 같은 수행 방법, Oshan의 대답은 하지 않습니다,하지만 레이아웃 파일에서 사용할 수 있습니다. 보다 전통적인 클래스 재 작성도 작동하지만 플러그인과 충돌을 일으킬 수 있습니다.
경고! 테스트되지 않았습니다!
더 복잡한 해결책은 Block
확장 Mage_Customer_Block_Account_Navigation
하고 removeLinkByName
메소드를 포함하는 자체 모듈을 작성 하는 것입니다. 이 기능을 사용하려면 customer_account_navigation
블록 을 제거 / 설정 해제하고 새 모듈 의 블록으로 교체해야합니다. 그때부터 언제든지 customer_account_navigation
레이아웃에서 참조되며을 사용하여 인스턴스를 얻습니다 removeLinkByName
.
결제 계약, 되풀이 프로필, 내 응용 프로그램 및 내 다운로드 가능한 제품을 포함하여 내 주문 아래의 모든 내 계정 목록 항목을 제거하는 빠른 솔루션입니다. 또한 Magento 1.9에서 테스트 한 사이트 전체에서 내 위시리스트 및 내 뉴스 레터 링크를 제거합니다.
app / design / frontend / default / YOURTHEME / layout / wishlist.xml에서 31-66 행을 주석 처리하십시오 (없는 경우 app / design / 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-->
app / design / frontend / default / YOURTHEME / layout / newsletter.xml에서 47-65 행을 주석 처리하십시오 (없는 경우 app / design / frontend / rwd / default / layout / 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;
}
링크를 제거하지 않으려면 $ _index 변수를 기반으로 ID 값을 할당하는 것이 좋으므로 CSS를 통해 링크를 숨길 수 있습니다.
내가 한 일은 다음과 같습니다.
yourPackage / YourTemplate / customer / account / 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>
Mage_Customer_Block_Account_Navigation에서 addLink를 대체하십시오.
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);
}
}
}
제외 된 링크 를 하드 코딩 하지 않으려면 exclude_links 배열을 구성 설정에서 가져올 수 있습니다.
이것은 내가 이것에 대해 google 한 것입니다 : http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/
표준 Magento 레이아웃의 거의 모든 레이아웃 측면을 변경할 수 있지만이 방법이 실패하는 경우가 있습니다. 특히, 이것은 top.links 블록을 수정하려는 순간에 나타납니다. 이 블록의 항목은 addLink 작업 방법을 사용하여 추가되므로 기본 집합에서 일부 링크를 제거하는 방법이 궁금하다면 대답 할 수 없습니다! 불행히도 page / 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 상태 코드를 조건부로 반환하는 경로를 사용합니다. 관찰 할 경로를 찾으려면 관련 컨트롤러 파일을 열고 더 이상 사용할 수없는 각 프런트 엔드 작업을 찾으십시오. 다음으로, 해당 기능을 소프트 비활성화하기위한 시스템 구성 필드를 정의하는 모듈을 만듭니다. 이러한 시스템 구성 필드를 사용하여 프런트 엔드 레이아웃 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>
마 젠토 1.7.0.2에서 테스트