如果用户在osclass的搜索栏中键入类别名称,搜索将不显示任何内容
问题描述:
我希望这也能帮助其他人。 如果用户在搜索栏中键入类别/子类别名称,则搜索栏不显示任何内容。 我知道有一个单独的字段用于选择类别/子类别以及搜索栏,但在我的情况下,我只有一个搜索栏,当我通过输入类别/子类别名称进行搜索时,搜索向我显示0个结果发现即使我有类别/子类别中的项目。 有没有人可以帮助我的解决方案请如果用户在osclass的搜索栏中键入类别名称,搜索将不显示任何内容
答
osclass中的搜索只能通过标题和描述。如果您将类别名称插入到说明中,则它将按您的要求工作。
在主题functions.php文件,添加到末尾
<?php
function endsWith($haystack, $needle)
{
$length = strlen($needle);
return $length === 0 ||
(substr($haystack, -$length) === $needle);
}
function mc_addcategory($desc, $catId) {
$Cat = Category::newInstance()->toRootTree($catId);
$d = '\n\n ';
foreach($Cat as $c) {
$d = $d . $c["s_name"] .'/';
}
if(endsWith($desc, $d))
return $desc;
else return $desc . $d;
}
function mc_filter_description($aItem) {
foreach(@$aItem['description'] as $key => $value) {
$aItem['description'][$key] = mc_addcategory($value,$aItem['catId']);
}
return $aItem;
}
osc_add_filter('item_add_prepare_data', 'mc_filter_description');
osc_add_filter('item_edit_prepare_data', 'mc_filter_description');
?>
步骤2
你想显示的说明向公众和车主时从描述中删除添加的文本当它编辑嗨的项目。 你可以做到这一点与上面的代码之前,将这个功能 中的functions.php
<?php
function mc_hide_categ_in_description($desc, $catId) {
$Cat = Category::newInstance()->toRootTree($catId);
$d = '\n\n ';
foreach($Cat as $c) {
$d = $d . $c["s_name"] .'/';
}
if(endsWith($desc, $d))
return str_replace($d,'',$desc);
else return $desc;
}
?>
,并调用这个函数,其中显示的说明。这里有一个看看
,看看我称之为“removeunderline(”的描述。
OBS
在这之后,你必须通过编辑更新你的数据库的描述和保存每个项目。 如果编辑项目并且它的类别被用户更改,这将起作用。
如果管理员进行编辑,并且上述功能不能从oc-admin/themes中调用/ modern ...文件,上面的最后一个函数必须放在/oc-includes/osclass/helpers/hSearch.php中,并从functions.php文件中删除。