В настоящее время вы вручную создаете блок просмотра продукта и не используете стандартный макет xml, так что вы не получаете ни одного из дочерних блоков по умолчанию, которые будут загружены на странице продукта с помощью дескриптора макета страницы продукта;
catalog_product_view
Просмотр этого макета дескриптора в файле catalog.xml покажет вам, какие блоки будут загружены, и главное, которые дочерние блоки добавляются в блок под названием «product.info», который обычно используется в разделе шаблона вы пытаетесь визуализировать.
Если вы просматриваете шаблон страницы «catalog/product/view.phtml», который вы представляете, вы увидите, что он вызывает блоки, которые не будут доступны, например;
<?php echo $this->getChildHtml('addtocart') ?>
Так, чтобы исправить это у вас есть два варианта,
вручную инициализировать и добавить каждый из дочерних блоков в блок продукта, который вы создаете, используя() метод Append.
Или
Обновление действия контроллера, который используется для загрузки и отображения страницы, чтобы включить макет ручки страницу продукта.Вызов следующего в контроллере,
$update = $this->getLayout()->getUpdate();
$update->addHandle('catalog_product_view');
Это заставит макет включать все правильные дочерние блоки страниц продукта, то в шаблоне просто позвонить;
$_product = Mage::getModel('catalog/product')->load('17');
Mage::register('product',$_product);
Mage::register('current_product',$_product);
$block = Mage::app()->getLayout()->getBlock('product.info');
echo $block->toHtml();
Добавление ручки может быть сделана в контроллере, который необходимо будет отвергнуто, используя переписанный в пользовательском модуле (уже есть много статей по этому вопросу). Используйте наблюдателя событий для любого события, запускаемого перед действием контроллера.
Во-первых, спасибо за все эти объяснения. К сожалению, мне ничего не удалось сделать. – live4fun
Что касается кода для записи в шаблоне, я получил следующую ошибку: Неустранимая ошибка: вызов функции-члена toHtml() для не-объекта в .../public_html/app/design/frontend/default/modern/template/page/myviewer.phtml on line 63 Что касается части контроллера, я попытался изменить/public_html/app/code/core/Mage/Cms/controllers с моей домашней страницы в CMS. Правильно ли я понял? Я знаю, что я не должен напрямую редактировать основные файлы, но на данный момент я пытаюсь сделать это простым. – live4fun
Пожалуйста, не редактируйте "/ public_html/app/code/core/Mage/Cms/controllers" прямо, никогда! Взгляните на это сообщение, где есть статья о том, как это сделать, http://www.amitbera.com/how-to-override-a-controller-in-magento. Если блок пуст, вы получите эту ошибку, проверьте, что ваш layout.xml имеет блок с именем «product.info» в дескрипторе макета catalog_product_view –