Я работаю над кодом html/js, как показано ниже, принадлежащим следующему URL, в котором все содержимое В черном извлекается из XML.
<div class = "container-wrap background--gray-light-2 cf">
<div class = "section container container--mid container--margbot background--white entry-content cf">
<script src = "https://content.jwplatform.com/libraries/FZ8yNTef.js"></script>
<center>
<div id = "podcast" align = "center"></div>
</center>
<script>
var PodcastplayerInstance = jwplayer("podcast");
PodcastplayerInstance.setup({
playlist: "//www.cpac.ca/tip-podcast/jwplayer.xml",
androidhls: true,
preload: "auto",
height: 200,
width: 400,
visualplaylist: false,
stretching: "fill",
"plugins": {
"http://www.cpac.ca/tip-podcast/listy.js": {},
'viral-2': {'oncomplete': 'False', 'onpause': 'False', 'functions': 'All'}
}
});
</script>
</div><!-- .entry-content -->
</div><!-- .container-wrap -->
Постановка задачи:
Мне интересно, какой код php/javascript мне нужно добавить выше, чтобы он извлекал только 3 апреля 2019 г. или 1 апреля 2019 г. или только один контент (как показано ниже) ПРИ ЗАГРУЗКЕ СТРАНИЦЫ из вертикального прямоугольника отсюда http://www.cpac.ca/en/episode/
В данный момент 5 шт. (в черной прямоугольной коробке) извлекаются из xml.
Использовал следующую логику для извлечения определенного содержимого из xml:
$context = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = 'http://www.cpac.ca/tip-podcast/jwplayer.xml';
$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
$itemarray = $xml->xpath("/rss/channel/item[1]");
Мне интересно, как я могу интегрировать его с приведенным выше кодом html/js. Значение (1, 2, 3, 4, 5) массива элементов может быть перемешано в зависимости от требований.
Нет, я не могу контролировать, что там возвращается в xml.
Итак, вы просто хотите прочитать части XML с помощью Javascript. Вы пробовали это w3schools.com/xml/xml_parser.asp
Нет, я этого не пробовал. Я собираюсь посмотреть.
Содержимое прямоугольного черного ящика определенно взято отсюда cpac.ca/tip-подкаст/jwplayer.xml
Я играл с этим здесь codepen.io/anon/pen/mgyLYZ?editors=1001
Но вы жестко кодируете контент. Контент будет меняться каждую неделю.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать JW PLayer API плейлиста, где вы использовали бы jwplayer().getPlaylistItem() для извлечения только определенного элемента в списке воспроизведения. И в вашем случае jwplayer() это PodcastplayerInstance, и обратите внимание, что индекс основан на 0. Таким образом, вы можете добавить этот после, который вы называете PodcastplayerInstance.setup():
var item = PodcastplayerInstance.getPlaylistItem(0);
console.info( item.title, item.description, item ); // for debugging/testing purposes
И вы можете использовать jQuery (который — на момент написания — используется в страница) для обновления «вертикального прямоугольника», который (на основе текущей разметки) находится внутри div#podcast_listy_pl_panel:
var $item = jQuery( '#podcast_listy_pl_panel .listy-item' );
$item.find( '.listy-title' ).html( item.title + ' <span class = "listy-duration"></span>' );
$item.find( '.listy-description' ).html( item.description );
Чтобы получить второй, третий и т.д. элемент, достаточно изменить индекс:
var item = PodcastplayerInstance.getPlaylistItem(1); // get the second item; index = 1
У вас уже есть код, который извлекает содержимое удаленного XML-файл, поэтому вы можете просто добавить его прямо под определением $itemarray (например, после в следующей строке: $itemarray = $xml->xpath("/rss/channel/item[1]");):
$item = $itemarray ? (array) $itemarray[0] : null;
if ( $item ) :
?>
<div class = "listy-textwrapper">
<span class = "listy-title">
<?php echo $item['title']; ?>
<span class = "listy-duration"></span>
</span>
<span class = "listy-description">
<?php echo $item['description']; ?>
</span>
</div>
<?php
endif; // end $item
А чтобы получить второй предмет, просто используйте item[2] вот так:
$itemarray = $xml->xpath("/rss/channel/item[2]"); // get the second item; index = 2, not 1
Но $item здесь всегда указывает на $itemarray[0]:
$item = $itemarray ? (array) $itemarray[0] : null;
Спасибо Салли. У меня есть еще один вопрос. Это не похоже, мне интересно, можете ли вы взглянуть.
Пожалуйста. И что касается вопрос, я хотел помочь, но, глядя на страница, я думаю, проблема решена?
Нет, это не работает. Если вы заглянете на веб-сайт, то увидите, что показ в часовом поясе ET на 100 % правильный, так как они соответствуют правильным датам, но для других часовых поясов (PT, MT, CT, AT, NT) некоторые показы имеют неправильную дату.
Ты поблизости ?
Да, но я вернусь к вам позже.
Можете ли вы контролировать, что возвращается в XML здесь cpac.ca/tip-подкаст/jwplayer.xml