Описание элемента Ebay уничтожить структуру моей страницы - PullRequest
0 голосов
/ 06 ноября 2019

Я использую ebay api для извлечения элементов на мой сайт с помощью callname=GetSingleItem, и все в порядке.

Пожалуйста, ознакомьтесь с фрагментами кода ниже, которые я использовал для получения подробной информации оitem

    $res = $api -> get ( "http://open.api.ebay.com/shopping?"
                        . "callname=GetSingleItem&"
                        . 
   "IncludeSelector=Description,ItemSpecifics,Details&"
                        . "ItemID=" . $listing -> platform_key . '&'
                        . "appid=$ebayAppId&"
                        . "version=".$version ) ;

                    $xml = simplexml_load_string ( $res -> getBody () ) ;
                    $json = json_encode ( $xml ) ;
                    $jsonResult = json_decode ( $json , TRUE ) ;

Затем я получаю его детали через сегмент кода ниже

     $ebayItemArray[ "description" ] = ( $jsonResult[ "Item" ][ "Description" ] 
   )

Обратите внимание, что вышеупомянутые сегменты кода являются просто примерами кодов

Поэтому я использую это описание в следующем фрагменте кода в Laravel blade.php

      <div class=container text-left">
                            {!!$ebayItemArray[ "description" ]!!}
                        </div>

Так что это хорошо работает без каких-либо ошибок для некоторых продуктов, но для некоторых продуктов, когда я пытаюсь отобразить описание, это разрушает мой макет стилей, как показано ниже

snip 01 snip 02

КОГДА Я УДАЛЯЮ ВАРИАЛЬНОЕ ОПИСАНИЕ ИЗ ФАЙЛА ЛЕЗВОДА, ЗАТЕМРАБОТАЙТЕ КАЧЕСТВЕННО, КАК ОНИ ДОЛЖНЫ БЫТЬ

1 Ответ

1 голос
/ 06 ноября 2019

Согласно документации:

Если используется значение Description, возвращается полное описание со всей разметкой HTML, XML или CSS, использованной продавцом (если таковая имеется) в листинге. Чтобы просмотреть только фактический текст описания листинга (без тегов разметки), вместо этого следует использовать значение TextDescription.

Так что, вероятно, дополнительный CSS разрушает структуру вашей страницы.

У вас есть опции

  1. преобразовать значение описания в обычный текст
// Not tested...
$description = $jsonResult[ "Item" ][ "Description" ];
$doc = new DOMDocument();
$doc->loadHTML($description); // Load as HTML
removeElementsByTagName('style', $doc); // Remove the <style> Tag
$description = strip_tags($doc->textContent); // To plain Text
$ebayItemArray[ "description" ] = $description;
использование IncludeSelector=TextDescription
$res = $api -> get ( "http://open.api.ebay.com/shopping?"
                        . "callname=GetSingleItem&"
                        . 
   "IncludeSelector=TextDescription,ItemSpecifics,Details&"
                        . "ItemID=" . $listing -> platform_key . '&'
                        . "appid=$ebayAppId&"
                        . "version=".$version ) ;
используйте iFrame, где вы вставляете описание
<iframe 
  title="Description" 
  srcdoc="{!!$ebayItemArray[ "description" ]!!}"
  width="300px" height="300px"
></iframe>

В iFrame вам также необходимо автоматически изменить высоту iFrame.

...