Как извлечь список статей компонента K2 в Joomla из базы данных - АлтунинВВ.Блог - всё об IT-технологиях!
Воскресенье, 22 ноября 2020 17:34

Как извлечь список статей компонента K2 в Joomla из базы данных

Россия

У моего сайта есть рассылка на subscribe.ru - https://subscribe.ru/catalog/comp.hard.altuninvvblog

Долгое время она не выходила, основной причиной была трудность верстки новых выпусков рассылки, так как вручную всё это делать было долго и муторно. Наконец, я пересилил собственную лень и написал простой скрипт, на PHP, который создает список статей и возвращает готовый для вставки HTML код.

В корне сайта создайте файл getarticles_ххххххххх.php, например getarticles_klhdgy3568925.php

ххххх – любая случайная строка.

Теперь сам скрипт:

<?php

try {
  $dbh = new PDO('mysql:host=localhost;dbname={MYSITEDB}', '{XXXXX}', "{YYYY}");
} catch (PDOException $e) {
  print "Error!: " . $e->getMessage();
  die();
}

try {
  $stmt = $dbh->prepare('
SELECT 
concat(CONCAT("https://blog.altuninvv.ru/media/k2/items/cache/",MD5(CONCAT("Image",a.id))),"_M.jpg") AS image, 
a.id,
a.title, 
a.alias,
c.alias AS c_alias,
c1.alias AS cp_alias
FROM 
pmfh1_k2_items AS a 
LEFT JOIN pmfh1_k2_categories AS c ON ( a.catid = c.id ) 
LEFT JOIN pmfh1_k2_categories AS c1 ON ( c1.id = c.parent ) 
WHERE a.published = 1 
ORDER BY c.id, a.created
');

  $stmt->execute();  
?><table><?php
  while ($row = $stmt->fetch(PDO::FETCH_LAZY)) {
?>
<tr>
  <td style="padding:10px;">
    <a href="https://blog.altuninvv.ru/<?php echo $row->cp_alias; ?>/<?php echo $row->c_alias; ?>/<?php echo $row->id."-".$row->alias; ?>" class="">
      <img src="/<?php echo $row->image; ?>" align="middle" border="0" width="150" hspace="0" vspace="0"></a>
    </a>
  </td>
  <td>
    <a href="https://blog.altuninvv.ru/<?php echo $row->cp_alias; ?>/<?php echo $row->c_alias; ?>/<?php echo $row->id."-".$row->alias; ?>" class="">
      <font face="times new roman, times, serif" size="4">
        <u><?php echo $row->title; ?></u>
      </font>
    </a>
  <td>
</tr>
<?php
  }
?></table><?php
} catch (PDOException $e) {
  print "Error!: " . $e->getMessage();
  die();
}

Обязательно замените строки {MYSITEDB}, {XXXXX}, {YYYY} на имя вашей БД, имя пользователя и пароль.

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

GRANT SELECT  ON TABLE `{MYSITEDB}`.`#__k2_items` TO '{XXXXX}'@'localhost';

GRANT SELECT  ON TABLE `{MYSITEDB}`.`#__k2_categories` TO '{XXXXX}'@'localhost';

Обратите внимание на особенность создания имени файла с картинкой для статьи:

MD5(CONCAT("Image",a.id)))

Сохраните файл и откройте в браузере созданный скрипт. Он вернет готовый HTML код для вставки, например:

	<table><tr> 
	<td style="padding:10px;"> 
	<a href="https://blog.altuninvv.ru/eltex/mes/19-обновление-прошивки-на-устройствах-eltex-в-windows-на-примере-mes2324b" class=""> 

	<img src="https://blog.altuninvv.ru/media/k2/items/cache/f4b6dca0e2911082f0eb6e1df1a0e11d_M.jpg" align="middle" border="0" width="150" hspace="0" vspace="0"></a> 
	</a> 
	</td> 
	<td> 
	<a href="https://blog.altuninvv.ru/eltex/mes/19-обновление-прошивки-на-устройствах-eltex-в-windows-на-примере-mes2324b" class=""> 

	<font face="times new roman, times, serif" size="4"> 
	<u>Обновление прошивки на устройствах Eltex в Windows на примере MES2324B</u> 
	</font> 
	</a> 
	<td> 
	</tr> 
	<tr> 
	<td style="padding:10px;"> 
	<a href="https://blog.altuninvv.ru/eltex/mes/20-сброс-до-заводских-настроек-mes2324b" class=""> 
	<img src="https://blog.altuninvv.ru/media/k2/items/cache/c889234799e865bbe90cee71f6cd2e53_M.jpg" align="middle" border="0" width="150" hspace="0" vspace="0"></a> 
	</a> 
	</td> 
	<td> 
	<a href="https://blog.altuninvv.ru/eltex/mes/20-сброс-до-заводских-настроек-mes2324b" class=""> 
	<font face="times new roman, times, serif" size="4"> 
	<u>Сброс до заводских настроек MES2324B</u> 
	</font> 
	</a> 
	<td> 
	</tr> 
	<tr> 
	<td style="padding:10px;"> 
	<a href="https://blog.altuninvv.ru/eltex/mes/21-сброс-пароля-на-mes-без-потери-конфигурации" class=""> 

	<img src="https://blog.altuninvv.ru/media/k2/items/cache/9b2c4b44fb86522964124ed80d03c5e8_M.jpg" align="middle" border="0" width="150" hspace="0" vspace="0"></a> 
	</a> 
	</td> 
	<td> 
	<a href="https://blog.altuninvv.ru/eltex/mes/21-сброс-пароля-на-mes-без-потери-конфигурации" class=""> 

	<font face="times new roman, times, serif" size="4"> 
	<u>Сброс пароля на MES без потери конфигурации</u> 
	</font> 
	</a> 
	<td> 
	</tr>
</table>

Вот и всё, надеюсь кому-нибудь данный скрипт пригодится и позволит сэкономить силы и время.

Прочитано 41 раз Последнее изменение Воскресенье, 22 ноября 2020 17:39
Другие материалы в этой категории: « Реальное импортозамещение или что такое ТОРП?