magento - 将子 SKU 添加到 Magento 全文搜索索引

标签 magento magento-1.7 magento-1.8

我不确定为什么这不是 Magento 库存功能的一部分,但我希望客户能够通过子 SKU 搜索可配置产品。由于某种原因,Magento 不会为子 SKU 编制索引。

我在app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php

中找到
$dynamicFields = array(
    'int'       => array_keys($this->_getSearchableAttributes('int')),
    'varchar'   => array_keys($this->_getSearchableAttributes('varchar')),
    'text'      => array_keys($this->_getSearchableAttributes('text')),
    'decimal'   => array_keys($this->_getSearchableAttributes('decimal')),
    'datetime'  => array_keys($this->_getSearchableAttributes('datetime')),
);

我尝试了几种变体,但没有成功。 SKU 是“静态”属性,可通过 $this->_getSearchableAttributes('static') 访问。我可以很好地获取所有静态属性,但它不起作用。根据尝试的结果,我要么结果没有变化,要么出现静态属性表不存在的错误(这是有道理的,因为静态属性位于产品实体表中)。

有人有解决这个问题的建议吗?

在线研究发现了添加具有这些值的隐藏属性的建议,但这不是必需的。我宁愿妥善解决问题。

最佳答案

有很多方法可以做到这一点..

但是,我会以我认为更简洁的方式开头,而不是在 app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php 中搞乱实际的全文。

问题出在您包含的代码片段之后的行:

    // status and visibility filter
    $visibility     = $this->_getSearchableAttribute('visibility');
    $status         = $this->_getSearchableAttribute('status');
    $statusVals     = Mage::getSingleton('catalog/product_status')->getVisibleStatusIds();
    $allowedVisibilityValues = $this->_engine->getAllowedVisibility();

最终导致:

core/Mage/CatalogSearch/Model/Resource/Fulltext/Engine.php

/**
 * Retrieve allowed visibility values for current engine
 *
 * @return array
 */
public function getAllowedVisibility()
{
    return Mage::getSingleton('catalog/product_visibility')->getVisibleInSearchIds();
}

然后:

核心/法师/目录/模型/产品/Visibility.php

 public function getVisibleInSearchIds()
{
    return array(self::VISIBILITY_IN_SEARCH, self::VISIBILITY_BOTH);
}

因此,您需要做的是转到与您的可配置相关的简单产品,并将可见性更改为“搜索”。

Change in visibility options for simple product associated with config

但是,现在它正在发挥作用:

Zoinks! that doesn't look pretty at all

但是,是的,这看起来一点也不漂亮。现在的下一个业务顺序是修改搜索结果,以便当它列出一个简单的产品项时,该产品项 a.) 与可配置产品关联 b.) 可见性 ID 显式设置为 Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH,您需要在搜索结果到实际的可配置产品父级(及其其余详细信息,例如图像)。

(稍后我会继续这个。我的电脑决定把我搞砸了,我丢失了超过 50% 的内容。甚至我们修改全文类的部分!该死。稍后见。)

关于magento - 将子 SKU 添加到 Magento 全文搜索索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034514/

相关文章:

magento-1.7 - 如何将 Magento 库存设置更改为网站范围而不是全局范围?

magento - magento 商店有多个 URL?

magento - fatal error : Call to a member function toOptionArray() on a non-object in Magento admin

mysql - Magento全文搜索错误

php - 内联翻译在 magento 中不起作用

magento - 检查 Magento 的最终 XML 结构

magento - 如何更改列数 Magento

image - Magento - 如何在交易电子邮件中插入产品图片

php - 在 Adaptive Paypal Payments 中发送每件商品的运费详情

php - Magento - 在 1.8 上删除 "ShortDescription"Div