[EVO] Социальный замок на контент
Заплати лайком уже известно что такое на примерах под Рево и еще каких то, но уже не очень хороших цмсках 8-). Суть, в кратце состоит в том, что продать тяжело что- то не очень оцениваемое в денежных знаках, а вот за ссылку почему бы и не поделиться аля «секретом» если юзер нажмет Like или что-то из это же серии социальных кнопок и сылка попадет к юзеру на стену.
До сих пор на модэкс эво такого не было по-моему и переделать тут написано как было.
Поэтому без особых сложностей было сделано:
-параметры настроек сниппета выводящего кнопки и обрабатывающего call-back'и от соц.сетей перенесены из modPropertySet просто в переменные с которыми снип дергался в нужном месте. т.е. из [[SocialLocker? &options=`ИМЯНАБОРАПАРАМЕТРОВ` &tpl=`lockshare` &unlockUrl=`103` &like=`fb,vk,twit,subscribe`]] убрано &options=`ИМЯНАБОРАПАРАМЕТРОВ`
— плейсхолдеры переписаны в стиле эво, например с [[+twitlike]] на [+twitlike+]
-в эво я не нашел как сделать чтоб страница выводила ответ типом json и из за этого сервисная страница в этом случае выдавала текст, что потребовало часть скрипта поменять…
— что то еще по мелочи, как например, в вызове не из темплейта а из чанка, по -моему на срабатывали все входящие параметры, но это уже на каждом сайте отдельно и конкретно в зависимости от настроек того же кеша и места где предполагается дергать снип. Меньше проблем если снип в темплейте по-моему…
Итак в нужном месте для кнопок,
где [*id*] и [*pagetitle*] это то что попадать на соц сеть будет.
Затем, unlockUrl это айди страницы где отзыв с соц.сетей обрабатывается снипетом с вызовом
Далее, SocialLocker, сам снипет:
pastie.org/8434715
в нем 4 параметра хардкодом: $subscribeGroup='5289142';
$ttwitUser='modxdeveloper'; $vkApiid='3922874' их поменяйте на свои айдишки :-)
а вот 4-й, rightSide это чанк в котором будет хранится ваша секретная инфа, которой будет делиться локер если успешно ссылочка запостилась.
Ну и напоследок, сам темплейт локера и темплейты кнопок:
lockshare
pastie.org/8434718
в нем тут 2 жс файлика:
lockershare.js
pastie.org/8434724
и unlock.js
pastie.org/8434725
fb это чанк fblike и остальные по этому же принципу названы: имя кнопки + like
twit
subscribe
vk
plus1
вот так, может и пригодится. *постараюсь отвечать на вопросы или коменты на баги.
До сих пор на модэкс эво такого не было по-моему и переделать тут написано как было.
Поэтому без особых сложностей было сделано:
-параметры настроек сниппета выводящего кнопки и обрабатывающего call-back'и от соц.сетей перенесены из modPropertySet просто в переменные с которыми снип дергался в нужном месте. т.е. из [[SocialLocker? &options=`ИМЯНАБОРАПАРАМЕТРОВ` &tpl=`lockshare` &unlockUrl=`103` &like=`fb,vk,twit,subscribe`]] убрано &options=`ИМЯНАБОРАПАРАМЕТРОВ`
— плейсхолдеры переписаны в стиле эво, например с [[+twitlike]] на [+twitlike+]
-в эво я не нашел как сделать чтоб страница выводила ответ типом json и из за этого сервисная страница в этом случае выдавала текст, что потребовало часть скрипта поменять…
— что то еще по мелочи, как например, в вызове не из темплейта а из чанка, по -моему на срабатывали все входящие параметры, но это уже на каждом сайте отдельно и конкретно в зависимости от настроек того же кеша и места где предполагается дергать снип. Меньше проблем если снип в темплейте по-моему…
Итак в нужном месте для кнопок,
[[SocialLocker?
&optionsTpl=`response`
&tpl=`lockshare`
&unlockUrl=`192`
&like=`fb,twit,subscribe,vk,plus1`
&id=`[*id*]`
&desc=`[*pagetitle*]`
]]
где [*id*] и [*pagetitle*] это то что попадать на соц сеть будет.
Затем, unlockUrl это айди страницы где отзыв с соц.сетей обрабатывается снипетом с вызовом
[[!SocialLocker? &mode=`response`]]
Далее, SocialLocker, сам снипет:
pastie.org/8434715
в нем 4 параметра хардкодом: $subscribeGroup='5289142';
$ttwitUser='modxdeveloper'; $vkApiid='3922874' их поменяйте на свои айдишки :-)
а вот 4-й, rightSide это чанк в котором будет хранится ваша секретная инфа, которой будет делиться локер если успешно ссылочка запостилась.
Ну и напоследок, сам темплейт локера и темплейты кнопок:
lockshare
pastie.org/8434718
в нем тут 2 жс файлика:
lockershare.js
pastie.org/8434724
и unlock.js
pastie.org/8434725
fb это чанк fblike и остальные по этому же принципу названы: имя кнопки + like
<div class="sl_facebook_like">
<div class="fb-like" data-href="[+SharePage+]" data-send="false" data-width="90" data-show-faces="false" data-layout="button_count"></div>
</div>
<script>
function facebook_init() {
if ('undefined' === typeof(FB)) {
setTimeout(facebook_init, 500);
} else {
FB.Event.subscribe('edge.create', function(response) { sl_unlock('facebook', 'like'); });
}
}
</script>
twit
<div class="sl_twitter_tweet">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="[+SharePage+]" data-counturl="[+SharePage+]" data-text="[+SharePageDesc+]" data-count="none" data-related="[+ttwit.user+]" data-lang="ru">tweet</a>
</div>
<script>
function twitter_init() {
if (0 == $j('.sl_twitter_tweet iframe').length) {
twttr.widgets.load();
twitter_timeout_id = setTimeout(twitter_init, 4000);
}
}
</script>
subscribe
<div id="sl_vkontakte_subscribe" class="sl_vkontakte_subscribe"></div>
vk
<div id="sl_vkontakte_like" class="sl_vkontakte_like"></div>
<script>
function vkontakte_init() {
if ('undefined' == typeof(VK) || 'undefined' === typeof(VK.init)) {
setTimeout('vkontakte_init', 500);
} else {
if (null == VK._apiId) {
VK.init({apiId: [+vk.apiid+], onlyWidgets: true});
}
VK.Widgets.Like("sl_vkontakte_like", {type: 'button', height: 20, pageUrl: '[+SharePage+]', verb: 1});
VK.Observer.subscribe('widgets.like.liked', function() { sl_unlock('vkontakte', 'like'); });
VK.Widgets.Subscribe("sl_vkontakte_subscribe", {mode: 2, soft: 0}, [+subscribe.group+]);
VK.Observer.subscribe('widgets.subscribed', function() { sl_unlock('vkontakte', 'subscribe'); });
}
}
</script>
plus1
<script type="text/javascript" src="http://apis.google.com/js/plusone.js">
{"lang": "ru"}
</script>
<div class="sl_google_plus1"><g:plusone callback="sl_unlock" size="medium" href="[+SharePage+]"></g:plusone></div>
вот так, может и пригодится. *постараюсь отвечать на вопросы или коменты на баги.