- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Две функции ниже
protected function getcates($nom){
$part = "snippet";
$js=file_get_contents('https://glopart.ru/ads/adunit/4031/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
$arr1 = array('"', ' ', '/', '#');
$arr2 = array("", '+', '-', '');
$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=$itemtitle&videoEmbeddable=true&videoSyndicated=true&type=video";
$data = $this->http(TRUE);
$html = "";
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}
protected function listQueryVideo($yt){
global $listQueryVideoHit;
if (!isset($listQueryVideoHit))
$listQueryVideoHit = 0;
elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;
return "'$itemtitle'<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>";
}
Первая парсит ролики с youtube
Вторая выводит результат на сайт
В первой функции, в url, есть параметр q=$itemtitle
Мне нужно, чтобы данный параметр выводил результат и во второй функции.
То есть, если в первой функции, методом $js=file_get_contents
$itemtitle был, скажем "Вася", то и во второй функции я должен получить "Вася".
Пробовал так сделать, объединить функции
$part = "snippet";
$js=file_get_contents('https://glopart.ru/ads/adunit/4031/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
$arr1 = array('"', ' ', '/', '#');
$arr2 = array("", '+', '-', '');
$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=$itemtitle&videoEmbeddable=true&videoSyndicated=true&type=video";
$data = $this->http(TRUE);
$html = "";
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
global $listQueryVideoHit;
if (!isset($listQueryVideoHit))
$listQueryVideoHit = 0;
elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;
return "'$itemtitle'<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>";
}
работает но выводит один ролик вместо заданных 6 :(
Пожалуйста, помогите верно объединить функции, чтобы в результатах второй работало $itemtitle
Если во вторую функцию, вновь добавить
..... $js=file_get_contents('https://glopart.ru/ads/adunit/4031/script.js');.......
работать будет но значения $itemtitle будут разными :(
Спасибо!
если вам кто-то написал эти функции почему бы не попросить их объединить? если вы сами их написали тем более странно)
но попробуйте так
totamon, огромное вам спасибо!
Работает как надо!
Уже думал, что не найду решение.
Функции я переписал сам...
Хотел еще поинтересоваться, в строке
$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=$itemtitle&videoEmbeddable=true&videoSyndicated=true&type=video";
$itemtitle можно как-то заменить на '.urlencode($itemtitle).'
или это только в echo возможно?
Спасибо!
Smirnof,
Там только кавычки не двойные.... А не одинарные, проще всегда проверить.
Segey, спасибо!
Теперь буду проверять.
В результате получил код:
protected function getcates($nom){
// global $listQueryVideoHit;
$part = "snippet";
$js=file_get_contents('https://glopart.ru/ads/adunit/4031/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
$arr1 = array('"', ' ', '/', '#');
$arr2 = array("", '+', '-', '');
$itemtitle=str_replace($arr1, $arr2, $item->title);
}
}
echo '<div class="div_index_topics_block"><a href="/search/'.urlencode($itemtitle).'" class="div_index_caption2 reviews">'.($item->title).'</a>';
$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) {
if (!isset($listQueryVideoHit))
$listQueryVideoHit = 0;
elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;
$html .= "111<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>222";
}
return $html;
}
// global $listQueryVideoHit; пришлось закомментировать, так-как, вроде из-за этого съезжали настройки
$listQueryVideoHit = 0;
elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;
как закомментировал, все встало на места.
Верно сделал?
Еще в код я добавил
echo '<div class="div_index_topics_block"><a href="/search/'.urlencode($itemtitle).'" class="div_index_caption2 reviews">'.($item->title).'</a>';
данная строка отображается (выводится) один раз.
Пожалуйста, подскажите, как вывести подобную строку после выполнения $html .= " так, чтобы она отображалась тоже один раз (оформление блока на сайте).
Часто, $html .= " возвращается пустым и на сайте остается пустой блок, как скрыть блок если $html .= " пуст?
Спасибо!
p.s. ранее блок проверял так <?php if(isset($this->config["onecatename"]) && $this->config["onecatename"]!=''):?>...<?php endif;?>
но теперь в конфиге данных нет и проверить нечего...
перед return $html;
$html = '<div class="div_index_topics_block"><a href="/search/'.urlencode($itemtitle).'" class="div_index_caption2 reviews">'.($item->title).'</a>'.$html;
}
Так сделал
if(!empty($html)){
$html = 'ооооооооооооооо'.$html;
}
return $html;
}
вывод идет сразу после </a> в первом echo '
т.е. до выполнения $html .= "
ну так первый echo совсем уберите... вам же не нужно его выводить если $html пустой, или что нужно?)
а.... щас потестирую :)
я думал это код для нижнего оформления блока, после выполнения $html .= "
---------- Добавлено 25.02.2017 в 21:09 ----------
totamon, спасибо, блок стал исчезать! :)
Пошел подробнее разбираться...
---------- Добавлено 25.02.2017 в 21:13 ----------
А как вывести код после выполнения $html .= "
это
}
if(!empty($html)){
$html = '.......код.......'.$html;
}
return $html;
}
до $html .= "
а после как вывести?
---------- Добавлено 25.02.2017 в 22:50 ----------
Разобрался! :)
totamon, спасибо!