Привязка постов к профилям авторов в соцсетях
Здравствуйте. Всех с наступившим. Прошу помощи в написании сниппета. Мне нужно для пользователя, автора текущего ресурса
Насколько мне известно самый популярный механизм — привязка к профилю Google+ и Twitter.
Нужно, чтобы каждый ресурс принадлежал (был привязан) его автору, вот так:
$resource->get('createdby')
получить из таблицы modx_ha_user_services (таблица с данными пользователя HybridAuth) массив в виде (а лучше конечно сниппет, ибо мне это будет стоить минимум полмесяца разбирательства):"Провайдер_1" => "Ссылка на профиль пользователя провайдера_1"
"Провайдер_2" => "Ссылка на профиль пользователя провайдера_2"
Я хочу, чтобы публикации (тикеты) пользователей привязывались к их профилям в соцсетях. Для этого необходимо в HTML подставлять ссылки на профили пользователей.Насколько мне известно самый популярный механизм — привязка к профилю Google+ и Twitter.
<head>
...
<link rel="author" href="https://plus.google.com/user_id">
<meta property="twitter:creator" content="@user" />
...
</head>
У меня знакомые (которые пишут статейки) об этом беспокоятся, им хочется иметь какую-то защиту авторства, я считаю, что это правильно и хотел бы на своем сайте не ущемить права авторов. Ну вообще думаю пригодился бы такой сниппет блогам.Комментарии: 11
Следите за руками:
[[!pdoResources?
&class=`haUserService`
&sortby=`id`
&tpl=`@INLINE <p>{{+provider}} - {{+profileurl}}</p>`
&where=`{"internalKey": [[!*createdby]]}`
&showLog=`1`
]]
Чанк можно усложнить — вынести отдельно и расписать любые условия через Fenom.
Клёво. Я конечно тут ничего не понял пока, но из опыта — вы плохого не советуете. Спасибо.
а {if} в INLINE-чанке должен работать?
Мне нужно что-то (пишу на ломанном языке с акцентом) вроде такого:
— сниппет metaCopyright
— сниппет metaCopyright
<?php
автор = $resource->get('createdby');
$props = array();
if (isset(профиль_автора_вGoogle+))
{
$props[googleProfile] = профиль_автора_вGoogle+;
}
if (isset(профиль_автора_вTwitter))
{
$props[twitterProfile] = профиль_автора_вTwitter;
}
return $modx->getChunk('metaCopyChunk', $props);
— Чанк metaCopyChunk:<link rel="author" href="[[+googleProfile]]">
<meta property="twitter:creator" content="[[+twitterProfile]]" />
— Вызов в шаблоне:<head>
...
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<meta charset="UTF-8"/>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
[[metaCopyright]]
...
</head>
Не знаю понятно ли изложил. Через pdoResources я не понял как это можно сделать
Я при помощи комментария Василия использую такое решение:
В шаблоне в head вызываю:
В шаблоне в head вызываю:
[[!pdoResources?&class=`haUserService`&sortby=`id`&tpl=`metaCopyright`&where=`{"internalKey": [[!*createdby]]}`]]
Чанк metaCopyright:{if $provider == 'Google'}<link rel="author" href="https://plus.google.com/[[+profileurl]]">{/if}
{if $provider == 'Twitter'}<meta property="twitter:creator" content="@[[+profileurl:stripString=`http://twitter.com/`]]" />{/if}
С помощью +profileurl:stripString я вырезаю адрес с http //twitter.com/, т.к. в этом теге должна быть строка вида @username. Если есть более красивое решение прошу поделиться.
В моих руках этот код абсолютно бездушный и не выводит на экран ровным счетом ничего, подскажите, что делаю не так?
[[!pdoResources?
&class=`haUserService`
&sortby=`id`
&tpl=`@INLINE {{+provider}} — {{+profileurl}}`
&where=`{«internalKey»: [[!*createdby]]}`
&showLog=`1`
]]
[[!pdoResources?
&class=`haUserService`
&sortby=`id`
&tpl=`@INLINE {{+provider}} — {{+profileurl}}`
&where=`{«internalKey»: [[!*createdby]]}`
&showLog=`1`
]]
[[!*createdby]]
Это создатель текущей страницы и не факт, что он заходил через соцсети.Если нужен определённый юзер, то нужно указать его id, числом. А если нужен текущий юзер, авторизованный в системе, то нужно использовать вот такой плейсхолдер:
&where=`{"internalKey": [[!+modx.user.id]]}`
Ну а для оформления кода у нас на сайте нужно использовать тег code:
<code></code>
Замечание принято.
Код ожил и теперь выводит на экран адреса всех пользователей которых знает. Это будет доска отзывов, и я хочу чтобы имя отправившего отзыв было обернуто в ссылку на его страницу, но не знаю за, что зацепиться. Как соотнести url странички и пользователя отправившего комментарий?
И еще вопрос как указать ID пользователя числом, куда это нужно подставлять?
Код ожил и теперь выводит на экран адреса всех пользователей которых знает. Это будет доска отзывов, и я хочу чтобы имя отправившего отзыв было обернуто в ссылку на его страницу, но не знаю за, что зацепиться. Как соотнести url странички и пользователя отправившего комментарий?
И еще вопрос как указать ID пользователя числом, куда это нужно подставлять?
Если я правильно понимаю все дальнейшее взаимодействие происходит через
&where=`{"JSON ключ": [[его значение]]}`
В таком случае, вывод пользователя с id=15 будет выглядеть так &where=`{"id": 15}`
?
Спасибо Василию, все получилось, разобрался. Ура!
[[!pdoResources?
&class=`haUserService`
&depth=`0`
&sortby=`id`
&tpl=`@INLINE {{+provider}} — {{+profileurl}}`
&where=`{"identifier":[[+username]]}`
&showLog=`1`
]]
На будущее — желательно нажимать ссылку «ответить» под комментарием, чтобы на него ответить. Тогда автору комментария придёт об этом уведомление.
А ты пуляешь все комментарии в корень ветки. Это и выглядит не очень, и я никаких уведомлений о твоём вопросе не получал.
P.S. Всё твои ответы перенёс повыше.
А ты пуляешь все комментарии в корень ветки. Это и выглядит не очень, и я никаких уведомлений о твоём вопросе не получал.
P.S. Всё твои ответы перенёс повыше.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.