У меня была такая же проблема как Вы описываете, мне её таки не удалось решить полностью, НО максимально возможно я это сделал используя максимальное количество функций у плагина, переопределение, наследование, подставка function…
Вариант с плагинами не удобен
как раз вариант с Плагином самый удобный, так как на данный момент в LS не будут переименовываться функции и вряд ли измениться основа а так же функционал плагинов позволяет максимально возможно интегрироваться в движок LS…
У меня есть один плагин который очень много требует изменений в движке, но я обошолся всего несколькими изменениями которые не могли быть вставленными по другому, допустим мне нужна была другая система обработки изображений, мне пришлось дублировать некоторые функции в LiveImage…
Самое практичное в таком случае, это на мой взгляд делать в коде пометки которые тебе дадут возможность видеть сразу измененные куски кода, а затем создать в корне сайта текстовый документ в котором помечать какие файлы в движке исправлены, это позволит очень быстро весь исправленный функционал перенести с одной версии LS на другую…
Возможно у кого то есть более гибкая система такого преобразования…
Если можешь в двух словах объяснить буду очень благодарен.
плагин перенаправляет необходимые запросы (подходят под регулярку) на экшен error, далее в через хук init_action они отлавливаются, обрабатываются и перенаправляются на нужные экшены
В моём решении мне больше всего не нравиться вот этот кусок кода
Может кому пригодится. Для БД LS 0.42 на 0.5 не проверялось
UPDATE `prefix_blog` SET `blog_avatar`=REPLACE(`blog_avatar`,'_OLD_HOST_', '_NEW_HOST_') WHERE `blog_avatar` LIKE '%_OLD_HOST_%';
UPDATE `prefix_comment` SET `comment_text`=REPLACE(`comment_text`,'_OLD_HOST_', '_NEW_HOST_') WHERE `comment_text` LIKE '%_OLD_HOST_%';
UPDATE `prefix_comment` SET `comment_text_source`=REPLACE(`comment_text_source`,'_OLD_HOST_', '_NEW_HOST_') WHERE `comment_text` LIKE '%_OLD_HOST_%';
UPDATE `prefix_talk` SET `talk_text`=REPLACE(`talk_text`,'_OLD_HOST_', '_NEW_HOST_') WHERE `talk_text` LIKE '%_OLD_HOST_%';
UPDATE `prefix_user` SET `user_profile_avatar`=REPLACE(`user_profile_avatar`,'_OLD_HOST_', '_NEW_HOST_') WHERE `user_profile_avatar` LIKE '%_OLD_HOST_%';
UPDATE `prefix_user` SET `user_profile_foto`=REPLACE(`user_profile_foto`,'_OLD_HOST_', '_NEW_HOST_') WHERE `user_profile_foto` LIKE '%_OLD_HOST_%';
UPDATE `prefix_topic_content` SET `topic_text`=REPLACE(`topic_text`, '_OLD_HOST_', '_NEW_HOST_') WHERE `topic_text` LIKE '%_OLD_HOST_%';
UPDATE `prefix_topic_content` SET `topic_text_short`=REPLACE(`topic_text_short`, '_OLD_HOST_', '_NEW_HOST_') WHERE `topic_text_short` LIKE '%_OLD_HOST_%';
UPDATE `prefix_topic_content` SET `topic_text_source`=REPLACE(`topic_text_source`, '_OLD_HOST_', '_NEW_HOST_') WHERE `topic_text_source` LIKE '%_OLD_HOST_%';
Затем сразу же после закрытия этой функции вставляю следующую, как Вы и описали:
public function MakeUrlNoIndex($sText) {
return preg_replace('#<a([^<]*)href=["\']http://(?![a-z0-9.-]*'.quotemeta($_SERVER['HTTP_HOST']).'\/)([^"\']*)["\']([^<]*)>(.*)</a>#ismU','<a$1href="http://$2"$3 rel="nofollow" target="_blank">$4</a>', $sText);
}
Никаких изменений. Не хотят ссылки открываться в blank'e.
Что может подкрутить?
правильнее было бы добавить в \plugins\page\templates\skin\ИМЯСКИНА\actions\ActionPage\page.tpl
{include file='header.tpl' menu='page'}
создать в темплейте файл menu.page.tpl
и в нем прописать меню для статичных страниц по аналогии с другими ххх.menu.tpl
используя для выяснения активной страницы первого уровня
в /engine/modules/text/Text.class.php заменить функцию MakeUrlNoIndex на эту:
public function MakeUrlNoIndex($sText) {
return preg_replace('#<a([^<]*)href=["\']http://(?![a-z0-9.-]*'.quotemeta($_SERVER['HTTP_HOST']).'\/)([^"\']*)["\']([^<]*)>(.*)</a>#ismU','<a$1href="http://$2"$3 rel="nofollow" target="_blank">$4</a>', $sText);
}
##### [hack] country_list #####
public function GetCountryList($full,$userCountry=''){
if($full==1) $sql="SELECT * FROM `base_countries` ORDER BY `country_name_ru` ASC";
elseif($full==0) $sql="SELECT * FROM `base_countries` WHERE `sort`>0 OR `country_name_ru`= ? ORDER BY `sort` ASC";
$aReturn=array();
if($aRows=$this->oDb->select($sql,$userCountry))
foreach($aRows as $aRow) $aReturn[]=array("id"=>$aRow['id_country'],"name"=>$aRow['country_name_ru']);
return $aReturn;
}
public function GetCityListByCountry($full,$cid,$ext,$userCity=''){
if($full==0){
$sql="SELECT
`city_name_ru`,`id_country`
FROM
`base_cities`
WHERE
(`id_country`= ?d AND `sort`>0)
{ OR city_name_ru = ? }
ORDER BY `sort` ASC";
$aRows=$this->oDb->select($sql,$cid,($ext==0) ? $userCity : DBSIMPLE_SKIP);
$_arr=array(); foreach($aRows as $a) $_arr[]=$a['city_name_ru']; $_arr=array_unique($_arr); # bug with equal city names
if(sizeof($_arr)<=1){
$sql="SELECT `city_name_ru`,`id_country` FROM `base_cities` WHERE `id_country`= ?d ORDER BY `city_name_ru` ASC LIMIT 10";
$aRows=$this->oDb->select($sql,$cid);
}
}elseif($full==1){
$sql="SELECT `city_name_ru`,`id_country` FROM `base_cities` WHERE `id_country`= ?d ORDER BY `city_name_ru` ASC";
$aRows=$this->oDb->select($sql,$cid);
}
$aReturn=array();
if($aRows) foreach($aRows as $aRow)
if($full==0 && $aRow['id_country']==$cid) $aReturn[]=$aRow['city_name_ru'];
elseif($full==1) $aReturn[]=$aRow['city_name_ru'];
return $aReturn;
}
public function GetCountryNameByCID($cid){
$sql="SELECT `country_name_ru` FROM `base_countries` WHERE `id_country`= ?d LIMIT 1";
$aRow=$this->oDb->selectRow($sql,$cid);
return $aRow['country_name_ru'];
}
##### [hack] country_list #####
1)http://learn.iis.net/page.aspx/460/using-url-rewrite-module/ качаем ставим
2)http://learn.iis.net/page.aspx/557/translating-htaccess-content-to-iis-webconfig/
3)пишем свой рул так как путем learn.iis.net/page.aspx/470/importing-apache-modrewrite-rules/
импорта работать не будет
4) не забываем про define('SYS_OFFSET_REQUEST_URL',1);
и про права для папока в системе
как раз вариант с Плагином самый удобный, так как на данный момент в LS не будут переименовываться функции и вряд ли измениться основа а так же функционал плагинов позволяет максимально возможно интегрироваться в движок LS…
У меня есть один плагин который очень много требует изменений в движке, но я обошолся всего несколькими изменениями которые не могли быть вставленными по другому, допустим мне нужна была другая система обработки изображений, мне пришлось дублировать некоторые функции в LiveImage…
Самое практичное в таком случае, это на мой взгляд делать в коде пометки которые тебе дадут возможность видеть сразу измененные куски кода, а затем создать в корне сайта текстовый документ в котором помечать какие файлы в движке исправлены, это позволит очень быстро весь исправленный функционал перенести с одной версии LS на другую…
Возможно у кого то есть более гибкая система такого преобразования…
ниже уже ответили, нужно пробовать через плагин
Не забываем делать бекапы.
ее и можно использовать
перед
вставляю
Затем сразу же после закрытия этой функции вставляю следующую, как Вы и описали:
Никаких изменений. Не хотят ссылки открываться в blank'e.
Что может подкрутить?
еще, бы хорошо было бы чтобы использовали конструкцию типа для подключения блоков в слайдбар, ибо при установке нескольких плагинов пересекающиеся блоки могут затираться
Попробуйте последнюю версию отсюда + habr
У себя сделал, работает.
i.min.us/ieyXmI.png
создать в темплейте файл menu.page.tpl
и в нем прописать меню для статичных страниц по аналогии с другими ххх.menu.tpl
используя для выяснения активной страницы первого уровня
и для второго
для третьего
итд
Ответ на свой вопрос вы можете получить непосредственно у Яндекса:
http://webmaster.ya.ru/replies.xml?item_no=325
http://company.yandex.ru/rules/optimization/index.xml
http://help.yandex.ru/webmaster/?id=995342
И про рекламу тоже:
http://webmaster.ya.ru/replies.xml?item_no=3772
livestreet v0.4.1
Вот так я думаю будет лучше…
2)http://learn.iis.net/page.aspx/557/translating-htaccess-content-to-iis-webconfig/
3)пишем свой рул так как путем
импорта работать не будет
4) не забываем про define('SYS_OFFSET_REQUEST_URL',1);
и про права для папока в системе
5) получаем долгожданный web.config
И будет счастье!