2013-04-30 2 views
3

Я хочу переместить Добавить в корзину кнопку от view.phtml файл до 2columns-right.phtml файл, и я не могу заставить его работать. Я сделал то, что скопировал <?php echo $this->getChildHtml('addtocart') ?> с view.phtml файлом в 2columns-right.phtml, и он вообще не отображается. Я тоже использовал кеш Flush Magento, но ничего больше.Перемещение Magento «Добавить в корзину», чтобы новый файл не работал

Любые предложения о том, как сделать эту работу?

+0

гляньте @ /layout/catalog.xml, вы сможете обратите внимание, что в '' ... вы объявляете $ this-> getChildHtml ('addtocart') в своем xml с '' –

ответ

1

Вы должны ознакомиться с системой макетного макета. Чтобы сделать возможным <?php echo $this->getChildHtml('addtocart') ?> работать в 2columns-right.phtml, этот блок должен быть объявлен как дочерний блок корневого блока (корень - это блок, который отображается с 2columns-right.phtml). На самом деле, я не вижу большого смысла в перемещении добавить в корзину другие шаблоны, потому что addtocart.phtml сам по себе является просто кнопкой, которая представляет всю форму, которая находится по адресу catalog/product/view.phtml. Если вы вытащите его оттуда, это не сработает.

+0

yes Я знаю, что это не будет работать без формы, я тоже переведу форму, просто не знаю, w Кнопки не появляются внутри ранее упомянутого файла. –

+0

Привет, этот ответ на самом деле имеет смысл, но я был новичком в magento, поэтому я узнал схему этой структуры, для меня мне нужно отобразить это на определенной странице, используя объявление каталога {{block type = "/product_view "product_id =" 3 "template =" catalog/product/view.phtml "}} над содержимым каким-то образом заставляет его отображаться на странице cms, потому что мы используем компонент в joomla, чтобы он отображал страницы продукта пурпурного цвета над сайт и все, что нам нужно, это форма добавления в корзину вместе с настраиваемыми атрибутами для добавления продукта в корзину. –

1

Прежде всего, я согласен с nevermourn, что вы не можете получить childhtml, если вы его не объявили. Но вы можете использовать

<?php echo $this->getLayout()->createBlock('catalog/product_view')->setTemplate('catalog/product/view/addtocart.phtml')->toHtml(); ?> 

Используя это в 2columns-right.phtml вы получите addtocart.phtml наверняка.

+0

Привет, Kashif, добро пожаловать в SO и вносит свой вклад! Не могли бы вы проверить свой ответ на dev-сервере, чтобы убедиться? Я бы хотел, но на данный момент настроен только живой сервер. Это выглядит правильно для меня, но я помню время, когда что-то вроде этого не работало для меня. Благодаря! –

+1

Привет, я протестировал его на magento 1.7x, и он отлично работает, но если у вас есть домашняя страница с '2columns-right.phtml', это вызовет ошибку, потому что данные о продукте не существуют. Но вы можете предотвратить это, добавив условие, например: if (Mage :: app() -> getFrontController() -> getRequest() -> getRouteName() == 'catalog') ' – Raza

0

для вызова добавить в корзину кнопку с помощью

<?php echo $this->getChildHtml('addtocart') ?> 

на странице вы желаете в макете/local.xml

<yourModule_YourController_yourAction> 
    <reference name="content"> 
     <block type="catalog/product_view" name="product.info.addtocart" as="addtocart" template="catalog/product/view/addtocart.phtml"/> 
    </reference> 
</yourModule_YourController_yourAction>