Иконка ресурса

Использование PHP в виджетах

Ну раз в личку написал и не хотел тут задавать вопросы, то опишу и тут решение его проблемы f1nik25, а так же с переписанным его кодом:
Код:
<?php

namespace MyWidgetTest;

class MyWidget
{
    public static function renderWidget(\XF\Widget\AbstractWidget $abstractWidget)
    {
        $owner_id = '';
        $album_id = '';
        $token = '';
        $count = 100;
        $version = 5.31;

        $params = [
            'owner_id' => $owner_id,
            'album_id' => $album_id,
            'count' => $count,
            'v' => $version,
            'access_token' => $token
        ];

        $response = \XF::app()->http()->client()->get('https://api.vk.com/method/photos.get?&' . http_build_query($params));
        $responseJson = \GuzzleHttp\json_decode($response->getBody()->getContents(), true);

        return $abstractWidget->renderer('my_widget', [
            'my_result' => $responseJson,
        ]);
    }
}
И сам код шаблона для вывода фото из альбома:
Код:
<xf:foreach loop="$my_result.response.items" value="$result">
        <div>
            <img src={{ $result.photo_604 }} />
        </div>
    </xf:foreach>
 
Matew, но тут не указана поддержка 2.1. Поэтому и такой вариант использования должен быть.
 
Как правильно использовать этот код согласно мануалу?
PHP:
<?
$timeout = 2; // таймаут соединения с сервером в секундах
$ul="https://adservice.test/as.php?id=777";
if ($ch = @curl_init())
{
curl_setopt($ch, CURLOPT_URL, $ul);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_exec($ch);
curl_close($ch);
}
?>
Что писать вместо 'param_1' => $param1 и 'param_2' => $param2?
 
Matew, код, выданный сетью указан. Должны отображаться рекламные ссылки в столбик.
 
Matew, код, выданный сетью указан. Должны отображаться рекламные ссылки в столбик.
Ну это классно. Вот только по прежнему откуда мы знаем что там за данные и в каком формате. Я думаю вам в поиск исполнителя, к поддержке движка данный вопрос абсолютно не относится
Да и сайт какой-то левый
 

Вложения

  • Screenshot_20200909-163928.png
    Screenshot_20200909-163928.png
    87.7 KB · Просмотры: 15
Matew, я ссылку заменил чтобы не сочли за рекламу.
 
Ну это классно. Вот только по прежнему откуда мы знаем что там за данные и в каком формате. Я думаю вам в поиск исполнителя, к поддержке движка данный вопрос абсолютно не относится
Да и сайт какой-то левый
рекламные ссылки в столбик
Просто обычные ссылки в формате <ahref="xxx.xxxx">wwwww</a>
PHP:
<?php
$timeout = 2; // таймаут соединения с сервером в секундах
$ul="https://miglinks.com/glnk.php?id=674";
if ($ch = @curl_init())
{
curl_setopt($ch, CURLOPT_URL, $ul);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_exec($ch);
curl_close($ch);
}
?>
 
Последнее редактирование:
dimka1510, изложите конкретно, что вам надо.
И в каком виде.
 
25517, есть код рекламной сети, он должен выводить блок текстовых ссылок. Всё. Просто обычные ссылки в виде <a href="xxx.xxxx">wwwww</a>

Уже сам разобрался. Всем спасибо за уделённое мне время
 
Последнее редактирование:
Теперь не могу сделать чтобы этот виджет отображался в конкретном блоке, а не над контентом, под шапкой. То есть то что показывает виджет отображается отдельно от самого блока, а блок только имеет позицию согдасно позиции в настройках рекламы в админке и оформление согласно коду:
HTML:
<div class="block-container">
                <h3 class="block-minorHeader"><a href="#">Реклама</a></h3>
                <ul class="block-body">
                    <li class="block-row">
                        <div class="contentRow">
                            <xf:widget key="miglinks_ads" /> //здесь ключ виджета
                        </div>
                    </li>
                </ul>
</div>
А то что должно быть внутри этого блока отображается под шапкой, без оформления. Как содержимое указанного в коде виджета привязать к блоку? Или как добавить этот html в обработчик (во вложении)? Для наглядности скриншот.
 

Вложения

  • MiglinksAds.zip
    606 байт · Просмотры: 6
  • screenshot-2020.09.09-19_55_47.png
    screenshot-2020.09.09-19_55_47.png
    49.6 KB · Просмотры: 11
Последнее редактирование:
Как вариант. Заодно причесал немного код.
PHP:
<?php

class MiglinksAds
{
    public static function renderWidget(\XF\Widget\AbstractWidget $abstractWidget)
    {
        $adverts = '';
        try
        {
            $requestUrl = 'https://miglinks.com/glnk.php?id=674';
            $adverts = $abstractWidget->app()->http()->client()
                ->get($requestUrl)->getBody()->getContents();
        }
        catch (\Exception $e)
        {
            // Произошла ошибка загрузки содержимого ссылки.
            // Раскомментировать строку ниже, если не нужно выводить пустой блок при ошибке:
            // return '';
        }

        return $abstractWidget->renderer('miglinks_ads', [
            'ads' => $adverts
        ]);
    }
}
Понадобится создать шаблон с содержимым по типу:
HTML:
<div class="block"{{ widget_data($widget) }}>
    <div class="block-container">
        <h3 class="block-header">
            Реклама
        </h3>

        <div class="block-body">
            {$ads|raw}
        </div>
    </div>
</div>
 
Последнее редактирование:
CrazyHackGUT, как этот шаблон вывести через настройки рекламы?

С твоим кодом реклама не отображается, и в кабинете пишет что код не установлен.

Система проверила новый код - пишет что код есть, но реклама не выводится. Отображается только шапка блока с надписью "Реклама"
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу