Heyo, 잠시 동안 magento 테마로 작업 중이었습니다 (... 그리고 시스템에 대한 나의 이해는 천천히 그러나 꾸준히 증가하고 있습니다). 곧 일부 맞춤 모듈 작업을 시작해야하므로이 작은 프로젝트로 시작하여 내 베어링을 얻습니다.Magento - 커스텀 모듈 구조
복사하여 붙여 넣은 특정 작업을 관리하는 코드를 발견했습니다. 템플릿 파일 :
매우 간단합니다. 제품이 특정 카테고리에 속해 있는지 확인하고 요소가있는 경우 해당 요소를 생성합니다. (나는 이것을하기의 대략 5 개의 단단한 방법이다는 것을 알고있다 ... 이것은 나가로 갔다이다).
제품 블록이 표시 될 때마다이 코드를 테스트해야하며 지금까지는이 코드를 복제하여 작동하도록했습니다. 그것은 작동하지만 뒤로 (나는 뷰 계층에 로직을 두지 않아야합니다)입니다. -
좋아 그래서, 기능 공유 할 수있는 간단한 모듈을 만들 수 있습니다 :
지역/WACI/ProductFlag을/etc/config.xml에
<config>
<modules>
<WACI_ProductFlag>
<version>0.1.0</version>
</WACI_ProductFlag>
</modules>
<global>
<blocks>
<WACI_ProductFlag>
<class>WACI_ProductFlag_Block_View</class>
</WACI_ProductFlag>
</blocks>
</global>
</config>
등/모듈/WACI_All.xml
<config>
<modules>
<WACI_CustomPageLayouts>
<codePool>local</codePool>
<active>true</active>
</WACI_CustomPageLayouts>
</modules>
<modules>
<WACI_ProductFlag>
<codePool>local</codePool>
<active>true</active>
</WACI_ProductFlag>
</modules>
</config>
이제 클래스에 대한 ... 난 정말 확실하지 해요 Block
O 경우 r Helper
이 적합합니다. 나는 Block
으로 갔다. 그러나 - idk ... 나는 아마 틀리다. (이 물건에 대한 튜토리얼은 격렬히 다르다.)
지역/WACI/ProductFlag/차단/View.php
<?php
/**
* WACI
*
* @codepool Local
* @category View
* @package WACI
* @module ProductFlag
*/
class WACI_ProductFlag_Block_View extends Mage_Core_Block_Template
{
private $_focus;
private $_isFF = false;
public function getIsFF($product){
$this->_focus = "FF";
$isFF = false;
$ids = $product->getCategoryIds();
$cat = Mage::getModel('catalog/category')->load($ids[0]);
foreach ($ids as $key=>$val) {
$cat = Mage::getModel('catalog/category')->load($val);
$name = $cat->getName();
if ($name === 'Fast Fulfillment') {
$isFF = true;
}
}
}
protected function _toHtml(){
$html = parent::_toHtml();
if ($this->_focus === "FF") {
if ($this->_isFF){
$html .= '<span class="ff-logo"></span>';
}
}
return $html;
}
}
?>
난 단지 특정 제품의 입력에 따라 출력에 문자열을 원하는 희망의 취소합니다. 문자열을 전달하기 위해 _toHtml()
을 무시해야합니까? 다시. 이이 클래스를 인스턴스화하는 경우
<catalog_product_view>
<reference name="content">
<reference name="product.info">
<block type="WACI/ProductFlag" name="product.flag" as="productFlag" output="toHtml" />...
... 내가 분명하지 않다 : 아마하지 ... 내 local.xml에서
나는 블록을 참조? 나는 그렇게 생각하지 않는다. 어쨌든 매개 변수가있는 메소드를 호출해야 할 경우 내 product/view/media.phtml에 주소를 지정하는 방법을 잘 모르겠습니다.
템플릿 파일이 필요하지 않다고 생각합니다. 문자열을 출력하는 것만 같지만 템플릿이없는 블록 모듈을 본 적이 없다고 생각합니다. 어쩌면 헬퍼 클래스가 적절할 수 있습니까?
어떤 경우 이건 작동하지 않습니다.
내 미디어 클래스에 getIsFF()
메서드가 없다는 치명적인 오류가 발생하거나 아무 것도 나타나지 않습니다. 내 구성 파일은 정확하지만 그게 문제라고 생각합니다.
제 버스. 나는 모두 뒤집었다.
마법사의 skillz가있는 누군가가이 간단한 문제를 명확히하고 올바른 방향으로 나를 가리킬 수 있습니까?
건배!
괜찮으 시다면 정확한 오류를 게시하십시오. (스택 트레이스 포함) –
안녕하세요. 답장을 보내 주셔서 감사합니다. 나는 직장을 그만두기 전에 마침내 어제 밤 일하는 것을 마침내 얻었다. 나는 (결국) 일할 수있는 간단한 도우미 클래스를 만들었습니다. 내 아키텍처가 "맞는지"알지 못합니다. 약간의 해킹이 일어납니다. 내가 월요일에 생각해 냈던 것을 올릴거야. ... magento U 비디오를 통해 진행됩니다. 이 프로세스의 속도를 높일 수 있습니다. – Bosworth99