/
githubmirror
/
amphtml
Обзор
Документация
Войти
/
githubmirror
/
amphtml
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
examples/amp-subscriptions-google/amp-subscriptions.amp.html
457 строк
16 KB
Caroline Liu
Apply lang="en" to examples/ (#34759)
10 июн 2021, 17:30
Не верифицирован
10 июн 2021, 17:30
2ee75c4
Код
Авторство
О чём код?
<!doctype html> <html ⚡ lang="en"> <head> <meta charset="utf-8"> <title>subscriptions example</title> <link rel="canonical" href="amps.html"> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript> <script async custom-element="amp-subscriptions" src="https://cdn.ampproject.org/v0/amp-subscriptions-0.1.js"></script> <script async custom-element="amp-subscriptions-google" src="https://cdn.ampproject.org/v0/amp-subscriptions-google-0.1.js"></script> <script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-latest.js"></script> <script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script> <script async src="https://cdn.ampproject.org/v0.js"></script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "NewsArticle", "isAccessibleForFree": "False", "isPartOf": { "@type": ["CreativeWork", "Product"], "name" : "Product A", "productID": "scenic-2017.appspot.com:news" } } </script> <script type="application/json" id="amp-subscriptions"> { "services": [ { "authorizationUrl": "//localhost:8000/subscription/2/entitlements", "pingbackUrl": "//localhost:8000/subscription/pingback", "actions":{ "login": "//localhost:8000/subscription/login", "subscribe": "//localhost:8000/subscription/subscribe" } }, { "serviceId": "subscribe.google.com" } ] } </script> <script cryptokeys type="application/json"> { "google.com": "ENCRYPT({\"accessRequirements\": [\"norcal.com:premium\"], \"key\":\"aBcDef781-2-4/sjfdi\"})", "local": "ENCRYPT({\"accessRequirements\": [\"whateveryouwant:12\"], \"key\":\"0noKkOifsbYqKGUyPv+1JJLygWa3PuMA8vGBvRCmkaQ=\"})" } </script> <link href='https://fonts.googleapis.com/css?family=Georgia|Open+Sans|Roboto' rel='stylesheet' type='text/css'> <style amp-custom> body { margin: 0; font-family: 'Georgia', Serif; } .brand-logo { font-family: 'Open Sans'; } .ad-container { display: flex; justify-content: center; } .content-container p { line-height: 24px; } header, .article-body { padding: 15px; } .full-bleed { margin: 0 -15px; } figure { margin: 0; } figcaption { color: #6f757a; padding: 15px 0; font-size: .9em; } .author { display: flex; align-items: center; background: #f4f4f4; padding: 0 15px; font-size: .8em; border: solid #dcdcdc; border-width: 1px 0; } .header-time { color: #a8a3ae; font-family: 'Roboto'; font-size: 12px; } .author p { margin: 5px; } .byline { font-family: 'Roboto'; display: inline-block; } .byline p { line-height: normal; } .byline .brand { color: #6f757a; } .standfirst { color: #6f757a; } .mailto { text-decoration: none; } #author-avatar { margin: 10px; border: 5px solid #fff; width: 50px; height: 50px; border-radius: 50%; } h1 { margin: 5px 0; font-weight: normal; } footer { display: flex; align-items: center; justify-content: center; height: 226px; background: #f4f4f4; } hr { margin: 0; } amp-img { background-color: #f4f4f4; } .login-section { margin: 16px; margin-top: 24px; padding: 16px; background: #ffc; } amp-subscriptions-dialog { text-align: center; padding: 5px; } #subscribebutton { display: inline-block; } </style> </head> <body> <!-- The following lines are only required if you use Propensity to Subscribe. Most events required by Propensity are automatically generated by amp-subscriptions. Publisher buy-flow events may need to be manually declared. The onSubscriptionsLandingPage trigger below is a good example of what a custom event would look like. There are some exceptions: * Past subscriptions - SwG is not aware of expired subscriptions. Propensity ideally wants to know if the user was subscribed to something in the past so a public method exists for publishers to declare a past subscription (if it is known). This information improves the final score generated by Propensity. An example is provided in the onPastSubscriber trigger below. * Subscriptions Landing Page - Only the publisher knows if their AMP page is actually a subscriptions landing page (subscriptions focused instead of news article focused). A method is provided for publishers to declare that the current page is the subscriptions landing page. An example is provided in the onSubscriptionsLandingPage trigger below. * User shown subscriptions ad - SwG is not aware of ads displayed. The publisher must declare any ad displayed to the user so Propensity is aware. An example is shown in the onAd trigger below, you will need to adjust it so the CSS selector works for your page. --> <!-- <amp-analytics type="subscriptions-propensity" data-credentials="include" credentials="include"> <script type="application/json"> { "vars": { "productId": "scenic-2017.appspot.com:news", "publicationId": "scenic-2017.appspot.com" }, "triggers": { "onSubscriptionsLandingPage": { "on": "visible", "request": "sendEvent", "vars": { "event": "subscriptions_landing_page", "data": "{\"source\": \"email marketing campaign 2019\", \"is_active\": false}" } }, "onPastSubscriber": { "on": "visible", "request": "sendSubscriptionState", "vars": { "state": "past_subscriber", "products": "'product1', 'product2'" } }, "onAd": { "on": "visible", "selector": ".fallAd", "request": "sendEvent", "vars": { "event": "ad_shown", "data": "{\"ad_name\": \"fall_ad or custom name\"}" } } } } </script> </amp-analytics> --> <amp-analytics type="googleanalytics" id="analytics2"> <script type="application/json"> { "vars": { "account": "UA-YYYY-Y" }, "triggers": { "defaultPageview": { "on": "visible", "request": "pageview", "vars": { "title": "Example Pageview" } }, "authorizationReceived": { "on": "subscriptions-entitlement-resolved", "request": "event", "vars": { "eventCategory": "amp-subscriptions", "eventAction": "subscriptions-entitlement-resolved", "eventValue": "ACCESS_READER_ID/AUTHDATA(granted)/${serviceId}" } }, "pingbackSent": { "on": "subscriptions-action-subscribe-started", "request": "event", "vars": { "eventCategory": "amp-subscriptions", "eventAction": "action-subscribe-started" } } } } </script> </amp-analytics> <header> <div class="brand-logo"> PublisherLogo - Subscriptions Demo </div> </header> <main role="main"> <article> <figure> <amp-img src="img/hero@1x.jpg" srcset="img/hero@1x.jpg 1x, img/hero@2x.jpg 2x" layout="responsive" width="360" placeholder alt="Curabitur convallis, urna quis pulvinar feugiat, purus diam posuere turpis, sit amet tincidunt purus justo et mi." height="116"> </amp-img> </figure> <div class="content-container"> <header> <h1 itemprop="headline">Lorem Ipsum</h1> <time class="header-time" itemprop="datePublished" datetime="2015-09-14 13:00">September 14, 2015</time> <p class="standfirst"> Fusce pretium tempor justo, vitae consequat dolor maximus eget. </p> </header> <div class="author"> <amp-img src="img/sample.jpg" id="author-avatar" placeholder height="50" width="50"> </amp-img> <div class="byline"> <p> by <span itemscope itemtype="http://schema.org/Person" itemprop="author"><b>Lorem Ipsum</b> <a class="mailto" href="mailto:lorem.ipsum@example.com"> lorem.ipsum@</a></span> </p> <p class="brand">PublisherName News Reporter<p> </div> </div> <div subscriptions-action="login" subscriptions-display="NOT loggedIn">Login</div> <section subscriptions-section="content-not-granted"> Login or subscribe to read more. </section> <br/> ↓[encrypted content below]↓ <h2> <whateverTag subscriptions-section="content"> <!-- inside must be text. otherwise it will fail validation --> <script type="application/octet-stream" encrypted="aes-gcm" encryption-nonce="random#"> PTzfydqid9+FitGB3xeQEG98u+zj6/wpZ/KMeZewGldw/pp2MCvwstHGCtqjIN5ROi61OmZkQDW9c2ezuu1WTXDANoE5UY5ED51lftywdTYmLk+rvtRL/fUVaPIOaiP/wkm+I2Ssw99cOnv4hFphOuz9Db2/RisQXVT/7yiaiHDEE5aJlxuAYqyjMnDweGhKjuXpgAOpbOOEI78t91AKpTbsQg9bxXafruB46+3jI6COfzI3e7griJ5LoQSPG4JEn7bw8jnD67djb9J3c6hak++vbSvqBxewNpSV+v9HU+w= </script> </whateverTag> </h2> ↑[encrypted content above]↑ <br/> <div subscriptions-section="content" class="article-body" itemprop="articleBody"> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ullamcorper turpis vel commodo scelerisque. Phasellus luctus nunc ut elit cursus, et imperdiet diam vehicula. Duis et nisi sed urna blandit bibendum et sit amet erat. Suspendisse potenti. Curabitur consequat volutpat arcu nec elementum. Etiam a turpis ac libero varius condimentum. Maecenas sollicitudin felis aliquam tortor vulputate, ac posuere velit semper. </p> <p> Fusce pretium tempor justo, vitae consequat dolor maximus eget. Aliquam iaculis tincidunt quam sed maximus. Suspendisse faucibus ornare sodales. Nullam id dolor vitae arcu consequat ornare a et lectus. Sed tempus eget enim eget lobortis. Mauris sem est, accumsan sed tincidunt ut, sagittis vel arcu. Nullam in libero nisi. </p> <p> Sed pharetra semper fringilla. Nulla fringilla, neque eget varius suscipit, mi turpis congue odio, quis dignissim nisi nulla at erat. Duis non nibh vel erat vehicula hendrerit eget vel velit. Donec congue augue magna, nec eleifend dui porttitor sed. Cras orci quam, dignissim nec elementum ac, bibendum et purus. Ut elementum mi eget felis ultrices tempus. Maecenas nec sodales ex. Phasellus ultrices, purus non egestas ullamcorper, felis lorem ultrices nibh, in tristique mauris justo sed ante. Nunc commodo purus feugiat metus bibendum consequat. Duis finibus urna ut ligula auctor, sed vehicula ex aliquam. Sed sed augue auctor, porta turpis ultrices, cursus diam. In venenatis aliquet porta. Sed volutpat fermentum quam, ac molestie nulla porttitor ac. Donec porta risus ut enim pellentesque, id placerat elit ornare. </p> <p> Curabitur convallis, urna quis pulvinar feugiat, purus diam posuere turpis, sit amet tincidunt purus justo et mi. Donec sapien urna, aliquam ut lacinia quis, varius vitae ex. Maecenas efficitur iaculis lorem, at imperdiet orci viverra in. Nullam eu erat eu metus ultrices viverra a sit amet leo. Pellentesque est felis, pulvinar mollis sollicitudin et, suscipit eget massa. Nunc bibendum non nunc et consequat. Quisque auctor est vel leo faucibus, non faucibus magna ultricies. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum tortor lacus, bibendum et enim eu, vehicula placerat erat. Nullam gravida rhoncus accumsan. Integer suscipit iaculis elit nec mollis. Vestibulum eget arcu nec lectus finibus rutrum vel sed orci. </p> <figure> <amp-img class="full-bleed" placeholder src="img/sea@1x.jpg" srcset="img/sea@1x.jpg 1x, img/sea@2x.jpg 2x" layout="responsive" width="360" alt="Fusce pretium tempor justo, vitae consequat dolor maximus eget." height="216"> </amp-img> <figcaption> Fusce pretium tempor justo, vitae consequat dolor maximus eget. </figcaption> </figure> <hr> <p> Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla et viverra turpis. Fusce viverra enim eget elit blandit, in finibus enim blandit. Integer fermentum eleifend felis non posuere. In vulputate et metus at aliquam. Praesent a varius est. Quisque et tincidunt nisi. Nam porta urna at turpis lacinia, sit amet mattis eros elementum. Etiam vel mauris mattis, dignissim tortor in, pulvinar arcu. In molestie sem elit, tincidunt venenatis tortor aliquet sodales. Ut elementum velit fermentum felis volutpat sodales in non libero. Aliquam erat volutpat. </p> <p> Morbi at velit vitae eros congue congue venenatis non dui. Sed lacus sem, feugiat sed elementum sed, maximus sed lacus. Integer accumsan magna in sagittis pharetra. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse ac nisl efficitur ligula aliquam lacinia eu in magna. Vestibulum non felis odio. Ut consectetur venenatis felis aliquet maximus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> </div> </div> </article> </main> <footer> <div class="brand-logo">PublisherLogo</div> </footer> <template type="amp-mustache" subscriptions-dialog subscriptions-display="loggedIn"> Dialog for logged in users </template> <template type="amp-mustache" subscriptions-dialog subscriptions-display="NOT loggedIn"> <div>Dialog for non logged in users<div> <div id="subscribebutton" subscriptions-display="NOT loggedIn" subscriptions-action="subscribe" subscriptions-service="subscribe.google.com" subscriptions-decorate>Login</div> <div subscriptions-display="NOT subscribed">btw u are not subscribed</div> </template> </body> </html>