управление тегами в джумле 2.5
Страницы: 1
[ Закрыто ] управление тегами в джумле 2.5, оптимизация тегов в джумле 2.5
Задача у меня состоит из двух частей.
1 . изметьнить порядок мета тегов в Джумле 2.5
  пытался менять местами в файле по пути /libraries/joomla/document/html/renderer/ фаил head.php но никак неполучилось.
Хочу поднять title в первую строчку
2. далее я прописал мета теги в шаблоне в файле index.php
 получилось так мета-теги из файла  index.php потом скрипты а после метатеги из index.php

в исходном коде получается бордак внутри  тега "head" получается находятся скрипт. Хотелось бы объединить в одну кучу мета теги и скрипты вынести за "Head" хотя бы в конец "head".

На сегодняшний день обновлений в Джумле 2.5. больше  не будет и поэтому можно делать внутри все что угодно. А то при обновлении все слетало к чертям приходилось заново все обновлять и востанавливать после каждого обновления.

В интернете выложено много способом но все они для джумлы 1.5.

P.S. Большое спасибо за оказанную помощь.

Выкладываю Код head.php может так наглядней будет мне помочь
Код
<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Document
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

/**
 * JDocument head renderer
 *
 * @package     Joomla.Platform
 * @subpackage  Document
 * @since       11.1
 */
class JDocumentRendererHead extends JDocumentRenderer
{
   /**
    * Renders the document head and returns the results as a string
    *
    * @param   string  $head     (unused)
    * @param   array   $params   Associative array of values
    * @param   string  $content  The script
    *
    * @return  string  The output of the script
    *
    * @since   11.1
    *
    * @note    Unused arguments are retained to preserve backward compatibility.
    */
   public function render($head, $params = array(), $content = null)
   {
      ob_start();
      echo $this->fetchHead($this->_doc);
      $buffer = ob_get_contents();
      ob_end_clean();

      return $buffer;
   }

   /**
    * Generates the head HTML and return the results as a string
    *
    * @param   JDocument  &$document  The document for which the head will be created
    *
    * @return  string  The head hTML
    *
    * @since   11.1
    */
   public function fetchHead(&$document)
   {
      // Trigger the onBeforeCompileHead event (skip for installation, since it causes an error)
      $app = JFactory::getApplication();
      $app->triggerEvent('onBeforeCompileHead');
      // Get line endings
      $lnEnd = $document->_getLineEnd();
      $tab = $document->_getTab();
      $tagEnd = ' />';
      $buffer = '';

      // Generate base tag (need to happen first)
      $base = $document->getBase();
      if (!empty($base))
      {
         $buffer .= $tab . '<base href="' . $document->getBase() . '" />' . $lnEnd;
      }

      // Generate META tags (needs to happen as early as possible in the head)
      foreach ($document->_metaTags as $type => $tag)
      {
         foreach ($tag as $name => $content)
         {
            if ($type == 'http-equiv')
            {
               $content .= '; charset=' . $document->getCharset();
               $buffer .= $tab . '<meta http-equiv="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
            }
            elseif ($type == 'standard' && !empty($content))
            {
               $buffer .= $tab . '<meta name="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
            }
         }
      }

      // Don't add empty descriptions
      $documentDescription = $document->getDescription();
      if ($documentDescription)
      {
         $buffer .= $tab . '<meta name="description" content="' . htmlspecialchars($documentDescription) . '" />' . $lnEnd;
      }

      // Don't add empty generators
      $generator = $document->getGenerator();
      if ($generator)
      {
         $buffer .= $tab . '<meta name="generator" content="' . htmlspecialchars($generator) . '" />' . $lnEnd;
      }

      $buffer .= $tab . '<title>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . '</title>' . $lnEnd;

      // Generate link declarations
      foreach ($document->_links as $link => $linkAtrr)
      {
         $buffer .= $tab . '<link href="' . $link . '" ' . $linkAtrr['relType'] . '="' . $linkAtrr['relation'] . '"';
         if ($temp = JArrayHelper::toString($linkAtrr['attribs']))
         {
            $buffer .= ' ' . $temp;
         }
         $buffer .= ' />' . $lnEnd;
      }

      // Generate stylesheet links
      foreach ($document->_styleSheets as $strSrc => $strAttr)
      {
         $buffer .= $tab . '<link rel="stylesheet" href="' . $strSrc . '" type="' . $strAttr['mime'] . '"';
         if (!is_null($strAttr['media']))
         {
            $buffer .= ' media="' . $strAttr['media'] . '" ';
         }
         if ($temp = JArrayHelper::toString($strAttr['attribs']))
         {
            $buffer .= ' ' . $temp;
         }
         $buffer .= $tagEnd . $lnEnd;
      }

      // Generate stylesheet declarations
      foreach ($document->_style as $type => $content)
      {
         $buffer .= $tab . '<style type="' . $type . '">' . $lnEnd;

         // This is for full XHTML support.
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . '<![CDATA[' . $lnEnd;
         }

         $buffer .= $content . $lnEnd;

         // See above note
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . ']]>' . $lnEnd;
         }
         $buffer .= $tab . '</style>' . $lnEnd;
      }

      // Generate script file links
      foreach ($document->_scripts as $strSrc => $strAttr)
      {
         $buffer .= $tab . '<script src="' . $strSrc . '"';
         if (!is_null($strAttr['mime']))
         {
            $buffer .= ' type="' . $strAttr['mime'] . '"';
         }
         if ($strAttr['defer'])
         {
            $buffer .= ' defer="defer"';
         }
         if ($strAttr['async'])
         {
            $buffer .= ' async="async"';
         }
         $buffer .= '></script>' . $lnEnd;
      }

      // Generate script declarations
      foreach ($document->_script as $type => $content)
      {
         $buffer .= $tab . '<script type="' . $type . '">' . $lnEnd;

         // This is for full XHTML support.
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . '<![CDATA[' . $lnEnd;
         }

         $buffer .= $content . $lnEnd;

         // See above note
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . ']]>' . $lnEnd;
         }
         $buffer .= $tab . '</script>' . $lnEnd;
      }

      // Generate script language declarations.
      if (count(JText::script()))
      {
         $buffer .= $tab . '<script type="text/javascript">' . $lnEnd;
         $buffer .= $tab . $tab . '(function() {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'var strings = ' . json_encode(JText::script()) . ';' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'if (typeof Joomla == \'undefined\') {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla = {};' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText = strings;' . $lnEnd;
         $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'else {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText.load(strings);' . $lnEnd;
         $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
         $buffer .= $tab . $tab . '})();' . $lnEnd;
         $buffer .= $tab . '</script>' . $lnEnd;
      }

      foreach ($document->_custom as $custom)
      {
         $buffer .= $tab . $custom . $lnEnd;
      }

      return $buffer;
   }
}

 
Пытался менять местами генераторы (скрипты), но у меня только сайт перестает грузится. Где-то ошибку допускаю
а вы в файлах шаблона не пытались менять?
Цитата
span4bob пишет:
а вы в файлах шаблона не пытались менять?
раскажите как это сделать. Спасибо
Цитата
Александр Черкасов пишет:
раскажите как это сделать. Спасибо
все зависит от шаблона
но иногда в шаблонах есть точно такие же файлы как и в жумле, и шаблон обращается к ним а не к дефолтным
Цитата
span4bob пишет:
Цитата
Александр Черкасов пишет:
раскажите как это сделать. Спасибо
все зависит от шаблона
но иногда в шаблонах есть точно такие же файлы как и в жумле, и шаблон обращается к ним а не к дефолтным
сайт www.stroy- dom.org
Цитата
Хочу поднять title в первую строчку

В файле libraries/joomla/document/html/renderer/head.php, так будет первым title
Код
<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Document
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

/**
 * JDocument head renderer
 *
 * @package     Joomla.Platform
 * @subpackage  Document
 * @since       11.1
 */
class JDocumentRendererHead extends JDocumentRenderer
{
   /**
    * Renders the document head and returns the results as a string
    *
    * @param   string  $head     (unused)
    * @param   array   $params   Associative array of values
    * @param   string  $content  The script
    *
    * @return  string  The output of the script
    *
    * @since   11.1
    *
    * @note    Unused arguments are retained to preserve backward compatibility.
    */
   public function render($head, $params = array(), $content = null)
   {
      ob_start();
      echo $this->fetchHead($this->_doc);
      $buffer = ob_get_contents();
      ob_end_clean();

      return $buffer;
   }

   /**
    * Generates the head HTML and return the results as a string
    *
    * @param   JDocument  &$document  The document for which the head will be created
    *
    * @return  string  The head hTML
    *
    * @since   11.1
    */
   public function fetchHead(&$document)
   {
      // Trigger the onBeforeCompileHead event (skip for installation, since it causes an error)
      $app = JFactory::getApplication();
      $app->triggerEvent('onBeforeCompileHead');
      // Get line endings
      $lnEnd = $document->_getLineEnd();
      $tab = $document->_getTab();
      $tagEnd = ' />';
      $buffer = '';

      // Generate base tag (need to happen first)
      $base = $document->getBase();
      if (!empty($base))
      {
         $buffer .= $tab . '<base href="' . $document->getBase() . '" />' . $lnEnd;
      }

        // Don't add empty descriptions
      $documentDescription = $document->getDescription();
      if ($documentDescription)
      $buffer .= $tab . '<title>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . '</title>' . $lnEnd;
      {
         $buffer .= $tab . '<meta name="description" content="' . htmlspecialchars($documentDescription) . '" />' . $lnEnd;
      }

      // Generate META tags (needs to happen as early as possible in the head)
      foreach ($document->_metaTags as $type => $tag)
      {
         foreach ($tag as $name => $content)
         {
            if ($type == 'http-equiv')
            {
               $content .= '; charset=' . $document->getCharset();
               $buffer .= $tab . '<meta http-equiv="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
            }
            elseif ($type == 'standard' && !empty($content))
            {
               $buffer .= $tab . '<meta name="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
            }
         }
      }

      

      // Generate link declarations
      foreach ($document->_links as $link => $linkAtrr)
      {
         $buffer .= $tab . '<link href="' . $link . '" ' . $linkAtrr['relType'] . '="' . $linkAtrr['relation'] . '"';
         if ($temp = JArrayHelper::toString($linkAtrr['attribs']))
         {
            $buffer .= ' ' . $temp;
         }
         $buffer .= ' />' . $lnEnd;
      }

      // Generate stylesheet links
      foreach ($document->_styleSheets as $strSrc => $strAttr)
      {
         $buffer .= $tab . '<link rel="stylesheet" href="' . $strSrc . '" type="' . $strAttr['mime'] . '"';
         if (!is_null($strAttr['media']))
         {
            $buffer .= ' media="' . $strAttr['media'] . '" ';
         }
         if ($temp = JArrayHelper::toString($strAttr['attribs']))
         {
            $buffer .= ' ' . $temp;
         }
         $buffer .= $tagEnd . $lnEnd;
      }

      // Generate stylesheet declarations
      foreach ($document->_style as $type => $content)
      {
         $buffer .= $tab . '<style type="' . $type . '">' . $lnEnd;

         // This is for full XHTML support.
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . '<![CDATA[' . $lnEnd;
         }

         $buffer .= $content . $lnEnd;

         // See above note
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . ']]>' . $lnEnd;
         }
         $buffer .= $tab . '</style>' . $lnEnd;
      }

      // Generate script file links
      foreach ($document->_scripts as $strSrc => $strAttr)
      {
         $buffer .= $tab . '<script src="' . $strSrc . '"';
         if (!is_null($strAttr['mime']))
         {
            $buffer .= ' type="' . $strAttr['mime'] . '"';
         }
         if ($strAttr['defer'])
         {
            $buffer .= ' defer="defer"';
         }
         if ($strAttr['async'])
         {
            $buffer .= ' async="async"';
         }
         $buffer .= '></script>' . $lnEnd;
      }

      // Generate script declarations
      foreach ($document->_script as $type => $content)
      {
         $buffer .= $tab . '<script type="' . $type . '">' . $lnEnd;

         // This is for full XHTML support.
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . '<![CDATA[' . $lnEnd;
         }

         $buffer .= $content . $lnEnd;

         // See above note
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . ']]>' . $lnEnd;
         }
         $buffer .= $tab . '</script>' . $lnEnd;
      }

      // Generate script language declarations.
      if (count(JText::script()))
      {
         $buffer .= $tab . '<script type="text/javascript">' . $lnEnd;
         $buffer .= $tab . $tab . '(function() {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'var strings = ' . json_encode(JText::script()) . ';' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'if (typeof Joomla == \'undefined\') {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla = {};' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText = strings;' . $lnEnd;
         $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'else {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText.load(strings);' . $lnEnd;
         $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
         $buffer .= $tab . $tab . '})();' . $lnEnd;
         $buffer .= $tab . '</script>' . $lnEnd;
      }

      foreach ($document->_custom as $custom)
      {
         $buffer .= $tab . $custom . $lnEnd;
      }

      return $buffer;
   }
}
не помогло, что то не так. title  - остался на своём месте
В джумле 2.5.28 немного по другому делается.
Помогли решить проблему друзья .Вот код
Код
<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Document
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

/**
 * JDocument head renderer
 *
 * @package     Joomla.Platform
 * @subpackage  Document
 * @since       11.1
 */
class JDocumentRendererHead extends JDocumentRenderer
{
   /**
    * Renders the document head and returns the results as a string
    *
    * @param   string  $head     (unused)
    * @param   array   $params   Associative array of values
    * @param   string  $content  The script
    *
    * @return  string  The output of the script
    *
    * @since   11.1
    *
    * @note    Unused arguments are retained to preserve backward compatibility.
    */
   public function render($head, $params = array(), $content = null)
   {
      ob_start();
      echo $this->fetchHead($this->_doc);
      $buffer = ob_get_contents();
      ob_end_clean();

      return $buffer;
   }

   /**
    * Generates the head HTML and return the results as a string
    *
    * @param   JDocument  &$document  The document for which the head will be created
    *
    * @return  string  The head hTML
    *
    * @since   11.1
    */
   public function fetchHead(&$document)
   {
      // Trigger the onBeforeCompileHead event (skip for installation, since it causes an error)
      $app = JFactory::getApplication();
      $app->triggerEvent('onBeforeCompileHead');
      // Get line endings
      $lnEnd = $document->_getLineEnd();
      $tab = $document->_getTab();
      $tagEnd = ' />';
      $buffer = '';

      // Generate base tag (need to happen first)
      $base = $document->getBase();
      if (!empty($base))
      {
         $buffer .= $tab . '<base href="' . $document->getBase() . '" />' . $lnEnd;
      }
      $buffer .= $tab . '<title>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . '</title>' . $lnEnd;

      // Generate META tags (needs to happen as early as possible in the head)
      foreach ($document->_metaTags as $type => $tag)
      {
         foreach ($tag as $name => $content)
         {
            if ($type == 'http-equiv')
            {
               $content .= '; charset=' . $document->getCharset();
               $buffer .= $tab . '<meta http-equiv="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
            }
            elseif ($type == 'standard' && !empty($content))
            {
               $buffer .= $tab . '<meta name="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
            }
         }
      }
      // Don't add empty descriptions
      $documentDescription = $document->getDescription();
      if ($documentDescription)
      {
         $buffer .= $tab . '<meta name="description" content="' . htmlspecialchars($documentDescription) . '" />' . $lnEnd;
      }

      // Don't add empty generators
      $generator = $document->getGenerator();
      if ($generator)
      {
         $buffer .= $tab . '<meta name="generator" content="' . htmlspecialchars($generator) . '" />' . $lnEnd;
      }



      // Generate link declarations
      foreach ($document->_links as $link => $linkAtrr)
      {
         $buffer .= $tab . '<link href="' . $link . '" ' . $linkAtrr['relType'] . '="' . $linkAtrr['relation'] . '"';
         if ($temp = JArrayHelper::toString($linkAtrr['attribs']))
         {
            $buffer .= ' ' . $temp;
         }
         $buffer .= ' />' . $lnEnd;
      }

      // Generate stylesheet links
      foreach ($document->_styleSheets as $strSrc => $strAttr)
      {
         $buffer .= $tab . '<link rel="stylesheet" href="' . $strSrc . '" type="' . $strAttr['mime'] . '"';
         if (!is_null($strAttr['media']))
         {
            $buffer .= ' media="' . $strAttr['media'] . '" ';
         }
         if ($temp = JArrayHelper::toString($strAttr['attribs']))
         {
            $buffer .= ' ' . $temp;
         }
         $buffer .= $tagEnd . $lnEnd;
      }

      // Generate stylesheet declarations
      foreach ($document->_style as $type => $content)
      {
         $buffer .= $tab . '<style type="' . $type . '">' . $lnEnd;

         // This is for full XHTML support.
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . '<![CDATA[' . $lnEnd;
         }

         $buffer .= $content . $lnEnd;

         // See above note
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . ']]>' . $lnEnd;
         }
         $buffer .= $tab . '</style>' . $lnEnd;
      }

      // Generate script file links
      foreach ($document->_scripts as $strSrc => $strAttr)
      {
         $buffer .= $tab . '<script src="' . $strSrc . '"';
         if (!is_null($strAttr['mime']))
         {
            $buffer .= ' type="' . $strAttr['mime'] . '"';
         }
         if ($strAttr['defer'])
         {
            $buffer .= ' defer="defer"';
         }
         if ($strAttr['async'])
         {
            $buffer .= ' async="async"';
         }
         $buffer .= '></script>' . $lnEnd;
      }

      // Generate script declarations
      foreach ($document->_script as $type => $content)
      {
         $buffer .= $tab . '<script type="' . $type . '">' . $lnEnd;

         // This is for full XHTML support.
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . '<![CDATA[' . $lnEnd;
         }

         $buffer .= $content . $lnEnd;

         // See above note
         if ($document->_mime != 'text/html')
         {
            $buffer .= $tab . $tab . ']]>' . $lnEnd;
         }
         $buffer .= $tab . '</script>' . $lnEnd;
      }

      // Generate script language declarations.
      if (count(JText::script()))
      {
         $buffer .= $tab . '<script type="text/javascript">' . $lnEnd;
         $buffer .= $tab . $tab . '(function() {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'var strings = ' . json_encode(JText::script()) . ';' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'if (typeof Joomla == \'undefined\') {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla = {};' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText = strings;' . $lnEnd;
         $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
         $buffer .= $tab . $tab . $tab . 'else {' . $lnEnd;
         $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText.load(strings);' . $lnEnd;
         $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
         $buffer .= $tab . $tab . '})();' . $lnEnd;
         $buffer .= $tab . '</script>' . $lnEnd;
      }

      foreach ($document->_custom as $custom)
      {
         $buffer .= $tab . $custom . $lnEnd;
      }

      return $buffer;
   }
}
 
тему можно считать закрытой спасибо.
P.S. Кто вообще хорошо понимает в движке Джумла просьба отписаться в личку. есть задания незабесплатно
Изменено: Александр Черкасов - 16 Февраля 2015 13:02
Цитата
Александр Черкасов пишет:
тему можно считать закрытой

Александр Черкасов, спасибо, что отписались в теме.
Тему закрыл.

* обращение к пользователям - > если Ваша тема потеряла свою актуальность, то, пожалуйста, отпишитесь об этом в теме и скиньте ссылку на тему мне в ЛС.
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
20:13 Dao.AD: Монетизация и покупка Push/Pops/Inpage и Video трафика! 
15:04 Adtrafico - Правильная партнёрская сеть под бурж трафик 
19:21 LOSPOLLOS.COM - Конвертим по рецепту Хайзенберга. Dating, Mainstream, Binary Options 
17:32 Новая жизнь, старого форума 
17:41 DreamCash.tl - заработок на онлайн-видео. До 95% отчислений, отличный конверт! 
17:46 Проверить сайт на уязвимость 
17:44 Adsense личный опыт 
23:48 GoogleWalker - устранение конкурентов в Google Ads | Автоматизированная система склика | АНТИБАН 
23:24 Volna.money 
16:51 Google Voice - OLD аккаунты "SMS и звонки" 
15:30 Продам аккаунты HH.RU 
04:10 Просто $0.04/IP 9PROXY.COM Резидентные прокси Неограниченная пропускная способность Уникальная политика замены Без чёрного списка 
22:00 BestX24 - быстрый и безопасный обменник криптовалют и электронных денежных средств 
16:58 Продам обменник криптовалюты, а также новый обменник под ключ с обучением. Скидки на скрипты обменника 
21:06 Точные прогнозы на футбол 
12:43 Куплю проигрышные букмекерские аккаунты 
04:33 Половина скидок на распродажах — фейк 
07:53 НейроБабушка наказывает мошенников 
19:59 Осталось 3-5 месяцев до блокировки YouTube в России, — заявил Клименко 
19:57 Пятница 13-ое: VK принял радикальное решение и закрыл доступ к порно контенту 
14:57 Конгресс США заявил о лабораторном происхождении коронавируса