2010-02-26 5 views
0

Я пытаюсь выяснить, как работает система диспетчеризации Magento.Magento диспетчерская внешняя заявка

Я хочу отправить определенную часть макета (например, тело) извне каталога приложения.

Что я до сих пор;

<?php 
$app   = Mage::app(); 
$myRequestUri = '/checkout/cart'; 

$front  = $app->getFrontController(); 
$request  = $front->getRequest(); 

$request->setRequestUri($myRequestUri); 

// dispatch everything 
$front->dispatch(); 
?> 

Отправка идет ОК, но мне нужно разбить это только на тело или на определенный блок. Также генерируемый HTML должен быть возвращен, а не выводить его напрямую (лучше не использовать буферизацию вывода).

// Roland

Edit: Я добавил прогресс я сделал, стил оставляет меня с некоторыми вопросами.

+0

Обновлено на основе вашей обратной связи –

ответ

1

Я не пробовал это, но вы могли нарушить соглашение и просто разбить свой собственный URL в $ _SERVER ['REQUEST_URI']. Это считается плохой формой, но я сделал бы это до взлома ядра.

EDIT: Основываясь на ваших изменениях, рад, что вы получите ответ. Итак, теперь проблема заключается в том, что у вас есть все HTML-данные, возвращаемые на страницу? Для некоторых страниц может не иметь смысла выделять HTML. Какую информацию мы действительно пытаемся получить.

Итак, если вам действительно нужно снять страницу, вам нужно будет изменить макет страницы. Эта информация хранится в XML-файлах макета. Это повлечет за собой небольшую модификацию, но идея состоит в том, чтобы добавить модуль, который проверяет работу в командной строке (isset ($ _ SERVER ['argc]) может работать), а затем загружает пользовательский дескриптор ($this->getLayout()->getUpdate()->addHandle('my_custom_handle');), который сбрасывает все файлы phtml, которые отображают информацию заголовка эха. Это будет проблематично делать надежно и без взлома основных файлов, поэтому я предлагаю посмотреть по умолчанию создание новой страницы без информации.

Надежда, что помогает, Джо

+0

Я сделал несколько progess и отредактировал мой пост. –

0

Спасибо за помощь мне Джо, в то же время я сделал, опять-таки, много прогресса, но до сих пор еще не там ;-)

Что я на самом деле хочу для достижения этой цели можно отправить любую страницу пурпурного цвета. Например, действительный запрос на отправку по электронной почте/клиенту/учетной записи/логину должен войти в систему.

За исключением отображения тела ответа. Я не хочу, чтобы макет был визуализирован по умолчанию, вместо этого я хочу программно выбрать блок (определенный в соответствующем запрошенном макете xml).

Пример короткого кода, как я его вижу.

<?php 
// code from previous post 
// - load, set request uri, dispatch 

$someBlock = getABlock('breadcrumbs'); // e.g. name attribute value in the xml 
echo $someBlock->toHtml(); 
?> 

Лучше всего было бы ее обработки в местном бассейне кода, однако им не уверен, что это хорошая идея, чтобы расширить (если ее вообще возможно) фронт-контроллера.

Я не знал о ручках обновления макета .. макет может обновить? Что они означают с этим ...

Смежные вопросы