Перейти к содержанию

siv1987

Пользователи
  • Постов

    278
  • Зарегистрирован

  • Посещение

  • Победитель дней

    27

Сообщения, опубликованные siv1987

  1. В 22.01.2019 в 00:47, Derbrent сказал:

    Может вам собрать нормальны

    плагин

    Если дойдут руки до него. На что я сейчас  готов это просто переписать его под нормальный формат IPS с поддержкой лэнгов и добавлением опции с условием группы и спасибо за пост.
    А пока выслушаю ваши предложения по формату плагина. Как вы себе представляете работу тега, какой функционал в нем не хватает.

  2. \system\Content\Reactable.php
    найти

    		/* React to own content */
    		if ( !\IPS\Settings::i()->reputation_can_self_vote AND $this->author()->member_id == $member->member_id )
    		{
    			return FALSE;
    		}

    Ниже добавить

    		if( $this instanceof \IPS\forums\Topic\Post )
    		{
    			if( $member->member_id AND isset( $this->_reactions[ $member->member_id ] ) )
    			{
    				return FALSE;
    			}
    		}

    При оценки пользователь сможет удалить или изменить реакцию.
    После обновления страницы - нет.

  3. Автор этого плагина просто напросто отбитый наркоман, а в IPS он проездом.
    Весь этот наркоманский код
     

    					$seuchas = time(); 
    					$nado_reg = strtotime($regis)+(60*60*24*$treg);
    
    $date = $nado_reg;
    $sec=$date - time();
    $days=floor(($date - time()) /86400);
    $h1=floor(($date - time()) /3600);
    $m1=floor(($date - time()) /60);
    $hour=floor($sec/60/60 - $days*24);
    $hours=floor($sec/60/60);
    $min=floor($sec/60 - $hours*60);
     
    switch(substr($days, -1)){
    case 1: $o='Остался';
    break;
    case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 0: $o='Осталось';
    break;}
     
    switch(substr($days, -2)){
    case 1: $d='день';
    break;
    case 2: case 3: case 4: $d='дня';
    break;
    default: $d='дней';
    }
     
    switch(substr($hour, -2)) {
    case 1: $h='час';
    break;
    case 2: case 3: case 4: $h='часа';
    break;
    default: $h='часов';
    }
     
    switch(substr($min, -2)) {
    case 1: $m='минута';
    break;
    case 2: case 3: case 4: $m='минуты';
    break;
    default:$m='минут';
    }
    
    if ($sec>0) $timer .='<strong>'.$o.':</strong> ';
    if ($days>0) $timer .= $days.' '.$d;
    if ($h1>0) $timer .= ' '.$hour.' '.$h;
    if ($m1>0) $timer .= ' '.$min.' '.$m;
    if ($sec<0) $timer = "";

    можно уместить в несколько строчек

    $have = '';
    $need = \IPS\DateTime::create()->sub( new \DateInterval( 'P'.$treg.'D' ) );
    if( $need < \IPS\Member::loggedIn()->joined ){
    	$have = 'Вам осталось ' . \IPS\DateTime::formatInterval( $need->diff( \IPS\Member::loggedIn()->joined ), 2 );
    }
    $msg .= 'Вы должны быть зарегестированы не менее '.$treg .' дней. '.$have;

    Или что-то типа

    $msg .= 'Вы должны быть зарегестированы не менее '.$treg .' дней.' . ( \IPS\Member::loggedIn()->member_id ? 'Вы провели на форуме ' . \IPS\DateTime::formatInterval( \IPS\DateTime::create()->diff( \IPS\Member::loggedIn()->joined ), 2 )  : '' );

     

    Почему бы не сделать необязательные параметры - [hide], [hide=1], [hide=1,2] и тд.
    Почему бы не добавить именные параметры чтобы не путаться с расположением [hide p=1 d=3 r=2]  как это было в тройке. Распарсить эти параметры нет ничего сложного обычным explode.
    Почему не добавить для времени регистрации префикс с указанием типа m - месяц, y - годы.
    Плагин сырой и не доделанный, а автор еще умудряется за это деньги клянчить.

    Перенос строки в теге не работает потому что вы регулярном выражение его не учитывается.
    Нужно

    '!\[hide=([0-9,]+)\](.+?)\[\/hide\]!i'

    Заменить на

    '!\[hide=([0-9,]+)\](.+?)\[\/hide\]!is'

     

  4. В 17.01.2019 в 11:29, omni сказал:

    На сколько я понял, глобал не отредактировать из-за типа столбца "template_content" т.к слишком большой объем кода. И стиль к сожалению не проредактировать, есть выход сменить тип столбца с mediumtext на largetext. 

    Поле с типом mediumtext в mysql может хранить 16,777,215 символов (если учесть что шаблоны это однобайтовые  ASCII символы, то это примерно ~16 мб). Вопрос, каким образом можно было перейти это значение, если сам файл целиком со всеми шаблонами весит всего лишь 0,38 мб? Вы что-то путаете и причина по которой не можете отредактировать шаблон явно не в размере поле mysql.

  5. Цитата

    {lang=uk_UA}Привіт{/lang}

    Я же написал, первые два символа {lang=uk}Привіт{/lang}
     

    1 час назад, Duncan сказал:

    И можно ли как-то такое делать с заголовками?

    Заголовок темы принято называть тайтлом (title). Пишите конкретнее чтобы было понятно.
    С тайтлами сложнее, там генерируется чпу и нет определенного метода для его вывода.

  6. 3 часа назад, Derbrent сказал:

    То что хочу реализовано на форуме WT, юзер заходит в раздел создает тему. При этом другие юзеры могут только читать, но отвечать в теме имеет право только сам автор, ну соответственно администрация сайта.

    На удивление сделать это не сложно. В \IPS\forums\Topic есть такой метод как canComment, который отвечает за право пользователя комментировать.
    Открыть
    \applications\forums\sources\Topic\Topic.php
    Найти
     

    	public function canComment( $member=NULL )
    	{

    Ниже добавить

    		if( !$member AND in_array( $this->forum_id, array( ид_раздела ) ) AND ( \IPS\Member::loggedIn()->member_id != $this->starter_id AND !\IPS\Member::loggedIn()->isAdmin() ) )
    		{
    			return FALSE;
    		}

    ид_раздела - ид форума где право отвечать имеет только топик стартер.

  7. В принципе нет ничего сложного сделать такой плагин с заменой по регулярному выражению. Можно использовать метод \IPS\forums\Topic\Post::content() который выводит содержимое сущности. В качестве атрибутов языка используются первые две буквы локали языка. ru_RU - ru, en_US - en и тд.
    Плагин получился очень простым, единственный недостаток что сообщения парсятся "на лету", но как правило сейчас уже все используют этот метод.


    image.thumb.png.ed9e719958b5ca828c30431ee57f0bb8.png

    image.thumb.png.67a527d527e01d5c7bb675861803fd0d.png

    Hide Content By Lang.xml

  8. Некропост mode

    Очень просто сделать такой редирект через мод_реврайт

    В .htaccess корне сайте site.ru/.htaccess добавить
     

    RewriteEngine On
    RewriteRule ^forum/index\.php(/.*)$ /forums$1 [R=301,L]
    RewriteRule ^forum/(index\.php)? /forums/ [R=301,L]

     

  9. В файлах
    /applications/links/sources/Link/Comment.php
    /applications/links/sources/Link/Link.php
    /applications/links/sources/Link/Review.php

    Найти и удалить

    \IPS\Content\ReportCenter,


    А вообще странно что на одном форуме не работает, по идее он не должен работать на всех 4.3, по крайней мере частично. И обновится все таки желательно, версия уже старая бог знает что там еще изменилось в 3x.

  10. Есть еще вариант с правкой шаблона

    Customization -> %Тема% -> core -> global -> global -> includeMeta
    Найти

    {{foreach \IPS\Output::i()->metaTags as $name => $content}}

    Ниже добавить

    	{{if $name == 'robots' AND request.app == 'core' AND request.module == 'search' AND request.tags}}
    		{{continue;}}
    	{{endif}}

     

  11. Теги относятся к модулю поиска, а результаты поиска по умолчанию закрыты для индексации.

    Открыть \applications\core\modules\front\search\search.php
    Найти
     

    		\IPS\Output::i()->metaTags['robots'] = 'noindex'; // Tell search engines not to index search pages

    Заменить на
     

    		if( !\IPS\Request::i()->tags )
    		{
    			\IPS\Output::i()->metaTags['robots'] = 'noindex'; // Tell search engines not to index search pages
    		}

     

  12. 2 часа назад, Catalo сказал:

    мое средство работает, боты регаться перестали

    Отчет как то пустовато получился. Не очень объективно, учитывая сколько у вас там средств защиты от ботов. Нужно как минимум взять все ип адреса регистрации с момента установки этой модификации и проверить по спамбазе. Потом взять такой же промежуток времени до установки этого поле и также проверить ип по базе. Понятное дело что некоторые ип на момент регистрации могут быть чистыми, но такое как правило бывает редко. Прочие факторы должны быть равны, чтобы не искажали результат.

  13. Это конечно шляпа, текст должен заменятся между начальным и конечным тегом, а не просто по ббкоду. Такого даже в тройке небыло.

    Отключить эти ббкоды можно правкой кода в файле system\Text\Parser.php
    Найти
     

    		foreach ( \IPS\Application::allExtensions( 'core', 'BBCode', $member ) as $key => $bbcode )
    		{
    			if ( $bbcode->permissionCheck( $member, $area ) )
    			{
    				list( $app, $tag ) = explode( '_', $key );
    				$return[ $tag ] = $bbcode->getConfiguration();
    			}
    		}

    Ниже добавить
     

    		$return = array_diff_key( $return, array_flip( array( 'u', 's', 'i', 'b' ) ) );

    Через редактор оформление этих ббкодов по прежнему будет доступно.

  14. 1 час назад, Dusty сказал:

    2C145/D Загруженный файл является недопустимым

    Боюсь спросить, вы точно xml файл устанавливаете а не архив? Не перепутали плагин с приложениями? Другие плагины при этом устанавливаются нормально? Это ошибка говорит о том, что не удается прочитать xml файл и она не связана с плагином.
    Последняя актуальная бесплатная версия отлично устанавливается и прекрасно работает на IPS 4.3.

×
×
  • Создать...