Я пытаюсь обновить счетчик популярности модуля Tag Magento путем взаимодействия с этой основной функцией в Mage_Tag_Model_API
Как изменить существующую информацию тега в Magento
public function update($tagId, $data, $store)
{
$data = $this->_prepareDataForUpdate($data);
$storeId = $this->_getStoreId($store);
/** @var $tag Mage_Tag_Model_Tag */
$tag = Mage::getModel('tag/tag')->setStoreId($storeId)->setAddBasePopularity()->load($tagId);
if (!$tag->getId()) {
$this->_fault('tag_not_exists');
}
// store should be set for 'base_popularity' to be saved in Mage_Tag_Model_Resource_Tag::_afterSave()
$tag->setStore($storeId);
if (isset($data['base_popularity'])) {
$tag->setBasePopularity($data['base_popularity']);
}
if (isset($data['name'])) {
$tag->setName(trim($data['name']));
}
if (isset($data['status'])) {
// validate tag status
if (!in_array($data['status'], array(
$tag->getApprovedStatus(), $tag->getPendingStatus(), $tag->getDisabledStatus()))) {
$this->_fault('invalid_data');
}
$tag->setStatus($data['status']);
}
try {
$tag->save();
} catch (Mage_Core_Exception $e) {
$this->_fault('save_error', $e->getMessage());
}
return true;
}
В моем контроллере у меня есть это:
public function clickAction()
{
$tagString = $this->getRequest()->getParam('tag');
$tagByName = Mage::getModel('tag/tag')->loadByName($tagString);
$tagId = $tagByName->getTagId();
$basePopularity = ['base_popularity' => '13']; // hard coding while testing
Mage::getModel('tag/api')->update($tagId, $basePopularity, 1);
}
Если я кладу заявление войти эту часть функции обновления:
try {
// log stuff
$tag->save();
}
Я вижу, что это делает это до try
, но никаких изменений в данных. Что я испортил? Любые другие идеи о том, как я могу обновить популярность тега через контроллер? Используя этот же метод и добавление 'name' => 'blah'
этому параметру $data
массива отлично работает ..
Я также нашел в Mage_Tag_Model_Indexer_Summary.php
этот метод определен в PHPDoc * @method Mage_Tag_Model_Indexer_Summary setPopularity(int $value)
Может быть, это то, что мне нужно ... может кто-то привести пример, показывающий, как я мог использовать этот волшебный сеттер?
Да! Вот и все, спасибо! – Zac