Новости Joomla

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

С тех пор, как в поисковиках появились нейроответы ИИ, трафик на сайты стал гораздо меньше, так как пользователь стал получать информацию непосредственно на странице поисковика без перехода на сайт. Но при генерации ответа ИИ указывает источники - ссылки на сайты, информация которых была использована для генерации ответа.

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

В начале февраля 2026г. был вебинар с Михаилом Сливинским - амбассадором Поиска Яндекса, и в рамках вебинара была озвучена просьба сделать такой инструмент. Скорее всего разработка на тот момент уже велась, потому что от просьбы до релиза прошло около 2-х месяцев. В любом случае хорошо, что такая статистика появилась.

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

В февральском номере Joomla Community Magazine в статье Evolving Joomla - Joomla CMS MCP Server: Opening the Door to AI-Powered Administration рассказывается о работе команды разработчиков над внедрением в ядро Joomla MCP-сервера.

Что такое MCP-сервер?
Последние годы всех захватывает бум ИИ-технологий. Появились ИИ-агенты - программы, устанавливаемые на сервер или компьютер, которые получают от вас запрос или задачу в человеческом виде и могут выполнять действия с файлами, ходить по сайтам, создавать сайты, программировать и т.д. Люди используют ИИ-агентов в самых разных ситуациях: от написания и проверки кода (даже там, где язык программирования не знаете совсем) до планирования путешествий и бронирования гостиницы.

ИИ-агенты могут использовать различные программные инструменты по протоколу Model Context Protocol (MCP). Для этого разработчик программы должен внедрить MCP в свой продукт или сервис. Так, например, ваш ИИ-агент может ходить по сайтам через браузер и собирать нужную информацию, управляя браузером через MCP-сервер. Или использовать функционал IDE PHP Storm для написания кода, сбора и отладки ошибок, использовать поиск PHP Storm по кодовой базе, а не простой текстовый поиск по файлам. MCP предоставляет набор функций для полноценного управления программным обеспечением.

В случае с Joomla, сервер MCP может предоставить администраторам следующие возможности:
- Автоматическое создание категорий, материалов и меню на основе карты сайта или PDF-файла.
- Создавайть SEO-оптимизированные заголовки и метаописания в пакетном режиме.
- Обновлять расширения на нескольких сайтах одновременно
- Создание посадочные страницы.

Важно отметить, что сервер MCP не задумывался как функция, доступная только «супер-администраторам». Цель инициативы — создать решение, которое будет простым в настройке, маломощным и доступным для широкого круга пользователей.

В процессе разработки точка входа Joomla (аналогично Site, Administrator, Api, Cli), которая будет работать с Streamable HTTP, необходимым для MCP. Аутентификация пока что предполагается на токенах, но затем планируется создание универсального OAuth-сервера для Joomla.
Фактические возможности MCP — инструменты, ресурсы и подсказки — реализованы в виде плагинов для обеспечения расширяемости. Таким образом ожидаем, что и сторонние разработчики смогут создавать MCP-плагины для внедрения поддержки своих расширений Joomla для работы с ИИ.

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 12 Ответов
  • 2174 Просмотров
*

Vaska

  • Осваиваюсь на форуме
  • 29
  • 0 / 2
Приветствую!

Пользую Mambo 4.5 (1.0.9).
Установлен редактор - компонент HTMLArea3 XTD-C 1.1.

Редактор убирает пробелы в параметрах любого тега. Если в параметр прописать два слова: большой каток, то после сохранения получим: большойкаток. Или если в параметр class прописать два класса, то он их склеит убрав пробел.

За это отвечает файл class.inputfilter.php
Содержимое файла:
Код
<?php

/** @class: InputFilter (PHP4 & PHP5, with comments)
  * @project: PHP Input Filter
  * @date: 10-05-2005
  * @version: 1.2.2_php4/php5
  * @author: Daniel Morris
  * @contributors: Gianpaolo Racca, Ghislain Picard, Marco Wandschneider, Chris Tobin and Andrew Eddie.
  * @copyright: Daniel Morris
  * @email: dan@rootcube.com
  * @license: GNU General Public License (GPL)
  */
class InputFilter {
var $tagsArray; // default = empty array
var $attrArray; // default = empty array

var $tagsMethod; // default = 0
var $attrMethod; // default = 0

var $xssAuto;           // default = 1
//var $tagBlacklist = array('applet', 'body', 'bgsound', 'base', 'basefont', 'embed', 'frame', 'frameset', 'head', 'html', 'id', 'iframe', 'ilayer', 'layer', 'link', 'meta', 'name', 'object', 'script', 'style', 'title', 'xml');
var $tagBlacklist = array('applet', 'body', 'bgsound', 'base', 'basefont', 'embed', 'frame', 'frameset', 'head', 'html', 'iframe', 'ilayer', 'layer', 'link', 'meta', 'name', 'style', 'title', 'xml');
var $attrBlacklist = array('action', 'background', 'codebase', 'dynsrc', 'lowsrc');  // also will strip ALL event handlers

/**
 * Constructor for inputFilter class. Only first parameter is required.
 * @access constructor
 * @param Array $tagsArray - list of user-defined tags
 * @param Array $attrArray - list of user-defined attributes
 * @param int $tagsMethod - 0= allow just user-defined, 1= allow all but user-defined
 * @param int $attrMethod - 0= allow just user-defined, 1= allow all but user-defined
 * @param int $xssAuto - 0= only auto clean essentials, 1= allow clean blacklisted tags/attr
 */
function inputFilter($tagsArray = array(), $attrArray = array(), $tagsMethod = 0, $attrMethod = 0, $xssAuto = 1) {
// make sure user defined arrays are in lowercase
for ($i = 0; $i < count($tagsArray); $i++) $tagsArray[$i] = strtolower($tagsArray[$i]);
for ($i = 0; $i < count($attrArray); $i++) $attrArray[$i] = strtolower($attrArray[$i]);
// assign to member vars
$this->tagsArray = (array) $tagsArray;
$this->attrArray = (array) $attrArray;
$this->tagsMethod = $tagsMethod;
$this->attrMethod = $attrMethod;
$this->xssAuto = $xssAuto;
}

/**
 * Method to be called by another php script. Processes for XSS and specified bad code.
 * @access public
 * @param Mixed $source - input string/array-of-string to be 'cleaned'
 * @return String $source - 'cleaned' version of input parameter
 */
function process($source) {
// clean all elements in this array
if (is_array($source)) {
foreach($source as $key => $value)
// filter element for XSS and other 'bad' code etc.
if (is_string($value)) $source[$key] = $this->remove($this->decode($value));
return $source;
// clean this string
} else if (is_string($source)) {
// filter source for XSS and other 'bad' code etc.
return $this->remove($this->decode($source));
// return parameter as given
} else return $source;
}

/**
 * Internal method to iteratively remove all unwanted tags and attributes
 * @access protected
 * @param String $source - input string to be 'cleaned'
 * @return String $source - 'cleaned' version of input parameter
 */
function remove($source) {
$loopCounter=0;
// provides nested-tag protection
while($source != $this->filterTags($source)) {
$source = $this->filterTags($source);
$loopCounter++;
}
return $source;
}

/**
 * Internal method to strip a string of certain tags
 * @access protected
 * @param String $source - input string to be 'cleaned'
 * @return String $source - 'cleaned' version of input parameter
 */
function filterTags($source) {
// filter pass setup
$preTag = NULL;
$postTag = $source;
// find initial tag's position
$tagOpen_start = strpos($source, '<');
// interate through string until no tags left
while($tagOpen_start !== FALSE) {
// process tag interatively
$preTag .= substr($postTag, 0, $tagOpen_start);
$postTag = substr($postTag, $tagOpen_start);
$fromTagOpen = substr($postTag, 1);
// end of tag
$tagOpen_end = strpos($fromTagOpen, '>');
if ($tagOpen_end === false) break;
// next start of tag (for nested tag assessment)
$tagOpen_nested = strpos($fromTagOpen, '<');
if (($tagOpen_nested !== false) && ($tagOpen_nested < $tagOpen_end)) {
$preTag .= substr($postTag, 0, ($tagOpen_nested+1));
$postTag = substr($postTag, ($tagOpen_nested+1));
$tagOpen_start = strpos($postTag, '<');
continue;
}
$tagOpen_nested = (strpos($fromTagOpen, '<') + $tagOpen_start + 1);
$currentTag = substr($fromTagOpen, 0, $tagOpen_end);
$tagLength = strlen($currentTag);
if (!$tagOpen_end) {
$preTag .= $postTag;
$tagOpen_start = strpos($postTag, '<');
}
// iterate through tag finding attribute pairs - setup
$tagLeft = $currentTag;
$attrSet = array();
$currentSpace = strpos($tagLeft, ' ');
// is end tag
if (substr($currentTag, 0, 1) == "/") {
$isCloseTag = TRUE;
list($tagName) = explode(' ', $currentTag);
$tagName = substr($tagName, 1);
// is start tag
} else {
$isCloseTag = FALSE;
list($tagName) = explode(' ', $currentTag);
}
// excludes all "non-regular" tagnames OR no tagname OR remove if xssauto is on and tag is blacklisted
if ((!preg_match("/^[a-z][a-z0-9]*$/i",$tagName)) || (!$tagName) || ((in_array(strtolower($tagName), $this->tagBlacklist)) && ($this->xssAuto))) {
$postTag = substr($postTag, ($tagLength + 2));
$tagOpen_start = strpos($postTag, '<');
// don't append this tag
continue;
}
// this while is needed to support attribute values with spaces in!
while ($currentSpace !== FALSE) {
$fromSpace = substr($tagLeft, ($currentSpace+1));
$nextSpace = strpos($fromSpace, ' ');
$openQuotes = strpos($fromSpace, '"');
$closeQuotes = strpos(substr($fromSpace, ($openQuotes+1)), '"') + $openQuotes + 1;
// another equals exists
if (strpos($fromSpace, '=')!== FALSE) {
// opening and closing quotes exists
if (($openQuotes !== FALSE) && (strpos(substr($fromSpace, ($openQuotes+1)), '"')!== FALSE))
$attr = substr($fromSpace, 0, ($closeQuotes+1));
// one or neither exist
else $attr = substr($fromSpace, 0, $nextSpace);
// no more equals exist
} else $attr = substr($fromSpace, 0, $nextSpace);
// last attr pair
if (!$attr) $attr = $fromSpace;
// add to attribute pairs array
$attrSet[] = $attr;
// next inc
$tagLeft = substr($fromSpace, strlen($attr));
$currentSpace = strpos($tagLeft, ' ');
}
// appears in array specified by user
$tagFound = in_array(strtolower($tagName), $this->tagsArray);
// remove this tag on condition
if ((!$tagFound && $this->tagsMethod) || ($tagFound && !$this->tagsMethod)) {
// reconstruct tag with allowed attributes
if (!$isCloseTag) {
$attrSet = $this->filterAttr($attrSet);
$preTag .= '<' . $tagName;
for ($i = 0; $i < count($attrSet); $i++)
$preTag .= ' ' . $attrSet[$i];
// reformat single tags to XHTML
if (strpos($fromTagOpen, "</" . $tagName)) $preTag .= '>';
else $preTag .= ' />';
// just the tagname
   } else $preTag .= '</' . $tagName . '>';
}
// find next tag's start
$postTag = substr($postTag, ($tagLength + 2));
$tagOpen_start = strpos($postTag, '<');
}
// append any code after end of tags
$preTag .= $postTag;
return $preTag;
}

/**
 * Internal method to strip a tag of certain attributes
 * @access protected
 * @param Array $attrSet
 * @return Array $newSet
 */
function filterAttr($attrSet) {
$newSet = array();
// process attributes
for ($i = 0; $i <count($attrSet); $i++) {
// skip blank spaces in tag
if (!$attrSet[$i]) continue;
// split into attr name and value
$attrSubSet = explode('=', trim($attrSet[$i]),2);
list($attrSubSet[0]) = explode(' ', $attrSubSet[0]);
// removes all "non-regular" attr names AND also attr blacklisted
if ((!eregi("^[a-z]*$",$attrSubSet[0])) || (($this->xssAuto) && ((in_array(strtolower($attrSubSet[0]), $this->attrBlacklist)) || (substr($attrSubSet[0], 0, 2) == 'on'))))
continue;
// xss attr value filtering
if ($attrSubSet[1]) {
// strips unicode, hex, etc
$attrSubSet[1] = str_replace('&#', '', $attrSubSet[1]);
// strip normal newline within attr value
$attrSubSet[1] = preg_replace('/\s+/', '', $attrSubSet[1]);
// strip double quotes
$attrSubSet[1] = str_replace('"', '', $attrSubSet[1]);
// [requested feature] convert single quotes from either side to doubles (Single quotes shouldn't be used to pad attr value)
if ((substr($attrSubSet[1], 0, 1) == "'") && (substr($attrSubSet[1], (strlen($attrSubSet[1]) - 1), 1) == "'"))
$attrSubSet[1] = substr($attrSubSet[1], 1, (strlen($attrSubSet[1]) - 2));
// strip slashes
$attrSubSet[1] = stripslashes($attrSubSet[1]);
}
// auto strip attr's with "javascript:
if (InputFilter::badAttributeValue( $attrSubSet ))
continue;

// if matches user defined array
$attrFound = in_array(strtolower($attrSubSet[0]), $this->attrArray);
// keep this attr on condition
if ((!$attrFound && $this->attrMethod) || ($attrFound && !$this->attrMethod)) {
// attr has value
if ($attrSubSet[1]) $newSet[] = $attrSubSet[0] . '="' . $attrSubSet[1] . '"';
// attr has decimal zero as value
else if ($attrSubSet[1] == "0") $newSet[] = $attrSubSet[0] . '="0"';
// reformat single attributes to XHTML
else $newSet[] = $attrSubSet[0] . '="' . $attrSubSet[0] . '"';
}
}
return $newSet;
}

/**
* Function to determine if contents of an attribute is safe
* @param Array A 2 element array for attribute [name] and [value]
* @return Boolean True if bad code is detected
*/
function badAttributeValue( $attrSubSet ) {
$attrSubSet[0] = strtolower( $attrSubSet[0] );
$attrSubSet[1] = strtolower( $attrSubSet[1] );
return (
((strpos($attrSubSet[1], 'expression')!== false) && ($attrSubSet[0]) == 'style') ||
(strpos($attrSubSet[1], 'javascript:')!== false) ||
(strpos($attrSubSet[1], 'behaviour:')!== false) ||
(strpos($attrSubSet[1], 'vbscript:')!== false) ||
(strpos($attrSubSet[1], 'mocha:')!== false) ||
(strpos($attrSubSet[1], 'livescript:')!== false)
);
}

/**
 * Try to convert to plaintext
 * @access protected
 * @param String $source
 * @return String $source
 */
function decode($source) {
// url decode
$source = html_entity_decode($source, ENT_QUOTES, "ISO-8859-1");
// convert decimal
$source = preg_replace('/&#(\d+);/me',"chr(\\1)", $source); // decimal notation
// convert hex
$source = preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)", $source); // hex notation
return $source;
}

/**
 * Method to be called by another php script. Processes for SQL injection
 * @access public
 * @param Mixed $source - input string/array-of-string to be 'cleaned'
 * @param Buffer $connection - An open MySQL connection
 * @return String $source - 'cleaned' version of input parameter
 */
function safeSQL($source, &$connection) {
// clean all elements in this array
if (is_array($source)) {
foreach($source as $key => $value)
// filter element for SQL injection
if (is_string($value)) $source[$key] = $this->quoteSmart($this->decode($value), $connection);
return $source;
// clean this string
} else if (is_string($source)) {
// filter source for SQL injection
if (is_string($source)) return $this->quoteSmart($this->decode($source), $connection);
// return parameter as given
} else return $source;
}

/**
 * @author Chris Tobin
 * @author Daniel Morris
 * @access protected
 * @param String $source
 * @param Resource $connection - An open MySQL connection
 * @return String $source
 */
function quoteSmart($source, &$connection) {
// strip slashes
if (get_magic_quotes_gpc()) $source = stripslashes($source);
// quote both numeric and text
$source = $this->escapeString($source, $connection);
return $source;
}

/**
 * @author Chris Tobin
 * @author Daniel Morris
 * @access protected
 * @param String $source
 * @param Resource $connection - An open MySQL connection
 * @return String $source
 */
function escapeString($string, &$connection) {
// depreciated function
if (version_compare(phpversion(),"4.3.0", "<")) mysql_escape_string($string);
// current function
else mysql_real_escape_string($string);
return $string;
}
}

?>

В файле все функции подписаны.

Я думаю, что за мою проблему отвечает функция filterTags
И конкретно кусок кода внутри этой функции:
Код
			// this while is needed to support attribute values with spaces in!
while ($currentSpace !== FALSE) {
$fromSpace = substr($tagLeft, ($currentSpace+1));
$nextSpace = strpos($fromSpace, ' ');
$openQuotes = strpos($fromSpace, '"');
$closeQuotes = strpos(substr($fromSpace, ($openQuotes+1)), '"') + $openQuotes + 1;
// another equals exists
if (strpos($fromSpace, '=')!== FALSE) {
// opening and closing quotes exists
if (($openQuotes !== FALSE) && (strpos(substr($fromSpace, ($openQuotes+1)), '"')!== FALSE))
$attr = substr($fromSpace, 0, ($closeQuotes+1));
// one or neither exist
else $attr = substr($fromSpace, 0, $nextSpace);
// no more equals exist
} else $attr = substr($fromSpace, 0, $nextSpace);
// last attr pair
if (!$attr) $attr = $fromSpace;
// add to attribute pairs array
$attrSet[] = $attr;
// next inc
$tagLeft = substr($fromSpace, strlen($attr));
$currentSpace = strpos($tagLeft, ' ');
}

Но могу ошибаться с указанным куском кода. Проверяйте.

Задача: внести исправления в файле, чтобы не удаляло пробелы в аттрибутах тегов.


Заплачу 200 руб., после выполнения задания и тестирования.
Оплата на ЯД или карту сбербанка или на мобильный телефон, что более разумно за такую символическую оплату.
« Последнее редактирование: 15.06.2017, 08:09:21 от Vaska »
*

nick71

  • Завсегдатай
  • 1145
  • 12 / 12
  • Сайты любой сложности - обращайтесь
Mambo ? в 2017 году? Круто... Тут если Joomla 2.5. видишь - напрягаешься, а тут такое...При этом доступа нет, дамп не дам, а дам какой-то левый архив, который заработает на PHP 4 (сейчас 7.1. а некоторые сайты не работают при Joomla 3.хх на PHP 5,6). Хотел предложить просто сделать с нуля на последней версии Joomla с переносом данных и со всем необходимым функционалом, плюс возможно смена дизайна на более современный (не видя сайт-донор могу предположить что если мамбо то там та еще красота) и адаптивный. Но дошел до строки с бюджетом и передумал.
Никого не хотел обидеть, сугубо рабочий взгляд на задачу.
*

ProtectYourSite

  • Живу я здесь
  • 2368
  • 139 / 4
  • Безопасность вебсайтов
Что-то у меня этот архив и работать не захотел)
*

Vaska

  • Осваиваюсь на форуме
  • 29
  • 0 / 2
Что-то у меня этот архив и работать не захотел)
Я когда добавлял строку в базу о редакторе, то в конце строки поставил запятую, вместо точки с запятой.
Сейчас исправил.
Скачайте снова архив.
*

nick71

  • Завсегдатай
  • 1145
  • 12 / 12
  • Сайты любой сложности - обращайтесь
а без архива показать сайт можете, есть в онлайне? И рассматриваете ли мой вариант - с нуля, и т.д. И какой бюджет можете предложить? Сайт на Мамбо это ж жесть, и по функционалу и по безопасности.
*

ProtectYourSite

  • Живу я здесь
  • 2368
  • 139 / 4
  • Безопасность вебсайтов
Не заходит в админку всё равно
Цитировать
ЄЧиНКБТЄФЎ, ГЛСКјиТ№ ЛГЧНГРґСєЎТГаўйТ¶Ц§ дБи¶ЩЎµйН§.  ЎГШіТЕН§гЛБи
В причинах лень разбираться
*

Vaska

  • Осваиваюсь на форуме
  • 29
  • 0 / 2
Не заходит в админку всё равноВ причинах лень разбираться
В файле базы уже есть строки, которые создают админа с логином admin и паролем admin
Попробуйте зайти под этими данными.

И перед этим откройте файл configuration.php и замените там язык на английский, если он там тайский в параметре $mosConfig_lang = 'english';
« Последнее редактирование: 14.06.2017, 20:32:15 от Vaska »
*

ProtectYourSite

  • Живу я здесь
  • 2368
  • 139 / 4
  • Безопасность вебсайтов
var $attrBlacklistvar $tagBlacklist - там список обрезает тегов, удалить ненужные и авось будет счастье.
var $attrBlacklist - удаляет атрибуты тегов.
Ну и немного оффтопа
Спойлер
[свернуть]
« Последнее редактирование: 15.06.2017, 09:11:50 от ProtectYourSite »
*

Vaska

  • Осваиваюсь на форуме
  • 29
  • 0 / 2
var $attrBlacklistvar $tagBlacklist - там список обрезает тегов, удалить ненужные и авось будет счастье.
var $attrBlacklist - удаляет атрибуты тегов.
Ну и немного оффтопа
Спойлер
[свернуть]

Неужели Вы думаете, что я нашел искомый файл, закомментировал исходную строку, добавил исправленную строку, и не увидел список блеклистов? По тегам я уже сделал и опубликовал исправленный файл, в первом сообщении, вместе с изменением задания на новые условия.
Я уже сам всё сделал.
Чтобы не удаляло пробелы закомментировал $attrSubSet[1] = preg_replace('/\s+/', ' ', $attrSubSet[1]);
добавил $attrSubSet[1] = preg_replace('/[\n\r]/', '', $attrSubSet[1]);

Подсмотрел в файле для Joomla https://github.com/joomla-framework/filter/blob/master/src/InputFilter.php

П.С.
Кстати, дистрибутв у меня сразу инсталлировался, без каких либо проблем.
Странно, что у вас не пошло.
« Последнее редактирование: 15.06.2017, 09:50:54 от Vaska »
*

ProtectYourSite

  • Живу я здесь
  • 2368
  • 139 / 4
  • Безопасность вебсайтов
Рад за вас)
П.С.
Кстати, дистрибутв у меня сразу инсталлировался, без каких либо проблем.
Странно, что у вас не пошло.
Установился он без проблем, а вот в админку не пускало, с фронта заходило)
*

Vaska

  • Осваиваюсь на форуме
  • 29
  • 0 / 2
Вам выше voland написал прайс. Работа - 200р. Но надо скачать вашу версию, установить, внести правки и т.д. А это уже далеко не 200р. Вы думаете, кто то тут еще помнит Мамбу, которая сдохла 14 лет назад?

Файл у всех одинаковый, один и тот же, что у мамбы, что и у Joomla.
Только он отвечает за контроль ввода теста.

Это изначально было понятно тем, кто знает Joomla.
Поэтому ненужно цену набивать.
Ненужно было ничего скачивать и устанавливать. И так было понятно что нужно править.
Я сам сделал, и знаю что это была плёвая работа, на 5 минут.
*

Vaska

  • Осваиваюсь на форуме
  • 29
  • 0 / 2
Ржу. Ну пусть человек подождет исполнителя. Флуда тысяч на 5 уже написано.

Кого подождет?
Я уже сам всё сделал, Карл!
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Народ. Кого не устраивает стоимость - пожалуйста, воздержитесь от флуда и займитесь чем-то еще. Мы в коммерческом разделе, а не во флейме.

Тема почищена.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

После обновления нужно исправить ошибки и сделать доработки

Автор iAver

Ответов: 1
Просмотров: 1462
Последний ответ 10.01.2020, 18:33:31
от AlexB
Исправить конфликт JoomGallery

Автор OXOJeck

Ответов: 6
Просмотров: 1064
Последний ответ 22.10.2018, 14:15:09
от OXOJeck
Mambo 4.5 доработать компонент com_search

Автор Vaska

Ответов: 3
Просмотров: 1778
Последний ответ 19.08.2018, 15:46:35
от Vaska
Вставить в шаблон JS и исправить пару косяков

Автор Licher

Ответов: 1
Просмотров: 1025
Последний ответ 08.07.2017, 11:36:07
от Licher
Обновить J! 3.6 до 3.7.2 и исправить ошибку с Visforms (не отправляет сам текст заявки)

Автор maximum1

Ответов: 2
Просмотров: 1267
Последний ответ 03.07.2017, 13:06:44
от vipiusss