Парсер для заповнення joomla сайту або програмне додавання статті в joomla через php - все про web

Продовжуючи тему парсеров. Одна з найпоширеніших завдань, які я постійно зустрічаю - заповнити Joomla сайт на основі іншого сайту. Повний переїзд, зазвичай з більш старої версії Joomla, але можливо і з іншого CMS, не важливо.

Зазвичай, простіше в ручну скопіювати всі тексти з сайту, ніж писати окремий граббер під цю справу. Коли ж справа стосується кількох сотень статей, мій внутрішній прагматик забороняє мені працювати руками і в справу вступає мозок.

В ідеалі парсер повинен з'їдати лише одну сторінку сайту на вході і обходити всі знайдені сторінки сам. У статті Як написати універсальний парсер сайтів за 1 годину я вже розповідав, як це зробити. Коли справа стосується переїзду на Joomla, то необхідно точно відтворити структуру сайту донора, тому трохи спростимо задачу, і будемо аналізувати довільні лише заданий список посилань, який буде певним чином прив'язаний до конкретного розділу з сайту джерела. А цей самий розділ на нашому сайті, створимо руками.

Писати будемо на php. Для початку нам потрібно функція парсер, яка буде завантажувати сторінку сайту.

Тут нічого нового:

Далі, нам потрібно створити стандартний матеріал Joomla

Це копіпаст коду з інтернету. Як бачите якщо є помилка, вона ніяк не обробляється, а просто виводиться на екран. Якщо хочете, обробіть помилки самі.

Функція повертає ідентифікатор створеного матеріалу. Він буде потрібно нам у такій функції.

І остання функція, яка нам буде потрібно - це функція створення елемента пункту меню:

Це теж, практично, копіпаст з інтернетів.

Розберемо, що ж тут відбувається. Сам файл скрипта підключає стандартну точку входу Joomla, і навіть инициализирует новий додаток. Після цього ви можете використовувати всі методи і класи Joomla, також як би ви це робили в компонентах або плагінах.

Далі по циклу, перебираємо масив $ links і отримуємо вміст заданої посилання, за допомогою функції get. Далі йде незрозумілий шматок коду. Він специфічний для даного сайту, але буде іншим для вас. Назва статті я беру просто з тега title. У більшості сайтів, в цьому тезі буде всяке сміття - назва статті - назва сайту - ключові слова. Тому цей момент вам треба обробити самостійно.

Основний контент сайту, був укладений в тег article і на 29-му рядку, я його звідти вилучаю.

Можливо Ваш сайт донор, виявиться більш складним і я б порекоменлдовал розбирати такі дані за допомогою бібліотеки SimpleHTMLDom

Схожі статті