<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* MaxSite CMS
* (c) https://max-3000.com/
*/
# функция автоподключения плагина
function meta_robots_autoload()
{
mso_hook_add('head', 'meta_robots_head');
}
# функция выполняется при активации (вкл) плагина
function meta_robots_activate()
{
mso_create_allow('meta_robots_edit', t('Админ-доступ к настройкам MetaRobots'));
}
# функция выполняется при деактивации (выкл) плагина
function meta_robots_deactivate()
{
mso_delete_option('plugin_meta_robots', 'plugins'); // удалим созданные опции
}
# функция выполняется при деинсталяции плагина
function meta_robots_uninstall()
{
mso_delete_option('plugin_meta_robots', 'plugins'); // удалим созданные опции
mso_remove_allow('meta_robots_edit'); // удалим созданные разрешения
}
# опции
function meta_robots_mso_options()
{
if (!mso_check_allow('meta_robots_edit')) {
echo t('Доступ запрещен');
return;
}
# ключ, тип, ключи массива
mso_admin_plugin_options(
'plugin_meta_robots',
'plugins',
[
'templates' => [
'type' => 'textarea',
'rows' => 10,
'name' => t('Шаблоны URL'),
'description' => t('Шаблоны URL указываются в виде <pre>адрес | meta-значение</pre> Адреса указываются относительно сайта. Значения meta могут быть любыми. Например: <pre>page/about | noindex, nofollow</pre>
Можно использовать регулярные выражения. Произвольный сегмент указывается как «(*)».
<pre>category/(*) | noindex, nofollow</pre>
'),
'default' => ''
],
],
t('Настройки плагина MetaRobots'), // титул
t('Плагин позволяет задавать meta-тэг robots (в секции HEAD) по шаблонам URL. См. <a href="https://developers.google.com/search/reference/robots_meta_tag?hl=ru#directives" rel="nofollow" target="_blank">документацию</a>') // инфо
);
}
# основная функция
function meta_robots_head($arg = [])
{
$options = mso_get_option('plugin_meta_robots', 'plugins', []);
$current_url = mso_current_url(); // текущий адрес
if ($current_url === '') return $arg; // главная
if (!isset($options['templates'])) $options['templates'] = '';
$templates = explode("\n", trim($options['templates'])); // по строкам
$meta = ''; // результат
foreach ($templates as $template) {
$template = trim($template);
if (!$template) continue;
$r = explode('|', $template);
$url = $r[0] ?? '';
$robots = $r[1] ?? '';
if (!$url or !$robots) continue;
$reg = str_replace('(*)', '(.[^/]*)', trim($url));
$reg = '~' . str_replace(')(', '){1}/(', $reg) . '\z~siu';
// pr($current_url);
// pr($reg);
if (preg_match($reg, $current_url)) {
$meta = trim($robots);
break;
}
}
if ($meta) echo '<meta name="robots" content="' . $meta . '">';
return $arg;
}
# end of file