утилиты для 1C-Битрикс

Обойдёмся без холиваров, в CMS 1C-Битрикс, с которым приходится постоянно иметь дело по работе, есть одно (как минимум) серьёзное упущение — добавляемые статичные страницы в разделе не индексируются автоматически, т.е. контентщику приходится сначала добавлять десяток-другой страниц в раздел, а затем руками забивать их заголовки и имена в контекстное меню раздела и в главную страницу раздела. В целях экономии массы своего и чужого времени пришлось устранить данное упущение.

Идея была очень простая, вытекающая из архитектуры системы 1С-Битрикс — вывести имена всех файлов в директории, они же будут служить урлом, и из этих файлов дёргается строчка, в которой у статичных страниц в Битриксе лежит название ($APPLICATION->SetTitle).

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

Вот что у меня получилось в итоге:

Лист ссылок на страницы раздела для главной страницы раздела

  1. <?php
  2.  
  3. echo "<ul style='list-style-type:none;'>";
  4. if ($handle = opendir('.')) {
  5.   while (false !== ($file = readdir($handle))) {
  6.     if ($file != "." && $file != "..") {
  7.       $filename = "$file,";
  8.  
  9. $pieces = explode(",", $filename);
  10. }
  11. echo '<li><a href="',$pieces[0],'">';
  12.  
  13. $lines=file("$file");
  14. $extract = ($lines[2]); // строчка №2 статичных страниц как раз и содержит заголовок…
  15. $pure = substr($extract,24,-5); // …от которого отрезаем с двух сторон известное число знаков
  16. echo $pure, '</a></li>';
  17.     }
  18.   }
  19. }
  20.  
  21. echo "</ul>";
  22.  
  23. ?>

Контекстное меню раздела

  1. <?php echo "<? $"; ?>
  2. <?php echo "aMenuLinks = Array("; ?>
  3. <?php
  4. if ($handle = opendir('.')) {
  5.   while (false !== ($file = readdir($handle))) {
  6.     if ($file != "." && $file != "..") {
  7.       $filename = "$file,";
  8.  
  9. $pieces = explode(",", $filename);
  10.  
  11. echo "Array(\n";
  12.  
  13. $lines=file("$file");
  14. $extract = ($lines[2]);
  15. $pure = substr($extract,24,-4);
  16. echo '"', $pure, '",';
  17. echo "\n";
  18. echo '"',$pieces[0], '",';
  19. echo "\n";
  20. echo 'Array(),
  21.     Array(),
  22.     ""';
  23. echo "\n),\n";
  24.  
  25.     }
  26.   }
  27. }
  28.  
  29. echo ");
  30. ?>\n";
  31.  
  32. ?>

Конечно, этот код может быть улучшен, отдельные моменты сделаны наспех, но для утилиты в помощь разработчику и/или контентщику — самое оно. Пока главный недостаток — то что в лист и меню собираются все файлы из директории, даже ненужные. Но зато утилита для индексной страницы универсальна, её идею можно использовать для любого PHP движка, не только Bitrix.