+0.48
Рейтинг
5.81
Сила

Illarion

У меня была такая же проблема как Вы описываете, мне её таки не удалось решить полностью, НО максимально возможно я это сделал используя максимальное количество функций у плагина, переопределение, наследование, подставка function…

Вариант с плагинами не удобен
как раз вариант с Плагином самый удобный, так как на данный момент в LS не будут переименовываться функции и вряд ли измениться основа а так же функционал плагинов позволяет максимально возможно интегрироваться в движок LS…
У меня есть один плагин который очень много требует изменений в движке, но я обошолся всего несколькими изменениями которые не могли быть вставленными по другому, допустим мне нужна была другая система обработки изображений, мне пришлось дублировать некоторые функции в LiveImage…

Самое практичное в таком случае, это на мой взгляд делать в коде пометки которые тебе дадут возможность видеть сразу измененные куски кода, а затем создать в корне сайта текстовый документ в котором помечать какие файлы в движке исправлены, это позволит очень быстро весь исправленный функционал перенести с одной версии LS на другую…

Возможно у кого то есть более гибкая система такого преобразования…
  • avatar ort
  • 0
Если можешь в двух словах объяснить буду очень благодарен.
плагин перенаправляет необходимые запросы (подходят под регулярку) на экшен error, далее в через хук init_action они отлавливаются, обрабатываются и перенаправляются на нужные экшены

В моём решении мне больше всего не нравиться вот этот кусок кода
ниже уже ответили, нужно пробовать через плагин
  • avatar verdet
  • 2
Может кому пригодится. Для БД 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_%';


Не забываем делать бекапы.
  • avatar xyz
  • 0
protected function ParseUrl() {
		$sReq = $this->GetRequestUri();
		$aRequestUrl=$this->GetRequestArray($sReq);
		
		/**
		 * Damn hack  
		 */
		$sHost = $_SERVER['HTTP_HOST'];
		$aDomain = explode('.', $sHost);
		// user.site.ru
		if (count($aDomain) == 3) {
			if (isset($aRequestUrl[0]) && ($aRequestUrl[0] == 'my')) {
				self::$sAction = 'my';
				self::$sActionEvent = $aDomain[0];
				array_shift($aRequestUrl);
				self::$aParams=$aRequestUrl;
			} else {
				self::$sAction = 'profile';
				self::$sActionEvent = $aDomain[0];
				self::$aParams=$aRequestUrl;
			}
			
			return;
		}

		self::$sAction=array_shift($aRequestUrl);
		self::$sActionEvent=array_shift($aRequestUrl);
		self::$aParams=$aRequestUrl;
	}
база стран в плагине экстраверта есть
ее и можно использовать
Давно уже перенес, в каталоге валяется неактивный с 17 ноября) dl.dropbox.com/u/8957070/extcity_042.zip
  • avatar sartr
  • 0
В /engine/modules/text/Text.class.php
перед
return $sResult;

вставляю
$sResult=$this->MakeUrlNoIndex($sResult);


Затем сразу же после закрытия этой функции вставляю следующую, как Вы и описали:
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.
Что может подкрутить?
пользуюсь похожей конструкцией еще с плагина livestreet.ru/blog/6030.html
public function Activate() {
		if (!$this->isFieldExists('user_soccom')) {
			$this->ExportSQL(dirname(__FILE__).'/dump.sql');
		}
    return true;
	}

	public function Init() {

  }

  protected function isFieldExists($sFieldName) {
		$sQuery="SHOW FIELDS FROM ".Config::Get('db.table.user');
    $return = false;
    if ($aRows=$this->Database_GetConnect()->select($sQuery)) {
      foreach ($aRows as $key => $aRow){
        if ($aRow['Field'] == $sFieldName){
          $return = true;
        }
      }
      return $return;
		}
		return false;
	}

еще, бы хорошо было бы чтобы использовали конструкцию типа
$a1 = Config::Get('block.rule_index_blog.blocks.right');
$a2 = array('adunits'=>array('params'=>array('plugin'=>'adunits'), 'priority'=>10));
Config::Set('block.rule_index_blog.blocks.right', array_merge ($a1, $a2));
для подключения блоков в слайдбар, ибо при установке нескольких плагинов пересекающиеся блоки могут затираться
Вы взяли архив из этого поста?
Попробуйте последнюю версию отсюда + habr
У себя сделал, работает.
чтобы вынести меню профиля вверх, надо в путь_до_шаблона/schemes/default/style.css добавить код:
#header { overflow: visible; position: relative; }
#header .pages.profile { position: absolute; right: 0; top: -35px; background: none; }
#header .pages.profile li a { color: #5F6691; }
#header .pages.profile li a.username { color: #9197BC; }
#header .pages.profile .messages.new { color: #9197BC; }
i.min.us/ieyXmI.png
Выводится первое сообщение, сделано с помощью модификаторов смарти — {$oTalk->getText()|strip_tags|truncate:120:"..."}
А это так принципиально? Я, например, на время разработки сайта отключил функцию слияния и сжимания JS и CSS файлов.
  • avatar zoltes
  • 0
правильнее было бы добавить в \plugins\page\templates\skin\ИМЯСКИНА\actions\ActionPage\page.tpl
{include file='header.tpl' menu='page'}

создать в темплейте файл menu.page.tpl
и в нем прописать меню для статичных страниц по аналогии с другими ххх.menu.tpl
используя для выяснения активной страницы первого уровня
{if $sEvent=='workshop'}class="active"{/if}

и для второго
{if $aParams[0]=='rearshok'}class="active"{/if}

для третьего
{if $aParams[1]=='something'}class="active"{/if}

итд
Ссылки не видно… Дубль
Ответ на свой вопрос вы можете получить непосредственно у Яндекса:
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
  • avatar xyz
  • 0
в /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);
	}
  • avatar flax
  • 0
AddMenu вместо добавления пункта в меню, заменяет его полностью на menu.blog.tpl.
$this->Viewer_AddMenu('blog',Plugin::GetTemplatePath(__CLASS__).'/menu.blog.tpl');

livestreet v0.4.1
##### [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 #####


Вот так я думаю будет лучше…
  • avatar it_
  • 0
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);
и про права для папока в системе

5) получаем долгожданный web.config


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^arkanar\.org$" />
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="http://www.arkanar.org/{R:1}" />
    </rule>
    <rule name="Imported Rule 2" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>
</system.webServer>
</configuration>


И будет счастье!