2017-01-04 15 views
4

Мы хотим разделить указатель на Angular 2 в социальных сетях. Например, Facebook и Skype.Динамический og: изображение angular2

на нашем веб-сайте, на этом URL-адресе отображается динамическое изображение в зависимости от фактических параметров URL-адреса и строк запросов, которые мы установили.

Например, если http://oursite.com/#/show/5448sd84f8d4sf8 будет отображать /images/5448sd84f8d4sf8.png.

Делясь ссылку, кажется, как Facebook и Skype использовать Open Graph мета og:image, чтобы отобразить эскиз или снимок сайта:

<meta name="og:image" content="http://example.com/image.png"> 

Есть ли способ, чтобы установить динамический OG: изображение в зависимости от URL-адрес, как и объяснить ниже: увязка наш URL покажет

<meta name="og:image" content="http://oursite.com/images/5448sd84f8d4sf8.png"> 

и затем, как убедиться, что Facebook и Skype, например, на самом деле синтаксического анализа динамического изображения?

+0

Поскольку 4.0.0-beta.0 был введен Meta обслуживание https://github.com/angular/angular/commit/72361fb – yurzui

+2

Дело в том, что с использованием метаданных или метаданных ng2 изображение og: создается во время JS eval. Но, например, Skype, вставив ссылку, не сканирует с помощью JS. Таким образом, изображение не отображается. – BlackHoleGalaxy

+1

вот причина и решение, которое я опубликовал раньше ... http://stackoverflow.com/a/43430982/3103979 – Dan

ответ

-3

Вы можете использовать ng2-metadata, его легко реализовать.

https://www.npmjs.com/package/ng2-metadata

+0

Ссылка не ответ. Вы должны добавить пример использования. – Szer

+0

В настоящее время ng2-метаданные не работают в сочетании с искателем, кроме google. –

+0

В качестве дополнения. вот ссылка, в которой упоминается только google - синтаксический анализ js. https://github.com/fulls1z3/ng2-metadata/issues/4 –

0

Я также получил этот же вопрос. Угловое приложение браузера 2 работает на стороне клиента. Чтобы исправить эту проблему, нам нужно обработать эту сторону сервера форм, когда запрос пришел от клиента. (Простой ответ обновление с OG мета-теги)

есть несколько вариантов:

  • идут для угловых Юниверсал: немного трудно подход

  • простой ручкой это через URL переписывания (веб-сервер): это что я использовал

это мой веб-конфигурации для URL Rewrite: Я взял динамический ог имя изображения из параметра запроса (..og = [имя файла])

<rewrite> 
 
\t <outboundRules rewriteBeforeCache="true"> 
 
\t <rule name="Add tracking script" preCondition="" patternSyntax="ECMAScript"> 
 
    <match filterByTags="None" pattern="ogimagepath" /> 
 
    <conditions> 
 
    <add input="{QUERY_STRING}" pattern="[^]*og=([0-9]+)" /> 
 
    </conditions> 
 
    <action type="Rewrite" value="{C:1}" /> 
 
    </rule> 
 
</outboundRules> 
 
</rewrite>

1

Вы можете использовать Meta службу ANGULAR, чтобы изменить мета-теги:

import { Title, Meta } from '@angular/platform-browser'; 

export class MyClass { 
    constructor(
    private metaService: Meta 
) { 
    // Build and change the og:image meta 
    const baseUrl = window.location.protocol + '//' + window.location.hostname; 
    const imageUrl = baseUrl + '/path/to/image.png'; 

    this.metaService.addTag({ property: 'og:image', content: imageUrl }); 
    // or it it already exists, use this 'updateTag' 
    // this.metaService.updateTag({ property: 'og:image', content: imageUrl }); 
    } 
} 
+0

проблема заключается в том, что до загрузки javascript исходное изображение og: image на странице html останется неизменным, и поэтому Facebook, Skype или любой искатель не увидит. – BlackHoleGalaxy

+0

Это правда, я только что проверил.Так что достичь этого невозможно только через Angular? – David