+0.65
Рейтинг
3.84
Сила
  • avatar Wasja
  • 0
Да, только необходимо учитывать, что встроенных средств, которые бы осуществили повторную генерацию, нет.
Более правильный вариант:
$sWebPath = preg_replace('~http[s]?:\/\/~i', '',Config::Get('path.root.web'));
$sRelativePath = preg_replace('~^.*?(\/.*)~i', '$1', $sWebPath);
$sResult = preg_replace('~((src|href)=")http[s]?:\/\/' . $sWebPath . '~musi', '$1' . $sRelativePath, $sResult);

Например: основной домен
http://site.ru/

Исходный текст:
<img src="http://site.ru/..">
<a href="http://site.ru/">http</a>
<a href="https://site.ru/">https</a>
<a href="http://test1.ru/">ссылка на сторонний сайт</a>

Cоответственно в БД попадет:
<img src="/..">
<a href="/">http</a>
<a href="/">https</a>
<a href="http://test1.ru/">ссылка на сторонний сайт</a>
Может пригодится:
// all absolute path with main domain to relative path
$sRelativePath = preg_replace('~(http[s]?:\/\/.*?\/)~i', '/', Config::Get('path.root.web'));
$sResult = preg_replace('~((src|href)=")(' . Config::Get('path.root.web') . ')~musi', '$1' . $sRelativePath, $sText);

Вставляется в метод Parser модуля Text перед return.
Что делает: после прохода всех стандартных парсеров/обработчиков на исходным текстом находит теги с атриббутами href and src и, если домен совпадает с path.root.web, вырезает его.
Вырезается только домен 2-го уровня. Например: site.ru/ заменится на /, site.ru/livestreet заменится на /livestreet.
Результат: в БД пишутся тэги с относительныи путем.
А так?
Хранить, конечно, нужно относительные пути — это бы сняло целую пачку проблем.
Я решил это так
  • avatar Gmugra
  • 0
На комментарии настройки MySQL ещё очень сильно влияют. добавление комментария и голосование за оный можно ускорить в разы парой опций:
innodb-flush-log-at-trx-commit	= 2
innodb_locks_unsafe_for_binlog	= ON

Но, хорошо разберитесь какие риски они привносят.
  • avatar lifecom
  • 0
Неофициальное решение :)
в файле \engine\modules\image\Image.class.php изменил строку 387 с:
$sWebPath    = rtrim(Config::Get('path.root.web'), '/');

на:
$sWebPath    = rtrim('');

Не знаю правильно или нет, но теперь все пути относительные
У некоторых ls на поддоменах, например, site.ru/lvl1/lvl2/livestreet/.
Можно решить следующим образом:
$sWebPath = rtrim(preg_replace('~^http[s]{0,1}:\/\/[\w\d.-]+~i', '', Config::Get('path.root.web')), '/');
  • avatar lifecom
  • 0
Вот что выяснилось:
За путь ссылки на изображение отвечает модуль Image.
Если уж очень нужно чтобы путь на локальные изображения был относительным — необходимо в файле \engine\modules\image\Image.class.php изменить строку:
$sWebPath    = rtrim(Config::Get('path.root.web'), '/');

на
$sWebPath    = rtrim('');
Эта практика встречается гораздо чаще чем необоснованная манипуляция с рейтингом, которая достаточно затратна учитывая перезапись каждый день десятки тысяч человек(http://kosmetista.ru/), даже тех кто давным давно не заходил. Плюс к тому же у кого рейтинг уже упал до 0, все равно будут проходить через этот цикл проверки, но уже без сохранения записи в бд, конечно же.
Дело в том что в лс в данных о подписках указывается эл. почта, а не id юзера совершившего подписку. Сделано это по всей видимость для того что бы можно было гостям введя свой адрес эл. почты подписаться на комментарии или другие виды подписок создаваемые плагины. По сути это вполне логично, но гибкости в реализации не хватает о чем и говорит ваша ситуация.

Структура таблицы подписок — github.com/livestreet/livestreet/blob/master/install/sql.sql#L344-L367
у меня стучались в /anything/edit по 1000 запросов
заблочил через

location ~ ^/edit/?$ {
   return 404;
}
location ~ ^/(?!ajax)(.+)/edit/?$ {
   return 404;
}

Автор и бедолага с ошибкой

конец строки правил гласит «|WebWhacker|WebZIP|") {»
уберите последнюю «|», иначе в правило ««lalala|lala|»» попадают ВСЕ, кто заходит на сайт из-за последней «|».

т.е. надо вот так
if ($http_user_agent ~ "JikeSpider|proximic|Sosospider|Sogou web spider|aesop_com_spiderman|alexibot|backweb|batchftp|bigfoot|black.hole|blackwidow|blowfish|botalot|buddy|builtbottough|bullseye|cheesebot|cherrypicker|chinaclaw|collector|copier|copyrightcheck|cosmos|crescent|curl|custo|da|diibot|disco|dittospyder|dragonfly|drip|easydl|ebingbong|ecatch|eirgrabber|emailcollector|emailsiphon|emailwolf|erocrawler|exabot|eyenetie|filehound|flashget|flunky|frontpage|getright|getweb|go.?zilla|go-ahead-got-it|gotit|grabnet|grafula|harvest|hloader|hmview|httplib|httrack|humanlinks|ilsebot|infonavirobot|infotekies|intelliseek|interget|iria|jennybot|jetcar|joc|justview|jyxobot|kenjin|keyword|larbin|leechftp|lexibot|lftp|libweb|likse|linkscan|linkwalker|lnspiderguy|lwp|magnet|mag-net|markwatch|mata.hari|memo|microsoft.url|midown.tool|miixpc|mirror|missigua|mister.pix|moget|mozilla.newt|nameprotect|navroad|backdoorbot|nearsite|net.?vampire|netants|netcraft|netmechanic|netspider|nextgensearchbot|attach|nicerspro|nimblecrawler|npbot|octopus|offline.?explorer|offline.navigator|openfind|outfoxbot|pagegrabber|papa|pavuk|pcbrowser|php.?version.?tracker|pockey|propowerbot|prowebwalker|psbot|pump|queryn|recorder|realdownload|reaper|reget|true_robot|repomonkey|rma|internetseer|sitesnagger|siphon|slysearch|smartdownload|snake|snapbot|snoopy|sogou|spacebison|spankbot|spanner|sqworm|superbot|superhttp|surfbot|asterias|suzuran|szukacz|takeout|teleport|telesoft|the.intraformant|thenomad|tighttwatbot|titan|urldispatcher|turingos|turnitinbot|urly.warning|vacuum|vci|voideye|whacker|libwww-perl|widow|wisenutbot|wwwoffle|xaldon|xenu|zeus|zyborg|anonymouse|zip|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|sauger|site.quester|whack|craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|grabber|webpictures|Jakarta|User-Agent|libwww|lwp-trivial|PHPCrawl|WEP Search|Missigua Locator|ISC Systems iRc|Aboundex|360Spider|Java|Cogentbot|BunnySlippers|Cegbfeieh|AIBOT|Demon|Devil|Wonder|Foobot|Kenjin Spider|Density|LinkextractorPro|LWP::Simple|MassDownloader|Mass Downloader|NetZIP|NG|Metasearch|WebFetch|WebCopier|Webclipping|WebBandit|WebAuto|WebGo|Web.Image.Collector|WebLeacher|WebmasterWorldForumBot|WebReaper|WebSauger|eXtractor|Webster|WebStripper|WebWhacker|WebZIP") {
return 400;
}
Нужно работать с базой данных:
1. Чтобы всем новым пользователям по умолчанию не активировались эти опции, нужно в таблице user, для нужных полей (они начинаются на «user_settings_notice_») для значения по умолчанию поставить 0
2. Чтобы изменить настройки уже существующих пользователей, необходимо в этих же полях для всех пользователей установить 0. Пример SQL запроса, который отключает все опции уведомления для всех пользователей:
UPDATE `prefix_user` SET 
user_settings_notice_new_topic = 0,
user_settings_notice_new_comment = 0,
user_settings_notice_new_talk = 0,
user_settings_notice_reply_comment = 0,
user_settings_notice_new_friend = 0


prefix необходимо изменить на префикс ваших таблиц в базе данных.
  • avatar Shrike
  • 0
Я добавлял кнопки в начало панели таким способом ( в templates.js)
jQuery (document).ready (function ($) {
  // adding new button to MarkItUp! editor
    oSettings = ls.settings.getMarkitup ();
    oSettingsButtonSet = oSettings ['markupSet'];
    oSettingsButtonSet.unshift (
	{name:'H2', key:'2', className:'editor-h2', openWith:'<h2>', closeWith:'</h2>' },
	{name:'H3', key:'3', className:'editor-h3', openWith:'<h3>', closeWith:'</h3>' }
    );

    $.extend (true, oSettings, {'markupSet': oSettingsButtonSet});

    ls.settings.getMarkitup = function () {
	return oSettings;
}

});


Проверяйте!
Как я сам это реализовал на клиентском сайте:
<h3>Навигатор</h3>
<select id="select1">
 <option value="null">Выбери рубрику</option>
 <option value="1">Рубрика 1</option>
 <option value="2">Рубрика 2</option>
 
</select>
 
 <select id="select2" style="margin-right:25px;" disabled="disabled">
 <option>А теперь блог</option>
 </select>
 <input type="button" value="Посмотреть" class="button" id="knopka" disabled="disabled"/>
 <script>
 var options=['<option value="/blog/">Блог 1</option><option value="/blog/">Блог 2</option><option value="/blog/">Блог 3</option>','<option value="/blog/">Блог 1</option><option value="/blog/">Блог 2</option><option value="/blog/">Блог 3</option>'];
 $('#select1').change(function(){
 if($('#select1 :selected').val() == 'null'){
 $('#select2').attr("disabled","disabled");
 $('#knopka').attr("disabled","disabled");
 }else{
 $('#select2').removeAttr("disabled");
 $('#knopka').removeAttr("disabled");
 $('#select2').html(options[$('#select1 :selected').val()-1]);
 }
 });
 $('#knopka').click(function(){
 location.href = $('#select2 :selected').val();
 });
 </script>
Она? Нельзя ли такую проверку включить дампом в настройке какого-нибудь плагина, напр. в config engine?
Не сосем верно. Если посмотреть, что именно фиксилось, то можно увидеть, что правили стандартный форматер дат, а так же шаблоны sinyo и developer.
Если у человека свой шаблон, в котормо не используется форматтер, то проблемы нет.
Ошибка же только в отображении данных, а не в их сохранении.
  • avatar Gmugra
  • 0
Теперь к сути. max_matches по умолчанию ( если не указан в конфиге Sphinx ) имеет значение 1000. И внимание: «note that you can not set the value in the API higher than the value in the .conf file» Т.е. sphinx.conf всё равно нужно менять, если вы хотите увелисть это значение. И это сокрее всего и было причиной ваших проблем.

Дальше
/engine/lib/external/Sphinx/sphinxapi.php стоит дефолтное значение maxmatches = 1000 (217 строка)
ничего менять не надо — это первичная инициализация объекта и атрибут _maxmatches переписывается при вызове метода SetLimits.
  • avatar ort
  • 2