Василич#: Прежде всего, спасибо за ответ ! Да, порылся, отвечает xfields.php из папки inc: http://pastebin.com/47cHcXj2 ,
только вот незнаю, как заставить обрабатываться определенной доп поле...
Могу только дать наводку начиная со строки 558 эти поля както обрабатываются. Я смотрел и не черта не понял - как.. лапша код, все в одну кучу.
Там по моему другой скрипт отвечает за xfields. addnews.php тут не причем, хотя могу ошибаться. Я очень давно копался в этом движке и остался под большим впечатлением - там черт ногу сломает.
Если вы попытаетесь использовать серверную шаблонизацию, например что бы ускорить прорисовку страницы, либо что бы поисковики индексировали (либо и то и другое), то вас постигнет разочарование. Т.к. серверная шаблонизация добавляет логики в HTML и AngularJs тоже пишет логику в HTML, то не происходит четкого разделения ответственности и как результат очень запутанный спагетти-код. Ангуляр просто не предполагает того, что разработчики захотят ускорить загрузку страницы, либо захотят индексацию поисковиками, он не создан для этого. (непродуманная-архитектура#11). Да, вы можете обойти эту проблему, используя prerender.io (это сервис, который парсит ваш SAP и выдает вам HTML файлы, которые вы должны скармливать поисковикам). Но опять таки — это костыль, а не коренное решение проблемы.
Sitealert, я раскомментировал аналог return preg_replace с e модификатором который будет работать в 5.2, а return preg_replace_callback с анонимной функцией наоборот закомментировал.
Выбрасывает ошибку "syntax error" а не E_DEPRECATED потому что анонимные функции появились начиная с версии 5.3
function sanitize($var, $santype = 1, $allowable_tags = ''){
if ($santype == 1) {
return strip_tags($var, $allowable_tags = '');
}
elseif ($santype == 2) {
return htmlentities(strip_tags($var, $allowable_tags),ENT_QUOTES,'UTF-8');
}
elseif ($santype == 3) {
return addslashes(strip_tags($var, $allowable_tags));
}
elseif ($santype == 4) {
/*** Redwine: As of PHP 5.5.0, the preg_replace() emitts an error E_DEPRECATED level when passing in the "\e" modifier
As of PHP 7.0.0 E_WARNING is emited in this case and "\e" modifier has no effect.
***/
return stripslashes(preg_replace('/<([^>]+)>/es', "'<'.sanitize('\\1',5).'>'",strip_tags($var, $allowable_tags)));
// Substituting preg_replace with preg_replace_callback
/*return stripslashes(preg_replace_callback('/<([^>]+)>/is',
function($m) {
return '<'.sanitize($m[1],5).'>';
}, strip_tags($var, $allowable_tags)));*/
}
elseif ($santype == 5) {
/*** Redwine: As of PHP 5.5.0, the preg_replace() emitts an error E_DEPRECATED level when passing in the "\e" modifier
As of PHP 7.0.0 E_WARNING is emited in this case and "\e" modifier has no effect.
***/
return preg_replace('/\son\w+\s*=/is','',$var);
// Substituting preg_replace with preg_replace_callback
/*return preg_replace_callback('/\son\w+\s*=/is',
function($m) {
return '';
},$var);*/
}
}
Вы я так понял вставляите скрипт в файл шаблона *.tpl и шаблонизатор скорее всего не поддерживает вставки скриптов.
Попробуйте вставить скрипт в корневой index.php(если он есть, либо где у вас точка входа), в самом верху файла.
Прежде всего, спасибо за ответ ! Да, порылся, отвечает xfields.php из папки inc: http://pastebin.com/47cHcXj2 ,
только вот незнаю, как заставить обрабатываться определенной доп поле...
Могу только дать наводку начиная со строки 558 эти поля както обрабатываются. Я смотрел и не черта не понял - как.. лапша код, все в одну кучу.
вот мой файл addnews.php
Там по моему другой скрипт отвечает за xfields. addnews.php тут не причем, хотя могу ошибаться. Я очень давно копался в этом движке и остался под большим впечатлением - там черт ногу сломает.
Изменения начиная с 322 строки http://pastebin.com/u4QA2Zfy я не проверял, но должно работать(на сколько помню этот движок).
А так вообще, ДЛЕ - это такой дерьмо код.. порой до смеха некоторые строки доводят.
Это Angular, у тегов атрибуты ng-* это его директивы.
Буквально с недельку назад читал статью
Отрывок по поводу индексации ПС-ами:
Если вы попытаетесь использовать серверную шаблонизацию, например что бы ускорить прорисовку страницы, либо что бы поисковики индексировали (либо и то и другое), то вас постигнет разочарование. Т.к. серверная шаблонизация добавляет логики в HTML и AngularJs тоже пишет логику в HTML, то не происходит четкого разделения ответственности и как результат очень запутанный спагетти-код. Ангуляр просто не предполагает того, что разработчики захотят ускорить загрузку страницы, либо захотят индексацию поисковиками, он не создан для этого. (непродуманная-архитектура#11). Да, вы можете обойти эту проблему, используя prerender.io (это сервис, который парсит ваш SAP и выдает вам HTML файлы, которые вы должны скармливать поисковикам). Но опять таки — это костыль, а не коренное решение проблемы.
Гуглим php xmlreader to array на php.net находим хороший пример - копипестим.
Чего там голову с утра ломать..
Sitealert, члены в полях :) Я имел виду, что можно объявить внутри класса.
свойство - переменная, метод - функция, константа - не изменяемая переменная.
Sitealert, я раскомментировал аналог return preg_replace с e модификатором который будет работать в 5.2, а return preg_replace_callback с анонимной функцией наоборот закомментировал.
А ещё методы бывают...
А еще константы бывают.
/e нужно убирать из функции. Её больше нельзя использовать.
https://www.google.ru/search?client=opera&q=the+preg_replace()+emitts+an+error+E_DEPRECATED+level+when+passing+in+the&sourceid=opera&ie=UTF-8&oe=UTF-8
Выбрасывает ошибку "syntax error" а не E_DEPRECATED потому что анонимные функции появились начиная с версии 5.3
ТС, 5.5 хотябы поставьте.