Можно ли переписать сообщение об ошибке или об успешном завершении, сгенерированное magento? - PullRequest
1 голос
/ 13 апреля 2011

Можно ли переписать сообщение об ошибке / успехе, сгенерированное системой magento?

Например, если мы добавляем продукт, сообщение об успехе «Ноутбук добавлен в вашу корзину…!», Что если я хотел бы добавить имя моего клиента, например «Джош, вы добавили ноутбук в свою корзину»

Спасибо, Балан

Ответы [ 2 ]

4 голосов
/ 21 сентября 2012

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

/**
 * Searches messages for @param $string.
 * Will remove the message if $remove is true.
 *
 * @param string $string
 * @param boolean $remove: false
 * @param string $which: core/session
 * @return true|false, found|not found
 * @access public
 */
public function message_search( $string, $remove = false, $which = 'core/session' ) {

  $found = false;

  $messages = Mage::getSingleton( $which )->getMessages();
  foreach( $messages->getItems() as $message )
    if( stristr( $message->getText(), $string ) ) {
      $found = true;
      if( $remove ) $message->setIdentifier( 'this_message_will_be_removed' );
    }

  if( $remove ) $messages->deleteMessageByIdentifier( 'this_message_will_be_removed' );
  return $found;

}
4 голосов
/ 13 апреля 2011

Достаточно просто добавить свое пользовательское сообщение в стек при добавлении элемента. Добавьте прослушиватель событий для checkout_cart_add_product_complete, который делает это:

public function observeAddToCart($observer) { 
    $product = $observer->getEvent()->getProduct(); // you may need to play with this
    $session = Mage::getSingleton("checkout/session")->addSuccess($message); 
    $message = Mage::helper("yourmodule")->__('%s, you added %s to your shopping cart.', Mage::helper('core')->htmlEscape($product->getName()));
    $session->addSuccess($message); 
}

Это оставляет проблему удаления старого сообщения. Самое близкое, что я вижу сейчас, это то, что вы можете удалить все остальные сообщения по команде, получив их. Таким образом, после этого вы можете очистить установленное Magento сообщение так:

Mage::getSingleton("checkout/session")->getMessages(true);

Однако вам нужно будет сделать это после добавления сообщения Magento. Надеюсь, это даст вам старт!

Спасибо, Джо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...