나는 단지의 의미를 이해하고 싶다.
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">
Google에서 많은 참조를 받고 그것에 대해 많은 것을 이해했지만 여전히 type="page/html"
내 사용자 정의 모듈의 유형을 형성하는 방법을 이해할 수 없습니다 .
설명 해주십시오
type="A/B"
이 A와 B가 어디에서 왔는지 알려주세요?
답변
는 A
모듈의입니다 별칭 . 이 경우 page
는 약자입니다 Mage_Page_Block
( app/code/core/Mage/Page/etc/config.xml
보려는 경우에 정의 됨 ).
(가) B
별칭으로 클래스 이름을 기준으로, 각 단어의 첫 글자는 대문자입니다. 이 경우 html
가 Html
되고 확인 된 별칭에 추가되므로 Mage_Page_Block_Html
. 이는 app/code/core/Mage/Page/Block/Html.php
클래스 이름이 Magento의 위치로 직접 변환되기 때문에 파일에서 찾을 수 있습니다.
블록 별칭 대신 모델 별칭을 사용 page
했다면 Mage_Page_Model
대신 사용할 수 있습니다 . 자원 모델과 헬퍼도 마찬가지입니다. 자체 모듈 이 블록, 모델 및 도우미를 포함하려면 구성 에서이를 정의해야 합니다.
답변
다음은 마 젠토 블록 유형에 대한 자세한 내용을 이해하기 위해 레이아웃에서 널리 사용되는 몇 가지 기본 제공 블록 유형입니다.
core/template
:이 블록은template
속성으로 정의 된 템플릿을 렌더링 합니다. 레이아웃에 정의 된 대부분의 블록은의 유형 또는 하위 유형입니다core/template
.page/html
: 이것은core/template
루트 블록 의 하위 유형 이며 정의합니다. 다른 모든 블록은이 블록의 자식 블록입니다.page/html_head
: JavaScript, CSS 등을 포함하는 요소를 포함하는 페이지의 HTML 헤드 섹션을 정의합니다.page/html_header
: 사이트 로고, 상위 링크 등이 포함 된 페이지의 헤더 부분을 정의합니다.page/template_links
:이 블록은 링크 목록을 만드는 데 사용됩니다. 바닥 글 및 머리글 영역에 표시되는 링크는이 블록 유형을 사용합니다.core/text_list
: 같은 일부 블록content
,left
,right
등 유형입니다core/text_list
. 이러한 블록이 렌더링되면getChildHtml()
메서드 를 호출 할 필요없이 모든 자식 블록이 자동으로 렌더링됩니다 .page/html_wrapper
:이 블록은 액션에 의해 설정된 HTML 태그 안에 자식 블록을 렌더링하는 래퍼 블록을 만드는 데 사용됩니다setHtmlTagName
. 기본 태그는<div>
요소가 설정되지 않은 경우입니다.page/html_breadcrumbs
:이 블록은 페이지의 이동 경로를 정의합니다.page/html_footer
: 바닥 글 링크, 저작권 메시지 등이 포함 된 페이지의 바닥 글 영역을 정의합니다.core/messages
:이 블록은 오류 / 성공 / 알림 메시지를 렌더링합니다.page/switch
:이 블록은 언어 또는 상점 전환기에 사용할 수 있습니다.
이것은 일반적으로 사용되는 블록 유형의 목록입니다. 고급 테마 구현에 사용되는 다른 많은 블록 유형이 있습니다.
답변
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">
page는 etc/config.xml
파일에 정의 된 FrontendName입니다. html은 블록 클래스 이름입니다.
자세한 내용은:
이 줄 type(type="page/html")
에서 귀하 template(template="example/view.phtml">)
와 관련된 블록 클래스 이름을 정의 하고 이름은 각 블록에 대해 고유합니다.
먼저 폴더 구조 참조
app> local> namespace> modulename> etc> config.xml
우리는 설정 FrontendName = 'mymodule'
app> local> namespace> modulename> 블록 > hello.php
hello.php에서 함수를 만들었습니다.
class namespace_modulename_Block_Data extends Mage_Core_Block_Template
{
public function mydata()
{
$data = "Block is called";
return $data;
}
}
이제 레이아웃 xml 페이지로 이동하십시오.
<block type="mymodule/data" name="xyz" template="example/view.phtml">
여기 mydata는 프런트 엔드 이름입니다.
이제 템플릿의
template / example / view.phtml 페이지
여기서 mydata () 함수를 직접 호출 할 수 있습니다.
처럼
<div>
<?php echo $this->mydata(); ?>
</div>
이제 “Block is called”브라우저에서 출력을 얻을 수 있습니다.
답변
“B”유형에 대해서는 모르지만 “A”는 config.xml의 config.xml 예제에서 모듈 이름 태그를 참조합니다.
<A><!-- script --></A>
아니, 틀린게 아니야. 그러나 "<!-- script -->"
혼란 스러울 수 있습니다. 명확히합시다 : 위의 답변에서 언급했듯이 이것은 두 부분으로 구성된 별칭입니다. 첫 번째 부분 ( “A”) 자체는 모듈의에서 모듈의 클래스에 대해 정의한 별칭 config.xml
이고 두 번째는 노드의 가치. 이들을 함께 ( “A”+ 대문자로 표시된 “B”) 정의한대로 정확하게 첫 번째 부분 ( “A”노드 값)을 사용하여 클래스 이름으로 변환됩니다 (시간을 원하지 않는 경우 대문자 / 소문자를 확인하십시오). 두 번째 부분은 각 밑줄 뒤에 대문자로 표시됩니다. 따라서 블록과 다음 구성으로 A / B 예제로 시작하십시오.
<config>
...
<global>
<blocks>
<A>Vendor_Module_Block</A>
</blocks>
</global>
...
</config>
런타임 A/B
에서 Magento 구성에 의해 확인되고 Vendor_Module_Block_B
다음 경로의 자동로드에 포함됩니다 public/app/local/Vendor/Module/Block/B.php
. 더 나은 이해 I 조언을 얻으려면 당신은 살펴보고 Mage_Core_Model_Config::getGroupedClassName()
, Mage_Core_Model_Config::getModelInstance()
하고 Varien_Autoload::autoload()
.
답변
“B”유형에 대해서는 모르지만 “A”는 config.xml의 모듈 이름 태그를 참조합니다.
config.xml 파일의 예 :
<A><!-- script --></A>
nb : 내가 틀리지 않았 으면 좋겠어 ..