Тоже самое. Присоединяюсь к вопросу.
На 2.12.1 вместо og:description отображается title.
Файл: /system/controllers/opengraph/hooks/content_before_item
Код:
'description'=>($item['seo_desc'] ? $item['seo_desc'] : $item['title']),
Я там рылся уже, пробовал менять всяко — не получается./system/controllers/opengraph/hooks/content_before_item
удалить строку
'description'=>($item['seo_desc'] ? $item['seo_desc'] : $item['title']),
и в типах контента создать, в настройках этого компонента дополнительное поле разметки og:description и указать поле, выводящее description.
А обрезать как? Там такие простыни получаются. ) Еще и с тегами <p>.указать поле, выводящее description
Пробовал {content|string_get_meta_description} писать, не работает.
Вам не подойдёт.А обрезать как?...
У меня описания в новостях редко бывают длинными и тэг p не использую, так как отображается при наведении на картинку с главной.
Временно можете так попробовать (замените весь в /system/controllers/opengraph/hooks/content_before_item):
<?php /******************************************************************************/ // // // InstantMedia 2015 // // http://www.instantvideo.ru/, support@instantvideo.ru // // written by Fuze // // // /******************************************************************************/ class onOpengraphContentBeforeItem extends cmsAction { public function run($data){ return $data; } return $data; } return $data; } // формируем изображения foreach ($ctype['options']['image_fields'] as $key=>$image_field) { continue; } $preset = isset($ctype['options']['image_preset'][$key]) ? $ctype['options']['image_preset'][$key] : 'small'; $images = cmsModel::yamlToArray($item[$image_field]); // берем первое поле foreach ($images as $image) { $image_urls[] = $image[$preset]; } } else { $image_urls[] = $images[$preset]; } } } // пробелы и переносы нам не нужны $og_description = $item['seo_desc']; $og_description_sts = string_short($og_description_pr, 150);//к сожалению, наша функция обрезает строку и после первой точки $og_description = $og_description_sts; } else { $og_description = $item['title']; } 'title'=>$item['title'], 'description'=>($og_description), 'type'=>$ctype['options']['og_type'], 'url'=>href_to($ctype['name'], $item['slug'].'.html'), 'image_urls'=>$image_urls )); // дополнительные поля foreach ($ctype['options']['other_field'] as $key=>$other_field) { $fcontent = string_replace_keys_values($ctype['options']['const_field'][$key], $item); $fcontent = str_replace('{host}', $this->protocol.$_SERVER['HTTP_HOST'].cmsConfig::get('root'), $fcontent); } } else { $fcontent = $item[$ctype['options']['other_field_name'][$key]]; } if(!empty($ctype['options']['other_field_func'][$key]) && function_exists($ctype['options']['other_field_func'][$key])){ $fcontent = $ctype['options']['other_field_func'][$key]($fcontent); } } $template->addHead('<meta property="'.htmlspecialchars($other_field).'" content="'.htmlspecialchars($fcontent).'"/>'); } } if($ctype['options']['og_type'] == 'article'){ } $template->addHead('<meta property="article:section" content="'.htmlspecialchars($item['category']['title']).'"/>'); } $template->addHead('<meta property="article:tag" content="'.htmlspecialchars(is_array($item['tags']) ? implode(', ', $item['tags']) : $item['tags']).'"/>'); } } } }
Работать будет, но явно не то, чего бы хотелось (а хотелось бы, чтобы паттерн выводился, есои нет "ручного" описания, и только уж потом — заголовок).
Имейте ввиду: делал любитель (никаких гарантий!).
Думаю, разработчик поправит.
Спасибо. Это решение работает.
… надо заполнять сео-описание (тогда будет выводится оно (сео-паттерны не попадут)).
Подскажите пожалуйста, а есть ли возможность применить обрезку и переносы с пробелами в настройках типа контента в "Шаблоне генерации META-описаний"? Там можно выбрать поле (например teaser), из которого будет браться описание, а как к этому полю "прикрутить" preg_replace('!\s+!', и string_short? В документации есть примеры, как можно выводить разную информацию, но по этому поводу ничего нет.
Но только с уведомлением
Notice: Undefined index: type in /system/controllers/opengraph/frontend.php on line 40
После строки:Но только с уведомлением
'description'=>($og_description),
'type'=>$ctype['options']['og_type'],
Валидатор микроразметки webmaster.yandex
Ответ такой это же ошибка вроде подскажите кто знает
rdfanode
resource = www.sait.ru
www.w3.org/1999/xhtml/vocab#search = www.sait.ru/search/opensearch