Привязка постов к профилям авторов в соцсетях

Здравствуйте. Всех с наступившим. Прошу помощи в написании сниппета. Мне нужно для пользователя, автора текущего ресурса
$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>
У меня знакомые (которые пишут статейки) об этом беспокоятся, им хочется иметь какую-то защиту авторства, я считаю, что это правильно и хотел бы на своем сайте не ущемить права авторов. Ну вообще думаю пригодился бы такой сниппет блогам.
Виталий Барышников
05 января 2016, 09:06
modx.pro
5
1 488
0

Комментарии: 11

Василий Наумкин
05 января 2016, 12:11
+4
Следите за руками:
[[!pdoResources?
	&class=`haUserService`
	&sortby=`id`
	&tpl=`@INLINE <p>{{+provider}} - {{+profileurl}}</p>`
	&where=`{"internalKey": [[!*createdby]]}`
	&showLog=`1`
]]
Чанк можно усложнить — вынести отдельно и расписать любые условия через Fenom.
Виталий Барышников
05 января 2016, 13:20
0
Мне нужно что-то (пишу на ломанном языке с акцентом) вроде такого:
— сниппет 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 я не понял как это можно сделать

    Виталий Барышников
    05 января 2016, 14:04
    0
    Я при помощи комментария Василия использую такое решение:
    В шаблоне в 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. Если есть более красивое решение прошу поделиться.
      Егор Довгалюк
      09 января 2016, 11:25
      1
      0
      В моих руках этот код абсолютно бездушный и не выводит на экран ровным счетом ничего, подскажите, что делаю не так?

      [[!pdoResources?
      &class=`haUserService`
      &sortby=`id`
      &tpl=`@INLINE {{+provider}} — {{+profileurl}}`
      &where=`{«internalKey»: [[!*createdby]]}`
      &showLog=`1`
      ]]
        Василий Наумкин
        09 января 2016, 11:42
        0
        [[!*createdby]]
        Это создатель текущей страницы и не факт, что он заходил через соцсети.

        Если нужен определённый юзер, то нужно указать его id, числом. А если нужен текущий юзер, авторизованный в системе, то нужно использовать вот такой плейсхолдер:
        &where=`{"internalKey": [[!+modx.user.id]]}`

        Ну а для оформления кода у нас на сайте нужно использовать тег code:
        <code></code>
        Егор Довгалюк
        09 января 2016, 13:55
        0
        Замечание принято.

        Код ожил и теперь выводит на экран адреса всех пользователей которых знает. Это будет доска отзывов, и я хочу чтобы имя отправившего отзыв было обернуто в ссылку на его страницу, но не знаю за, что зацепиться. Как соотнести url странички и пользователя отправившего комментарий?

        И еще вопрос как указать ID пользователя числом, куда это нужно подставлять?
          Егор Довгалюк
          09 января 2016, 14:11
          0
          Если я правильно понимаю все дальнейшее взаимодействие происходит через
          &where=`{"JSON ключ": [[его значение]]}`
          В таком случае, вывод пользователя с id=15 будет выглядеть так
          &where=`{"id": 15}`
          ?
            Егор Довгалюк
            09 января 2016, 14:38
            0
            Спасибо Василию, все получилось, разобрался. Ура!

            [[!pdoResources?
            &class=`haUserService`
            &depth=`0`
            &sortby=`id`
            &tpl=`@INLINE {{+provider}} — {{+profileurl}}`
            &where=`{"identifier":[[+username]]}`
            &showLog=`1`
            ]]
              Василий Наумкин
              09 января 2016, 14:49
              +1
              На будущее — желательно нажимать ссылку «ответить» под комментарием, чтобы на него ответить. Тогда автору комментария придёт об этом уведомление.

              А ты пуляешь все комментарии в корень ветки. Это и выглядит не очень, и я никаких уведомлений о твоём вопросе не получал.

              P.S. Всё твои ответы перенёс повыше.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              11