Пожалуйста, помогите объединить две php функции

12
S
На сайте с 13.11.2012
Offline
72
#11

totamon, еще хотел поинтересоваться,

ранее функция получала конкретные запросы из админки, теперь получает их налету $js=file_get_contents.

В админке было:

protected function getcates($nom){ - блок

блок 1 - один запрос;

блок 2 - второй запрос;

выводил разные результаты.

Теперь в админке прописано кол-во роликов для блока (5) и название блока $nom,

если название заполнено - блок выводить, не заполнено - не выводить.

В результате на сайте стали появляться блоки с одинаковыми результатами (роликами).

Получается, что при формировании двух блоков, происходит 2 запроса к $js=file_get_contents, так? :)

И видимо в результатах двух разных обращений к $js=file_get_contents, встречаются одни и те же запросы из-за чего и отображаются блоки с одинаковыми результатами (роликами).

Можно функцию изменить таким образом, чтобы обращение к $js=file_get_contents было одно и уже из его результатов брать ключи для разных блоков?

Сам $js=file_get_contents может выводить от одного до пяти результатов...

Работа функции по одному или двум запросам может вернуть пустой результат и блоки не отобразятся, это не должно повлиять на работу следующих блоков.

Пожалуйста, помогите разобраться, если я смог донести свою мысль.

Спасибо!

Функция

protected function getcates($nom){

$part = "snippet";

$js=file_get_contents('https://glopart.ru/ads/adunit/4640/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {

//$arr1 = array('(', ')', '{', '}', ':', '-', '[', ']', '"', ' ', '/', '#');
//$arr2 = array('', '', '', '', '', '+', '', '', '', '+', '+', '');
$itemtitle=$item->title;
//$itemtitle=str_replace($arr1, $arr2, $item->title);

}
}

$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->config["key"]}&part=$part&order={$this->config[$nom.'sortingresults']}&maxResults={$this->config[$nom.'number']}&q=".urlencode($itemtitle)."&videoEmbeddable=true&videoSyndicated=true&type=video";
$data = $this->http(TRUE);
$html = "";
foreach ($data->items as $yt) {

// global $listQueryVideoHit;

if (!isset($listQueryVideoHit))
$listQueryVideoHit = 0;

elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;

$html .= "<div class='div_topic_cover topic_cover_".(++$listQueryVideoHit)." reviews'>
<a href=\"".Main::href("video/{$yt->id->videoId}")."\" class=\"a_topic_cover\">
<img src=\"/themes/images/icon/blank_275x180.png\" class=\"img_topic_cover\" alt=\"{$yt->snippet->title}\" style=\"background: url(https://img.youtube.com/vi/{$yt->id->videoId}/mqdefault.jpg;\">
<div class=\"div_topic_cover_caption\">{$yt->snippet->title}</div>
</a>
</div>";
}

if(!empty($html)){

$html = '<div class="div_index_topics_block"><a href="/search/'.urlencode($itemtitle).'" class="div_index_caption2 reviews">'.($item->title).'</a></div>'.$html.'<div id="div_index_topics_next_reviews_0" class="clear"></div> <div class="center clear" id="div_index_topics_more_reviews_0"><noindex><a href="/search/'.urlencode($itemtitle).'" rel="nofollow" class="div_index_topics_more">Еще видео</a></noindex></div>';

}


return $html;
}

Пример:

в админке заполнил поля для 5 блоков,

$js=file_get_contents отдала 5 результатов,

успешно обработалось 3, на сайте появилось 3 блока.

Если успешно 5, то и на сайте 5 блоков.

S
На сайте с 13.11.2012
Offline
72
#12

Пожалуйста, помогите исправить "уравнение"

if (!isset($listQueryVideoHit))

$listQueryVideoHit = 0;

elseif($listQueryVideoHit === 5)

$listQueryVideoHit = 0;

Сейчас идет вывод

1,2,3,4,5

1,2,3,4,5

1,2,3,4,5

1,2,3,4,5

1,2,3,4,5

Нужно

1,1,1,1,1

2,2,2,2,2

3,3,3,3,3

4,4,4,4,4

5,5,5,5,5

Попробовал методом тыка, не получилось :(

Спасибо!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий