Bitrix-D7  20.0.0
Класс RobotsFile
Граф наследования:RobotsFile:
File FileEntry IFileStream FileSystemEntry

Открытые члены

 __construct ($siteId)
 
 addRule ($rule, $section=' *', $bCheckUnique=true)
 
 getRuleText ($rule)
 
 parseRule ($strRule)
 
 getRules ($rule, $section=' *')
 
- Открытые члены унаследованные от File
 __construct ($path, $siteId=null)
 
 open ($mode)
 Opens the file and returns the file pointer. Подробнее...
 
 close ()
 Closes the file. Подробнее...
 
 isExists ()
 
 getContents ()
 
 putContents ($data, $flags=self::REWRITE)
 
 getSize ()
 Returns the file size. Подробнее...
 
 seek ($position)
 Seeks on the file pointer from the beginning (SEEK_SET only). Подробнее...
 
 isWritable ()
 
 isReadable ()
 
 readFile ()
 
 getCreationTime ()
 
 getLastAccessTime ()
 
 getModificationTime ()
 
 markWritable ()
 
 getPermissions ()
 
 delete ()
 
 getContentType ()
 
- Открытые члены унаследованные от FileEntry
 getExtension ()
 
 putContents ($data)
 
 getFileSize ()
 
 isDirectory ()
 
 isFile ()
 
 isLink ()
 
- Открытые члены унаследованные от FileSystemEntry
 isSystem ()
 
 getName ()
 
 getDirectoryName ()
 
 getPath ()
 
 getDirectory ()
 
 getPhysicalPath ()
 
 rename ($newPath)
 

Поля данных

const ROBOTS_FILE_NAME = 'robots.txt'
 
const SECTION_RULE = 'User-Agent'
 
const SITEMAP_RULE = 'Sitemap'
 
const EMPTY_DISALLOW_RULE = 'Disallow: # empty Disallow instruction SHOULD be there'
 Standard robots.txt rules tell us that at least one Disallow instruction should be put in robots.txt for its correct interpretation. Подробнее...
 
- Поля данных унаследованные от File
const REWRITE = 0
 
const APPEND = 1
 

Защищенные члены

 getSection ($section)
 
 addSectionRule ($section, $rule)
 
 load ()
 
 save ()
 

Защищенные данные

 $siteId = ''
 
 $documentRoot
 
 $robotsFile = null
 
 $contents = array()
 
 $bLoaded = false
 
- Защищенные данные унаследованные от File
 $filePointer
 
- Защищенные данные унаследованные от FileSystemEntry
 $path
 
 $originalPath
 
 $pathPhysical
 
 $siteId
 

Дополнительные унаследованные члены

- Открытые статические члены унаследованные от File
static isFileExists ($path)
 
static getFileContents ($path)
 
static putFileContents ($path, $data, $flags=self::REWRITE)
 
static deleteFile ($path)
 
- Защищенные статические члены унаследованные от FileSystemEntry
static getDocumentRoot ($siteId)
 

Подробное описание

См. определение в файле robotsfile.php строка 13

Конструктор(ы)

◆ __construct()

__construct (   $siteId)

См. определение в файле robotsfile.php строка 35

36  {
37  $this->siteId = $siteId;
38  $this->documentRoot = SiteTable::getDocumentRoot($this->siteId);
39 
40  parent::__construct(IO\Path::combine($this->documentRoot, self::ROBOTS_FILE_NAME));
41  }

Методы

◆ addRule()

addRule (   $rule,
  $section = '*',
  $bCheckUnique = true 
)

См. определение в файле robotsfile.php строка 43

44  {
45  $this->load();
46  if($bCheckUnique)
47  {
48  $strRule = ToUpper($this->getRuleText($rule));
49  $arRules = $this->getSection($section);
50  foreach($arRules as $existingRule)
51  {
52  $strExistingRule = ToUpper($this->getRuleText($existingRule));
53  if($strRule == $strExistingRule)
54  {
55  return true;
56  }
57  }
58  }
59 
60  $this->addSectionRule($section, $rule);
61 
62  $this->save();
63  }

◆ addSectionRule()

addSectionRule (   $section,
  $rule 
)
protected

См. определение в файле robotsfile.php строка 114

115  {
116  $section = ToUpper($section);
117  foreach($this->contents as $currentAgent => $arRules)
118  {
119  if(ToUpper($currentAgent) == $section)
120  {
121  $this->contents[$section][] = $rule;
122  return;
123  }
124  }
125 
126  $this->contents[$section] = array($rule);
127  }

◆ getRules()

getRules (   $rule,
  $section = '*' 
)

См. определение в файле robotsfile.php строка 82

83  {
84  $this->load();
85  $arRules = array();
86  if(isset($this->contents[$section]))
87  {
88  $rule = ToUpper($rule);
89  foreach ($this->contents[$section] as $arRule)
90  {
91  if(ToUpper($arRule[0]) == $rule)
92  {
93  $arRules[] = $arRule;
94  }
95  }
96  }
97  return $arRules;
98  }

◆ getRuleText()

getRuleText (   $rule)

См. определение в файле robotsfile.php строка 65

66  {
67  return implode(': ', $rule);
68  }

◆ getSection()

getSection (   $section)
protected

См. определение в файле robotsfile.php строка 100

101  {
102  $section = ToUpper($section);
103  foreach($this->contents as $currentAgent => $arRules)
104  {
105  if(ToUpper($currentAgent) == $section)
106  {
107  return $arRules;
108  }
109  }
110 
111  return array();
112  }

◆ load()

load ( )
protected

См. определение в файле robotsfile.php строка 129

130  {
131  if($this->isExists() && !$this->bLoaded)
132  {
133  $contents = $this->getContents();
134  $arLines = preg_split("/\\n+/", $contents);
135  $currentAgent = '';
136  if(count($arLines) > 0)
137  {
138  $strSectionCompare = ToUpper(self::SECTION_RULE);
139  foreach($arLines as $line)
140  {
141  $line = trim($line);
142 
143  if(strlen($line) > 0)
144  {
145  $rule = $this->parseRule($line);
146  if(ToUpper($rule[0]) == $strSectionCompare)
147  {
148  $currentAgent = $rule[1];
149  }
150  elseif ($currentAgent != '')
151  {
152 
153  if(!is_array($this->contents[$currentAgent]))
154  {
155  $this->contents[$currentAgent] = array();
156  }
157 
158  $this->contents[$currentAgent][] = $rule;
159  }
160  }
161  }
162  }
163  }
164  $this->bLoaded = true;
165  }

◆ parseRule()

parseRule (   $strRule)

См. определение в файле robotsfile.php строка 70

71  {
72  if(substr($strRule, 0, 1) == '#')
73  {
74  return array($strRule);
75  }
76  else
77  {
78  return preg_split("/:\s*/", $strRule, 2);
79  }
80  }

◆ save()

save ( )
protected

См. определение в файле robotsfile.php строка 167

168  {
169  if(count($this->contents) > 0)
170  {
171  $strContent = '';
172  $nn = "\r\n";
173 
174  foreach($this->contents as $currentAgent => $arRules)
175  {
176  if(is_array($arRules) && count($arRules) > 0)
177  {
178  $strContent .=
179  ($strContent == '' ? '' : $nn)
180  .$this->getRuleText(array(self::SECTION_RULE, $currentAgent)).$nn;
181 
182  foreach ($arRules as $rule)
183  {
184  $strContent .= $this->getRuleText($rule).$nn;
185  }
186  }
187  }
188 
189  $this->putContents($strContent);
190  }
191  }

Поля

◆ $bLoaded

$bLoaded = false
protected

См. определение в файле robotsfile.php строка 33

◆ $contents

$contents = array()
protected

См. определение в файле robotsfile.php строка 32

◆ $documentRoot

$documentRoot
protected

См. определение в файле robotsfile.php строка 28

◆ $robotsFile

$robotsFile = null
protected

См. определение в файле robotsfile.php строка 30

◆ $siteId

$siteId = ''
protected

См. определение в файле robotsfile.php строка 27

◆ EMPTY_DISALLOW_RULE

const EMPTY_DISALLOW_RULE = 'Disallow: # empty Disallow instruction SHOULD be there'

Standard robots.txt rules tell us that at least one Disallow instruction should be put in robots.txt for its correct interpretation.

But Yandex interprets empty Disallow rule as total allowance and skips all further Disallow rules.

Уст.:

См. определение в файле robotsfile.php строка 25

◆ ROBOTS_FILE_NAME

const ROBOTS_FILE_NAME = 'robots.txt'

См. определение в файле robotsfile.php строка 16

◆ SECTION_RULE

const SECTION_RULE = 'User-Agent'

См. определение в файле robotsfile.php строка 17

◆ SITEMAP_RULE

const SITEMAP_RULE = 'Sitemap'

См. определение в файле robotsfile.php строка 18


Объявления и описания членов класса находятся в файле:
Bitrix\Main\SiteTable\getDocumentRoot
static getDocumentRoot($siteId=null)
Definition: main/lib/site.php:16
Bitrix\Main\IO\File\isExists
isExists()
Definition: main/lib/io/file.php:51
Bitrix\Seo\RobotsFile\parseRule
parseRule($strRule)
Definition: robotsfile.php:70
Bitrix\Main\IO\Path\combine
static combine()
Definition: main/lib/io/path.php:221
Bitrix\Seo\RobotsFile\getRuleText
getRuleText($rule)
Definition: robotsfile.php:65
Bitrix\Seo\RobotsFile\save
save()
Definition: robotsfile.php:167
Bitrix\Seo\RobotsFile\load
load()
Definition: robotsfile.php:129
Bitrix\Main\IO\File\getContents
getContents()
Definition: main/lib/io/file.php:57
Bitrix\Seo\RobotsFile\$siteId
$siteId
Definition: robotsfile.php:27
Bitrix\Sender\Connector\__construct
__construct(Base $connector)
Constructor.
Definition: resultview.php:40
Bitrix\Main\IO
Definition: main/lib/io/directory.php:2
Bitrix\Seo\RobotsFile\addSectionRule
addSectionRule($section, $rule)
Definition: robotsfile.php:114
Bitrix\Main\IO\File\putContents
putContents($data, $flags=self::REWRITE)
Definition: main/lib/io/file.php:65
Bitrix\Seo\RobotsFile\getSection
getSection($section)
Definition: robotsfile.php:100
Bitrix\Seo\RobotsFile\$contents
$contents
Definition: robotsfile.php:32