+4.51
Рейтинг
42.63
Сила
  • avatar oduvan
  • 0
Года 2 назад реализовывал для одного заказчика.
Backbone + Soket.io + Node.js + Redis.io
  • avatar 1d10t
  • 0
подпилил aceblockmanager и получилось
в нем косяк с наследованием
вот подпиленый
Тоже озадачился этой проблемой, надоело что поисковики видят эти кракозябрики.

Сначала думал дело в настройках кодировок или базе, оказалось совсем иначе.

В файле function.php есть функция:
function func_text_words($sText,$iCountWords) {
	$sText=str_replace("\r\n",'[<rn>]',$sText);
	$sText=str_replace("\n",'[<n>]',$sText);
		
	$iCount=0;
	$aWordsResult=array();
	$aWords=preg_split("/\s+/",$sText);	
	for($i=0;$i<count($aWords);$i++) {
		if ($iCount>=$iCountWords) {
			break;
		}
		if ($aWords[$i]!='[<rn>]' and $aWords[$i]!='[<n>]') {
			$aWordsResult[]=$aWords[$i];
			$iCount++;
		}
	}
	$sText=join(' ',$aWordsResult);	
	$sText=str_replace('[<rn>]'," ",$sText);
	$sText=str_replace('[<n>]'," ",$sText);	
	return $sText;	
}


В ней строчку:
$aWords=preg_split("/\s+/",$sText);

Меняем на:
$aWords=preg_split("/\s+/u",$sText);


preg_split — некорректно отрабатывает без параметра u

После этого кракозябры исчезнут.

У себя делал на 3 версии LS, но функция в том же виде и в 4 версии, так-что может будет ещё кому полезна.

Пологаю проблема имеет определённую зависимость от хостинга, или от версии PHP и проявляться может не всегда.
  • 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);
	}
Как говорится в одном древнем анекдоте: «Баранов я тебе не дам, но зато дам тебе совет...» :)

Есть файл ActionIndex.class.php
Там есть ф-ция EventIndex()
А там код:
$aResult=$this->Topic_GetTopicsGood($iPage,Config::Get('module.topic.per_page'));
$aTopics=$aResult['collection'];

В $aTopics и есть набор топиков, который будет выводиться на главной странице. В там и копай.
  • avatar x3r0x
  • 2
Я сделал следующим образом:

В файле Text.class.php нашел код

// Разрешённые параметры тегов		
		$this->oJevix->cfgAllowTagParams('img', array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
		$this->oJevix->cfgAllowTagParams('a', array('title', 'href', 'rel'));		
		$this->oJevix->cfgAllowTagParams('cut', array('name'));
		$this->oJevix->cfgAllowTagParams('object', array('width' => '#int', 'height' => '#int', 'data' => '#link'));
		$this->oJevix->cfgAllowTagParams('param', array('name' => '#text', 'value' => '#text'));
		$this->oJevix->cfgAllowTagParams('embed', array('src' => '#image', 'type' => '#text','allowscriptaccess' => '#text', 'allowfullscreen' => '#text','width' => '#int', 'height' => '#int', 'flashvars'=> '#text', 'wmode'=> '#text'));


и ниже добавил строчку:
$this->oJevix->cfgAllowTagParams('video', array('src', 'autoplay' => '#text', 'controls' => '#text', 'height' => '#int', 'loop' => '#text', 'preload'=> '#text', 'width' => '#int', ));


Теперь все работает.
  • avatar ort
  • 1
как правильно делать реврайты для 0.4 описано здесь
  • avatar simca
  • 1
все сам разобрался:
<a href="http://www.facebook.com/sharer.php?u={$oTopic->getUrl()}" title="Добавить эту статью в Facebook" target="_blank" rel="nofollow">Facebook <img align="absmiddle" src="{$DIR_STATIC_SKIN}/images/facebook.png" border="0" /></a>
  • avatar 1d10t
  • 0
Спасибо. Все сделал как доктор прописал

Одно только замечание. Или сервер не выдает заголовки, или браузер не читает, но лучше принудительно выдать header в каждом шаблоне в начале дописать:
{php}header('Content-type: application/xml; charset="UTF-8"', true);{/php}
  • avatar k2fl
  • 2
угу
а вот так только на /index
{if $sAction=='index' and $sEvent==''}
  • avatar ort
  • 4
{$smarty.const.SITE_HOME_NAME}