Forums / National / Russian / Тех. поддержка / alt в img

alt, img

vlad555
#1 2009-05-27 16:38
Добрый день! Вопрос в следующем: есть ли возможность на cotonti сделать вывод в alt="" в ББкоды
<img src="$1" alt="" /> 
<a rel="thumbnail" href="$1"><img src="$2" alt="" /></a>
описания из pfs? И как это реализовать?
Dayver
#2 2009-05-27 23:44
ИмяШаблонЗамена
img\[i mg=((?:http://|https://|ftp://)?[^\]"\';:\?]+\.(?:jpg|jpeg|gif|png)) title=(.+?)\]((?:http://|https://|ftp://)?[^"\';:\?\[]+\.(?:jpg|jpeg|gif|png))\[/img\]<a href="$1" rel="thumbnail"><img src="$3" alt="$2" border="0" /></a>

в итоге можно использовать ббкод вида
[img=datas/users/1-image_472.jpg alt=Создан пульт дистанционного управления мозгом]datas/thumbs/1-image_472.jpg[/img]
[/]
Pavlo Tkachenko aka Dayver
Azazello
#3 2009-05-30 16:43
Вопрос этот еще с времен Seditio тянется, почему нельзя сделать так что бы описания к картинкам из PFS подхватывались и выводились в alt. Почему это до сих пор не реализовано в Cotonti ?
Sergeich
#4 2009-05-30 17:43
Согласен, нужно уже прописать эту подстановку альта один раз и забыть. Я бы и сам прописал, но блин не понимаю как это сделать - там жабаскрипт плюс в бб-кодах некая сложная конструкция. Из-за этого поисковики хреново мои картинки индексируют.
Boss
#5 2009-06-23 00:12
Я сделал так. Описания из PFS подставляются картинкам и галереям. Для этого используются две функции в parser.php. Парсер данный отрабатывается перед стандартным парсингом. В настроках нужно выбрать именно этот режим работы. В коде присутствует некоторая заточка под особенности сайта и плагин slimbox. Но кому надо, тот думаю подправит под себя немного.

function hw_sed_bbcode_pict($mt)
	{
	if($mt[1] == 'img' || $mt[1] == 'thumb')
            {
		global $db_pfs, $cfg;
		
		// Если это простая картинка.
            if(count($mt) == 4 && $mt[1] == 'img' && $mt[3] == 'img')
                  {
    			//    [0] => [img]url/картинка.jpg[/img]
			//    [1] => img
			//    [2] => url/картинка.jpg
			//    [3] => img

                  // Полный путь на картинку. Исполоьзуются средства защиты.
                  $file_url = sed_cc($mt[2]);
                  $file_url = str_replace('&#', '', $file_url);

			// Если картинка из PFS. $cfg['pfs_dir']="datas/users/"
			if(ereg($cfg['pfs_dir'], $file_url))
				{
				// Имя картинки и скорректирован полный путь.
				$file_name = str_replace($cfg['pfs_dir'], '', $file_url);
				$file_name = str_replace("/", "", $file_name);
				$file_url = $cfg['pfs_dir'].$file_name;
				}
                  }

		// Иначе если это сокращенный thumb.
            elseif(count($mt) == 4 && $mt[1] == 'thumb' && $mt[3] == 'thumb')
                  {
    			//    [0] => [thumb]url/картинка.jpg[/thumb]
			//    [1] => thumb
			//    [2] => url/картинка.jpg
			//    [3] => thumb
                  
                  // Полный путь на картинку. Исполоьзуются средства защиты.
                  $file_url = sed_cc($mt[2]);
                  $file_url = str_replace('&#', '', $file_url);

                  // Имя полной картинки и скорректирован полный путь.
			$file_name = str_replace($cfg['pfs_dir'], '', $file_url);
			$file_name = str_replace('/', '', $file_name);
			$file_url = $cfg['pfs_dir'].$file_name;

                  // Скорректирован полный путь малой картинки.
			$file_url_small = str_replace($cfg['th_dir'], '', $file_name);
			$file_url_small = str_replace("/", "", $file_url_small);
			$file_url_small = $cfg["th_dir"].$file_url_small;
			}

		// Иначе если это картинка с миниатюрой.
            elseif(count($mt) == 5 && $mt[1] == 'img' && $mt[4] == 'img')
                  {
                  //    [0] => [img=url/большая.jpg]url/маленькая.jpg[/img]
			//    [1] => img
			//    [2] => url/большая.jpg
			//    [3] => url/маленькая.jpg
			//    [4] => img
                  
                  // Полный путь на полную картинку. Исполоьзуются средства защиты.
                  $file_url = sed_cc($mt[2]);
                  $file_url = str_replace('&#', '', $file_url);

                  // Полный путь на малую картинку. Исполоьзуются средства защиты.
                  $file_url_small = sed_cc($mt[3]);
                  $file_url_small = str_replace('&#', '', $file_url_small);
                  
			// Если картинка из PFS.
			if(ereg($cfg['pfs_dir'], $file_url) || ereg($cfg['th_dir'], $file_url_small))
				{
				$file_name = str_replace($cfg['pfs_dir'], '', $file_url);
				$file_name = str_replace('/', '', $file_name);
				}
                  }

		// Иначе если это полный thumb.
            elseif(count($mt) == 5 && $mt[1] == 'thumb' && $mt[4] == 'thumb')
                  {
                  //    [0] => [thumb=url/большая.jpg]url/маленькая.jpg[/thumb]
			//    [1] => thumb
			//    [2] => url/маленькая.jpg
			//    [3] => url/большая.jpg
			//    [4] => thumb
	
                  // Пример: [thumb=datas/thumbs/1-behold_x7_scr01.jpg]1-behold_x7_scr01.jpg[/thumb]
                  // Вначале маленькая картинка!
                  
                  // Полный путь на малую картинку. Исполоьзуются средства защиты.
                  $file_url_small = sed_cc($mt[2]);
                  $file_url_small = str_replace('&#', '', $file_url_small);

                  // Полный путь на полную картинку. Исполоьзуются средства защиты.
                  $file_url = sed_cc($mt[3]);
                  $file_url = str_replace('&#', '', $file_url);

                  // Скорректирован полный путь малой картинки.
			$file_url_small = str_replace($cfg['th_dir'], '', $file_url_small);
			$file_url_small = str_replace("/", "", $file_url_small);
			$file_url_small = $cfg["th_dir"].$file_url_small;

                  // Имя полной картинки и скорректирован полный путь.
			$file_name = str_replace($cfg['pfs_dir'], '', $file_url);
			$file_name = str_replace('/', '', $file_name);
			$file_url = $cfg['pfs_dir'].$file_name;
                  }

		// Иначе если это картинка с описанием (старый сайт на seditio).
            elseif(count($mt) == 4 && $mt[1] == 'img')
                  {
    			//    [0] => [img=описание]url/картинка.jpg[/img]
			//    [1] => img
			//    [2] => описание
			//    [3] => url/картинка.jpg

                  // Полный путь на картинку. Исполоьзуются средства защиты.
                  $file_url = sed_cc($mt[3]);
                  $file_url = str_replace('&#', '', $file_url);

			// Если картинка из PFS. $cfg['pfs_dir']="datas/users/"
			if(ereg($cfg['pfs_dir'], $file_url))
				{
				// Имя картинки и скорректирован полный путь.
				$file_name = str_replace($cfg['pfs_dir'], '', $file_url);
				$file_name = str_replace("/", "", $file_name);
				$file_url = $cfg['pfs_dir'].$file_name;
				}
                  // Иначе, берем пришедшие описание.
                  else
                        {
                        // Описание. Исполоьзуются средства защиты.
                        $file_desc = str_replace("'", '', $mt[2]);
                        $file_desc = sed_cc($file_desc);
                        $file_desc = str_replace('&#', '', $file_desc);
                        }
                  }

		// Если имя файла для поиска сформировано - ищем описание из PFS.
		if(strlen($file_name))
			{
			$sql_pfs=sed_sql_query("select pfs_desc from $db_pfs where pfs_file='".$file_name."' limit 1");
			if(sed_sql_numrows($sql_pfs) > 0)
				{
				$out_pfs = sed_sql_fetcharray($sql_pfs);
				$file_desc = $out_pfs['pfs_desc'];
				}
			}

		// Если это картинка с миниатюрой.
		if(strlen($file_url) && strlen($file_url_small))
			{
			$return  = "<a href='".$file_url."'";
			$return .= strlen($file_desc) ? " title='".$file_desc."'" : "";
			$return .= " target='_blank'><img src='".$file_url_small."' class='scale'";
			$return .= strlen($file_desc) ? " alt='".$file_desc."' title='".$file_desc."'" : "";
			$return .= "></a>";
			}

		// Иначе, если это просто картинка.
		elseif(strlen($file_url))
			{
			$return  = "<img src='".$file_url."' class='img'";
			$return .= strlen($file_desc) ? " alt='".$file_desc."' title='".$file_desc."'" : "";
			$return .= ">";
			}

		// Иначе - ошибка.
		else
			{ $return = "error_img"; }

		return $return;
		}
	return '';
	}

function sed_custom_parse($text, $parse_bbcodes = TRUE, $parse_smilies = TRUE, $parse_newlines = TRUE)
      {
      // Коды. Высокоприоритетная обработка!
      $text = preg_replace_callback('`\[code\](.+?)\[/code\]`mis', create_function('$input', 'return("<pre class=\"code\">".sed_bbcode_cdata($input[1])."</pre>");'), $text);
      $text = preg_replace_callback('`\[highlight=([\w\-]+)\](.*?)\[/highlight\]`mis', create_function('$input', 'return("<div class=\"highlight\"><pre class=\"".$input[1]."\">".sed_bbcode_cdata($input[2])."</pre></div>");'), $text);
      
      // Картинки.
      $text = preg_replace_callback('`\[(img|thumb)\]([^\s"\';\?\(\[]+\.(?:jpg|jpeg|gif|png))\[/(img|thumb)\]`', 'hw_sed_bbcode_pict', $text);
      $text = preg_replace_callback('`\[(img|thumb)=([^\s"\';\?\(\[]+\.(?:jpg|jpeg|gif|png))\]([^\s"\';\?\(\[]+\.(?:jpg|jpeg|gif|png))\[/(img|thumb)\]`', 'hw_sed_bbcode_pict', $text);
      $text = preg_replace_callback('`\[(img)=(.+?)\]([^\s"\';\?\(\[]+\.(?:jpg|jpeg|gif|png))\[/img\]`', 'hw_sed_bbcode_pict', $text);

	return $text;
      }

[/][/][/][/]