'std'<div>를 제거하고 홈 페이지에 컨텐츠 블록 추가


9

나는 몇 가지를하고 싶어, 나는 새롭고 매우입니다 아주 멀리 젠토 능숙에서; 내가 요구하는 것은 다음을 수행하는 가장 좋고 간결한 방법입니다.

  1. 관리자 패널 WYSIWYG가 아닌 텍스트 편집기에서 내 홈 페이지의 내용 (및이 프로젝트에 대한 추가 CMS 페이지)을 편집하고 싶습니다. home-content.phtml캐 러셀에 대한 마크 업을 포함하는 것과 같은 템플릿과 홈페이지에 넣는 다른 템플릿이 있다고 생각 합니다. 그것은 나에게이 내 첨부입니다 할 수있는 가장 논리적 인 방법 보였다 home-content.phtml받는 getChildHtml('content')관리자 패널의 방법을 -> CMS -> 페이지 -> 홈 페이지 -> '디자인'탭 ->과 같은 코드와 레이아웃 업데이트 XML :

    <reference name="content">
                <block type="core/template" name="home-content"
                       as="home-content" template="home-content.phtml" />
    </reference>

    그러나 그것은 내가하고 싶었던 다음 일로 엉망이되었습니다 ...

  2. 내 의견으로는, 기본 Magento HTML 구조가 너무 많이 중첩되어 너무 많이 중첩되어 있습니다 div( 래퍼-> 페이지-> 메인 컨테이너 col1-layout-> 메인-> col-main 은 페이지의 내용에 도달하지 못합니다 ) . 그것은 모든 클래스의 스타일이 5 개의 다른 Sass 부분으로 나뉘어져있는 Sass를 사용한 스타일링을 악몽으로 만듭니다. 그래서 나는 내 자신의 디자인 원칙과 일치하도록 기본 구조를 정리하고 있습니다. 이것의 일부는 악명 높은와 같은 빈 요소를 제거하는 것을 의미합니다 <div class="std"> </div>. 콘텐츠를 위해 관리자 패널을 사용하지 않을 계획이므로이를 제거하는 가장 효과적인 방법 <remove name="cms.wrapper">은 CMS 홈 레이아웃 업데이트 XML을 사용하는 것입니다. 문제는 위의 방법으로 추가 한 모든 것을 제거한다는 것입니다 ( reference name="content").

기본적으로 : 충돌없이 홈 페이지에 컨텐츠를 추가 .phtml 하고 제거하는 방법 <div class="std"> </div>은 무엇입니까? 관리자-> CMS-> 레이아웃 업데이트 XML의 기능이 layout.xml의 기능과 어떻게 다른지 또는 왜 다른 것을 사용해야 <cms index-index>합니까? .

미리 감사드립니다.


필자의 경우 .std원하지 않는 곳에 목록 스타일을 추가합니다. 예상대로 Magento를 사용하면 해결하는 데 오랜 시간이 걸립니다.
rybo111

답변:


12

문제를 3 개의 섹션으로 나누고 검토하겠습니다.

1. CMS 파일에 템플릿 파일을 추가해야합니다

여기에서 채택한 방법이 확실하게 작동합니다. 즉, 디자인 탭 아래 cms 페이지 안에이 코드 스 니펫을 추가해야합니다.

<reference name="content"><block type="core/template" name="home-content"  template="test.phtml" /></reference>

템플릿 파일이 직접 content차단되므로 magento가 템플릿 컨텐츠를 렌더링합니다. 따라서에 as속성 을 사용할 필요가 없습니다 core/template block.

2. 피하는 방법 <div class="std"></div>

이 div는 실제로 cms 페이지의 래퍼 div 요소입니다. 이 블록의 정의는 여기를 참조하십시오.

  <block type="page/html_wrapper" name="cms.wrapper" translate="label">
        <label>CMS Content Wrapper</label>
        <action method="setElementClass"><value>std</value></action>
        <block type="cms/page" name="cms_page"/>
  </block>

보시다시피 cms.wrapperblock은 유형 page/html_wrapper입니다. 이 블록의 기능은 모든 하위 블록을 div 요소 (기본 요소)로 감싸고 하위 블록을 자동으로 렌더링하는 것입니다.

이 블록을 피하기 위해이 코드를 사용했습니다

<remove name="cms.wrapper">

그러나 완전히 잘못되었습니다. 래퍼 div를 실제로 제거합니다. 그러나 그것과 함께 그것은 또한 자식 블록을 제거합니다 cms_page. 이것은 cms_page타입 cms/page입니다. 즉, 블록을 참조한다는 의미 Mage_Cms_Block_Page입니다. 이 블록은 CMS 페이지 의 "마음" 입니다. 래퍼를 제거하면 CMS 페이지의 하트 블록도 지워졌습니다. 그렇기 때문에 cms 페이지에 출력이없는 것입니다.

이 래퍼를 피하려면 어떻게해야합니까? 대답은 매우 간단합니다. 탈출 cms_page래퍼에서 다음 안전하게 래퍼를 제거합니다. 다음은 cms 페이지 레이아웃 섹션에서 사용해야하는 코드입니다.

<reference name="content"><remove name="cms.wrapper" /><block type="core/template" name="home-content"  template="test.phtml" /><block type="cms/page" name="cms_page"/></reference>

레이아웃 xml 코드에서 볼 수 있듯이 먼저 래퍼를 제거 cms_page하고 코드를 통해 삽입 된 블록을 제거합니다 . 보시다시피 템플릿 블록도 사용했습니다. 그러면 페이지에서 템플릿 파일의 내용이 먼저 렌더링 된 다음 cms 페이지 내용이 렌더링됩니다.

3. 관리자-> CMS-> 레이아웃 업데이트 XML이 layout.xml의 기능과 다른 점

사이트에있는 CMS 페이지 중 하나에 특별한 모양을 원한다고 가정합니다. 이를 위해 가장 좋은 방법은 관리자-> CMS-> 레이아웃을 통해 레이아웃 업데이트를 추가하는 것입니다. CMS 페이지에만 적용됩니다.

그러나 모든 CMS 페이지에 일반적인 변경 사항을 적용해야하는 경우을 사용하는 것이 쉽습니다 layout.xml.

따라서 일반적으로 레이아웃을 변경하기 위해 어떤 방법을 채택해야하는지는 순전히 달성하고자하는 것에 달려 있습니다. 그것에 따라 한 가지 방법을 사용해야합니다. 모든 방법이 아닙니다.

희망이 도움이


3

불쾌감을주는 페이지가 하나 뿐인 경우 가장 쉽고 가장 쉬운 방법은 다음과 같습니다.

CMS 페이지의 "Design"탭을 편집 하십시오.

랩퍼 요소를 참조하고 setElementClass메소드를 사용하여 클래스가 없거나 새 클래스를 적용하십시오.

<reference name="cms.wrapper">
<action method="setElementClass"><value>none</value></action>
</reference>

0

레이아웃, 일반적으로 1column.phtml, 2columns.phtml 등을 수정하고 원하는대로 원하는대로 만들어야합니다.

이러한 PHTML은 모든 레이아웃의 기본 구조이며 프로그래밍 방식으로 XML 업데이트로 채워집니다.

자신의 테마에서 템플릿과 레이아웃간에 일관성을 유지하는 경우 다른 영향은 없습니다.


마찬가지로 if this is the home page, include this code ...모든 레이아웃 페이지에 조건부 를 추가 한 다음 모든 페이지에서 조건부 를 삭제하면 getCHildHtml('content')됩니다. Magento 사용법을 배우고 싶습니다. 문제를 망치는 것이 아니라 도구가 더 좋습니다.
Ezratic

아니요, 레이아웃은 사이트마다 다른 환경에서 사용되며 경로에 따라 다른 업데이트로 사용됩니다. 더 궁금한 점이 더있을 경우 한 번에 하나의 질문을하십시오. 그러나이 질문을 편집하지 마십시오. 그렇지 않으면 닫힐 수 있습니다.
mbalparda

나는 여기서 무례하지 않으려 고 노력하고있다. 시간을내어 답변 해 주셔서 감사합니다. 그러나 나는 당신의 대답이 저에게 도움이되지 않는다고 생각합니다. 요소를 제거하고 단일 CMS 페이지에 블록을 추가하려고하는데 방법이 작동하지 않아서 작동하는 방법을 요청하고 있습니다. 레이아웃과 템플릿의 일반적인 목적을 알고 있으며 "올바르게 사용하면 제대로 작동합니다"라는 질문에 대답하지 않습니다.
Ezratic

이 페이지는 "다른 사람들이 무료로 직업을 수행"으로 잘못 판단했습니다. 대답은 유효하고 아마도 당신이 찾고있는 대답이며 Magento에서 일이 어떻게 작동하는지 알게되면이 대답이 진행되는 방법이라는 것을 알게 될 것입니다.
mbalparda

이것을 읽고 당신이 필요로하는 무엇을 당신의 대부분을 찾을 수 있습니다 : magentocommerce.com/knowledge-base/entry/...
mbalparda

0

수락 된 답변의 모든 지시 사항을 이해하는 데 잠시 시간이 걸렸으므로 피기 백하기 위해 모든 CMS 페이지의 래퍼를 제거하는 데 필요한 모든 것입니다. <div class="std"></div>

cms.xml에서 cms_page 블록을 다음과 같이 변경하십시오.

<cms_page translate="label">
    <label>CMS Pages (All)</label>
    <reference name="content">
        <block type="core/template" name="page_content_heading" template="cms/content_heading.phtml"/>
        <block type="cms/page" name="cms_page"/>
    </reference>
</cms_page>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.