rereg

Рейтинг
59
Регистрация
20.02.2015

Вы я так понял вставляите скрипт в файл шаблона *.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 находим хороший пример - копипестим.


error_reporting(-1);
header("content-type: text/plain; charset=utf-8");
function xml2assoc(&$xml){
$assoc = array();
$n = 0;
while($xml->read()){
if($xml->nodeType == XMLReader::END_ELEMENT) break;
if($xml->nodeType == XMLReader::ELEMENT and !$xml->isEmptyElement){
$assoc[$n]['name'] = $xml->name;
if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value;
$assoc[$n]['val'] = xml2assoc($xml);
$n++;
}
else if($xml->isEmptyElement){
$assoc[$n]['name'] = $xml->name;
if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value;
$assoc[$n]['val'] = "";
$n++;
}
else if($xml->nodeType == XMLReader::TEXT) $assoc = $xml->value;
}
return $assoc;
}

$source = <<<XML
<?xml version="1.0"?>
<offers>
<offer available="true" id="O14112180643" type="vendor.model"><article>640295700752999</article><categoryId>1401000</categoryId><currencyId>RUR</currencyId><description>Комфортные треггинсы, содержат эластан для идеальной посадки, изделие дополнено кружевными вставками, широкий эластичный пояс, узкий крой штанин</description><model>Брюки Tom Tailor 640295700752999</model><modified_time>1482808144</modified_time><name>Брюки Tom Tailor 640295700752999</name><oldprice>4999</oldprice><param name="Пол">Женский</param><param name="Цвет">черный</param><param name="Размер" quantity="2" type="size" unit="EU">34/32</param><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-1b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-2b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-3b.jpg</picture><price>1500</price><topseller>false</topseller><topseller>false</topseller><url>https://ad.admitad.com/g/641a4c7cc1e181aacf623d89878ee1/?i=5&amp;ulp=http%3A%2F%2Ftom-tailor-online.ru%2Fshop%2Fproduct%2Fbrjuki-tom-tailor-640295700752999</url><vendor>tom tailor</vendor><vendorCode>640295700752999</vendorCode></offer>

<offer available="true" id="O14112180643" type="vendor.model"><article>640295700752999</article><categoryId>1401000</categoryId><currencyId>RUR</currencyId><description>Комфортные треггинсы, содержат эластан для идеальной посадки, изделие дополнено кружевными вставками, широкий эластичный пояс, узкий крой штанин</description><model>Брюки Tom Tailor 640295700752999</model><modified_time>1482808144</modified_time><name>Брюки Tom Tailor 640295700752999</name><oldprice>4999</oldprice><param name="Пол">Женский</param><param name="Цвет">черный</param><param name="Размер" quantity="2" type="size" unit="EU">34/32</param><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-1b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-2b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-3b.jpg</picture><price>1500</price><topseller>false</topseller><topseller>false</topseller><url>https://ad.admitad.com/g/641a4c7cc1e181aacf623d89878ee1/?i=5&amp;ulp=http%3A%2F%2Ftom-tailor-online.ru%2Fshop%2Fproduct%2Fbrjuki-tom-tailor-640295700752999</url><vendor>tom tailor</vendor><vendorCode>640295700752999</vendorCode></offer>
</offers>
XML;

$xml = new XMLReader();
$xml->XML($source);
$assoc = xml2assoc($xml);
print_r($assoc);

Чего там голову с утра ломать..

Sitealert, члены в полях :) Я имел виду, что можно объявить внутри класса.

свойство - переменная, метод - функция, константа - не изменяемая переменная.

Sitealert, я раскомментировал аналог return preg_replace с e модификатором который будет работать в 5.2, а return preg_replace_callback с анонимной функцией наоборот закомментировал.

Sitealert:
А ещё методы бывают...

А еще константы бывают.

LEOnidUKG:
/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


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);*/
}
}

ТС, 5.5 хотябы поставьте.

Всего: 485