Dynamiczna edycja meta og:image

0

Cześć, sprawa jest taka, że chciałbym dynamicznie ustawiać sobie og:image żeby był różny dla różnych podstron mojej strony. Robię to tak:

 $(document).ready(function () {
                setTimeout(function () {
                    var linkPart = $("#imgMY").first().attr("src");
                    if (linkPart !== undefined) {
                        if (linkPart.startsWith("htt")) {
                            $('meta[property="og:image"]').attr('content', linkPart);
//                            console.log($('meta[property="og:image"]').attr("content"));
                        } else {
                            linkPart = "http://" + linkPart;
                            $('meta[property="og:image"]').attr('content', linkPart);
//                            console.log($('meta[property="og:image"]').attr("content"));

                        }
                    }
                }, 500);
            });

console.log pokazuje dobrą wartość ale gdy zaglądam do źródła strony jest stara, wklejam link na facebooka i nie zaciąga tego co powinno - wie ktoś jak to zrobić? Bo widzę, że np strony z wiadomościami mają tak że link do konkretnego newsa produkuje na fb zdjęcie z tego newsa więc jakoś się to zrobić da...

0

Musisz to generować po stronie serwera :P

0

co to za różnica gdzie to wygeneruje skoro i tak nie mogę wywołać javascriptu np tak:
<meta property="og:image" content="getLink();" />
więc tak czy inaczej pozostało by mi podmienianie tego za pomocą js

1

No ale po kija miałbyś tam wywoływać funkcję JS - już po stronie backendu powinieneś wstawić docelowy tekst.

0

Tak jak koledzy piszą powyżej - zrób to po stronie php. Pewnie w którymś miejscu wrzucasz link do elementu o id imgMY więc ten sam link wrzuć w meta tag.

Abstrahując od tego, że js w ogóle Ci nie jest w tym wypadku potrzebny...

var linkPart = $("#imgMY").first().attr("src");

dlaczego używasz first()? masz kilka selektorów o tym samym id?

0

W skrócie - masz to zrobić tak, żeby nie używać do tego javascriptu. Wtedy będzie działać.

Pamiętaj też, że FB cachuje sobie te informacje, więc jak będziesz chciał potem przetestować to dopisuj sobie do adresu śmieciowe parametry, np. zamiast http://strona.pl/ użyj http://strona.pl?test=1

0

Niestety nie wiem jak mam to zrobić. Z poziomu angulara nie mogę się odwołać za pomocą {{ }} do meta tagów. Można jakoś edytować metaTag "w locie" z serwera?

0

Możesz się odwołać w meta tagach do angulara z użyciem {{}}, ale nic Ci to nie da, bo facebook'a nic nie obchodzi Twój Javascript. Cały Twój wspaniały kod w ogóle nie zostanie uruchomiony.

Jeśli korzystasz z jakiegokolwiek serwera (Nodejs, PHP, Ruby, Python...) do oddawania Twojego pliku index.html to TAK, możesz go zmodyfikować i wstawić tam dowolne meta tagi. Jeśli masz po prostu statyczną stronę (odwołujesz się bezpośrednio do pliku index.html) to po prostu zmodyfikuj ten index.html wstawiając odpowiednie meta tagi.

Jak chcesz sprawdzić jak facebook zobaczy Twoją stronę to włącz sobie "Wyświetl źródło strony", w przypadku angulara jest to zupełnie co innego niż to co widzisz w narzędziach deweloperskich.

1 użytkowników online, w tym zalogowanych: 0, gości: 1