та вроде общую как раз понял. Не была понятна логика работы в самом
ReplaceComMeta, в части замены и переводов.
Нужно было делать перевод(так как магазин мультиязычный) #слов" в seo тегах
К примеру #SEO_PARTS_HEADER# BRAND MODEL DATE #SEO_AUTOPARTS# BRAND MODEL #SEO_BUY_PARTS# BRAND MODEL #SEO_BUY_AUTOPARTS# BRAND MODEL
Куда соответственно подставляются:
"запчасити ALFA ROMEO 145, автозапчасти ALFA ROMEO 145, купить запчасти ALFA ROMEO 145, купить автозапчасти ALFA ROMEO"
Пока переписал эту ReplaceComMeta(по хорошему получился г-код наверное, так как использовал аж 3 цикла) но все работает. С тем что было в ReplaceComMeta конечно хотелось бы разобраться...
Код:
function ReplaceComMeta($string, $arMData)
{
$SegKey = null;
if ($string != "") {
$newSegment = false; // тригер нового сегмента
$arrayWordTraslate = array();
for($i = 0, $c = strlen($string); $i < $c; $i++){
if ($string[$i] == "#") {
if ($newSegment == true) { // Если сегмент уже есть значит это слово закончилось
$arrayWordTraslate[] = array(
'start' => $wordStart,
'end' => $i,
);
$newSegment = false; // Возвращаяем тригер в исходную
$wordStart = 0; //
} else {
$newSegment = true;
$wordStart = $i; // Записываем точку начала
}
}
}
$replaceArr = array();
// Проходимся по массиву $arrayWordTraslate выбирая слова, выполняя перевод, и формируем массив замены $replaceArr
foreach ($arrayWordTraslate as $word){
$word_to_traslate = substr($string, $word['start'], $word['end'] - $word['start']+1);
$replaceArr[$word_to_traslate] = Lng(str_replace("#", "", $word_to_traslate), 0, 0);
}
// Заменяем значения в строке
foreach ($replaceArr as $key => $value){
$string = str_replace($key, $value, $string);
}
if (count($arMData) > 0) {
foreach ($arMData as $CODE => $VALUE) {
$string = str_replace($CODE, $VALUE, $string);
}
}
}
return $string;
}