0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 582 Просмотров
*

urmat

  • Новичок
  • 8
  • 0 / 0
Доброго дня.

Знатоки Joomla, подскажите советом... Есть сайт "городской портал" с модулями на главной странице "авто, недвижимость, работа, объявления".  Мне нужно парсить определенные страницы (объявления, соответствующие модулям) из сайта донора, после чего выводить их у себя на сайте на вышеперечисленных модулях.
Далее, посетитель кликнув на объявление в модуле, перенаправляется на сайт донора в соответствующее объявление.

Возможно ли сделать, чтобы эти модули были автонаполняемыми? Может есть разработчики, кто мог бы это решить?

*

lexxbry

  • Живу я здесь
  • 2389
  • 65 / 8
Re: Автонаполняемые модули Joomla
« Ответ #1 : 03.12.2018, 10:16:38 »
тут надо уточнять на сайте доноре
если есть api то не проблема сделать
иначе парсить и автоматом через крон загружать в вашу бд в соответствии со скриптом
написать парсер можно
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

urmat

  • Новичок
  • 8
  • 0 / 0
Re: Автонаполняемые модули Joomla
« Ответ #2 : 03.12.2018, 12:25:48 »
Благодарю за ответ, пойду поинтересуюсь насчет api
*

pavelrer

  • Давно я тут
  • 546
  • 10 / 2
Re: Автонаполняемые модули Joomla
« Ответ #3 : 03.12.2018, 12:26:18 »
Донора в студию.
*

pavelrer

  • Давно я тут
  • 546
  • 10 / 2
Re: Автонаполняемые модули Joomla
« Ответ #4 : 03.12.2018, 12:28:04 »
Можно без api, парсить контейнер, но не всегда может получиться средствами php. AJAX допустим будет трудно.
*

pavelrer

  • Давно я тут
  • 546
  • 10 / 2
Re: Автонаполняемые модули Joomla
« Ответ #5 : 03.12.2018, 12:32:58 »
Пиример - не очень удачный но рабочий.
Код
		// Подключаем библиотеку парсера
require_once('phpQuery.php');
Код
// Страница со списком новостей.

$url_news_list = 'https://www.miele.ru/domestic/new-products-302.htm';         

// :nth-child(0)   

// Переменная CSS для парсера ссылки на страницу первой новости со страницы списка новостей.
$css_link_first_news = 'div#mainArea div#contentArea div.contentBox div.vertical-delimiter-left div.news-events-page div.ym-gl:nth-child(0) div.teaser-big div.ym-gbox a';


// Кодировка исходного сайта.
 $code_assci = 'utf-8';
// $code_assci = 'cp1251';
// $code_assci = 'windows-1251';

// ID Категории

$cat_id = '372';

// Убираем, подменяем - ! Для каждого сайта индивидуально !
 $del_cont = array( '<strong>'=>'','</strong>'=>'');
 
                                 
// ---------- Парсим список новостей
// Забираем страницу со списком новостей
$html_page = file_get_contents($url_news_list);                 
// echo $html_page;

$html_doc = phpQuery::newDocument($html_page);

//  Парсим ссылку на первую новость ! На разных сайтах может быть прописанна по разному
$link_first_news = 'https://www.miele.ru'.(pq($css_link_first_news)->attr('href'));
// echo $link_first_news;

// Освобождаем память
phpQuery::unloadDocuments($html_doc);



// md5 уникальность на основе URL первой(последний) новости           
 $md5_news_url = $cat_id.'-'.md5($link_first_news);
// echo $md5_news_url;

// Ищем в базе md5 исходя из URL новости
$db = JFactory::getDbo();
$query = "SELECT #__content.md5
FROM #__content
WHERE #__content.md5 = $db->quote('".$md5_news_url."') ORDER BY #__content.id DESC LIMIT 80";
  $db->setQuery($query);
$md5ListParser = $db->loadObjectList();
$count_md5 = count($md5ListParser);

if ($count_md5 == 0) {                        // -------- 'такой новости нет в базе';

// ---------- Парсим новость
// Забираем страницу с первой новостью
$html_page = file_get_contents($link_first_news);     

$html_doc = phpQuery::newDocument($html_page);

// Парсим title
$meta_title = pq('title')->html();
$meta_title = mb_convert_encoding($meta_title, "UTF-8", $code_assci);
// echo $meta_title;

// Парсим новость
$news = pq('section.news-single-post')->html();
$html_news = mb_convert_encoding($news, "UTF-8", $code_assci);
// echo $html_news;

// Убираем, подменяем
$html_news = strtr($html_news, $del_cont);

// Удоляем ссылки
$html_news = preg_replace('/<a[^>]+>/i', '', $html_news);
$del_end_a = array('</a>'=>'');
$html_news = strtr($html_news, $del_end_a);

// Посчитаем кол-во символов в новости, без тегов и пробелов.
$chr_temp = strip_tags($html_news);
$chr_temp = str_replace(" ","", $chr_temp);
$chr_temp = str_replace(chr(13),"", $chr_temp);
$chr_temp = str_replace(chr(10),"", $chr_temp);
$chr_temp = str_replace(chr(9),"", $chr_temp);
$chr_count = iconv_strlen($chr_temp);

// Добовляем ссылку на оригинал
$html_news = '<hr style="margin: 10px 0 10px 0;">'.'<p>Лента новостей - <a href="'.$url_news_list.'" style="padding-left: 30px;" target="_blank">'.$url_news_list.'</a></p>'.'<p>('.$chr_count.') - Символов без пробелов и тегов.</p>'.'<a href="'.$link_first_news.'" style="padding-left: 30px;" target="_blank">'.$link_first_news.'</a><input class="spoilerbutton" value="Читать еще..." onclick="this.value=this.value=='Читать еще...'?'Свернуть.':'Читать еще...';" type="button" /><div class="spoiler"><div>'.$html_news.'</div></div><hr style="margin: 10px 0 10px 0;">';



// Освобождаем память
phpQuery::unloadDocuments($html_doc);

}

Код
// ---------------------------------------------------------------------------- Пишем в базу
if ($count_md5 == 0) { // такой новости нет в базе

// Делаем alias
  function translit($str) {
    $rus = array(',', '.', '!', ':', ' ', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
    $lat = array('', '', '', '', '-', 'A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya');
    return str_replace($rus, $lat, $str);
  }
  $alias = translit($meta_title);
  $alias = mb_strtolower($alias);
 
// Узнаем автора, через категорию

  $db = JFactory::getDbo();
$query = "SELECT #__categories.created_user_id
FROM #__categories
WHERE #__categories.id = $db->quote('".$cat_id."') ORDER BY #__categories.id DESC LIMIT 1";
$db->setQuery($query);
$created_user_id = $db->loadObject();
    $created_by = $created_user_id->created_user_id;


  $metadata = '{"robots":"","author":"","rights":"","xreference":""}';
  $attribs = '{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","info_block_show_title":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}';
  $urls = '{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}';
  $images = '{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}';
  $date_parset = date('Y-m-d H:i:s');
 
$query = "INSERT INTO `#__content`(`id`, `asset_id`, `title`, `alias`, `introtext`, `fulltext`, `state`, `catid`, `created`, `created_by`, `created_by_alias`, `modified`, `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `images`, `urls`, `attribs`, `version`, `ordering`, `metakey`, `metadesc`, `access`, `hits`, `metadata`, `featured`, `language`, `xreference`, `md5`)
  VALUES (`id`, `asset_id`, '".$meta_title."', '".$alias."', '".$html_news."', `fulltext`, `state`, '".$cat_id."', '".$date_parset."', '".$created_by."',
  `created_by_alias`, '".$date_parset."', `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, '".$images."', '".$urls."', '".$attribs."',
  `version`, `ordering`, `metakey`, `metadesc`, '1', `hits`, '".$metadata."', `featured`, '*', `xreference`, '".$md5_news_url."')";

    $db->setQuery($query);
$db->query();
}
// ---------------------------------------------------------------------------- Конец Пишем в базу
*

urmat

  • Новичок
  • 8
  • 0 / 0
Re: Автонаполняемые модули Joomla
« Ответ #6 : 03.12.2018, 12:40:57 »
*

lexxbry

  • Живу я здесь
  • 2389
  • 65 / 8
Re: Автонаполняемые модули Joomla
« Ответ #7 : 03.12.2018, 12:42:25 »
так получается парсить не новости а объявы
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

urmat

  • Новичок
  • 8
  • 0 / 0
Re: Автонаполняемые модули Joomla
« Ответ #8 : 03.12.2018, 12:44:08 »
Мне нужно парсить определенные страницы (объявления, соответствующие модулям) из сайта донора, после чего выводить их у себя на сайте на вышеперечисленных модулях.

Совершенно верно
*

lexxbry

  • Живу я здесь
  • 2389
  • 65 / 8
Re: Автонаполняемые модули Joomla
« Ответ #9 : 03.12.2018, 12:49:31 »
а у вас они как выводятся?
просто материалы или какая то доска стоит?
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

urmat

  • Новичок
  • 8
  • 0 / 0
Re: Автонаполняемые модули Joomla
« Ответ #10 : 03.12.2018, 12:58:50 »
lexxbry, вот ссылка: http://oshportal.kg

Портал от: про-портал.инфо 
*

pavelrer

  • Давно я тут
  • 546
  • 10 / 2
Re: Автонаполняемые модули Joomla
« Ответ #11 : 03.12.2018, 13:05:09 »
С помощью phpQuery.php парсятся оба сайта, попробовал.
Идею дал.
Ну если не справитесь, можете написать в личку только через пару недель.
Нет времени возиться :)
Удачи.
*

urmat

  • Новичок
  • 8
  • 0 / 0
Re: Автонаполняемые модули Joomla
« Ответ #12 : 03.12.2018, 13:18:40 »
pavelrer, не могу в личку написать
*

pavelrer

  • Давно я тут
  • 546
  • 10 / 2
Re: Автонаполняемые модули Joomla
« Ответ #13 : 03.12.2018, 14:54:37 »
кинул почту в личку.
*

urmat

  • Новичок
  • 8
  • 0 / 0
Re: Автонаполняемые модули Joomla
« Ответ #14 : 07.12.2018, 07:57:24 »
pavelrer, написал на  почту, нет ответа уже 4 дня
*

pavelrer

  • Давно я тут
  • 546
  • 10 / 2
Re: Автонаполняемые модули Joomla
« Ответ #15 : 08.12.2018, 03:58:15 »
Цитировать
pavelrer, написал на  почту, нет ответа уже 4 дня
Цитировать
Ну я тут не самый лучший форумчанин, но вы в личку написать почему-то не можете, мне почта не пришла.
код на парсинг HTML статики - рабочий, причем проверен на ваших примерах!
парсер динамики без флеша  от 60-100р без обертки в компонент. еще 20-40р коллеги с форума обернут точно.
биплатны ручной - distill, мы пользуем только его но со своей плюшкой json - не продается меньше чем за 10 едениц :)
код который дал, рабочий, с записью уников в базу статей! 100% рабочий, просто кое где еще не отключили - и все норм!
Ну он чуть кривой! Но все чики-пуки там даты и еще мелочи видимо.
« Последнее редактирование: 08.12.2018, 04:02:11 от pavelrer »
*

urmat

  • Новичок
  • 8
  • 0 / 0
Re: Автонаполняемые модули Joomla
« Ответ #16 : 11.12.2018, 13:59:33 »
в личку написать не могу, ошибка: "Невозможно найти пользователя с таким e-mail."
На Яндекс почту повторно отправил письмо.

Мне надо было заранее написать, что в кодах не разбираюсь *ОХ-Х-Х* да и с панелью управления не до конца разобрался. Показал программисту ваш код, он сказал: "закажите лучше у них"

Не совсем понимаю обертки 60-100руб, distill, плюшки... Поэтому, если можете огласите примерную цену на urmatich@gmail.com

К вашим коллегам тоже обращусь-кто в теме, напишите пожалуйста
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla\Filesystem\File::delete: Failed deleting inaccessible file

Автор Gerostrat

Ответов: 4
Просмотров: 298
Последний ответ 13.12.2019, 17:30:25
от hlitov
Как ускорить ответ сервера, чтобы Joomla летала?

Автор polezniy

Ответов: 115
Просмотров: 2207
Последний ответ 24.11.2019, 01:46:32
от polezniy
Joomla 4 Когда?

Автор Delfinov

Ответов: 2
Просмотров: 175
Последний ответ 20.11.2019, 21:44:53
от Physicist
Расширение для Joomla вставка внутри текста &quot;По теме&quot;

Автор phvsfpgs

Ответов: 5
Просмотров: 210
Последний ответ 13.11.2019, 12:11:11
от beliyadm
Компоненты, модули для спортивного сайта

Автор vladimir86

Ответов: 7
Просмотров: 168
Последний ответ 11.11.2019, 22:10:50
от Kostelano