Перейти к публикации

Рекомендованные сообщения

Хочу написать счетчик кликов по ссылкам, размещенным в полной версии новостей.

Для этого скажите, где в движке находится парсер fullstory.

что-то типо "куда мне написать одну из этих строчек?"

$... = str_replace( '[url=http://','>http://', '[url=/counter.php?http://]','>http://]', $... );

или

$... = str_replace( '<a href="http://','>http://', '<a href="/counter.php?http://]','>http://]', $... );

Полезный совет:

если у Вас есть ссылки, сопоставленные с категориями, то в файле engine/inc/xfields.php в районе строки 589 можно переписать

   $categoryfilter = <<<HTML


  <script type="text/javascript">

  function ShowOrHideEx(id, show) {

	var item = null;


	if (document.getElementById) {

	  item = document.getElementById(id);

	} else if (document.all) {

	  item = document.all[id];

	} else if (document.layers){

	  item = document.layers[id];

	}

	if (item && item.style) {

	  item.style.display = show ? "" : "none";

	}

  }

  function xfInsertText(text, element_id) {

	var item = null;

	if (document.getElementById) {

	  item = document.getElementById(element_id);

	} else if (document.all) {

	  item = document.all[element_id];

	} else if (document.layers){

	  item = document.layers[element_id];

	}

	if (item) {

	  item.focus();

	  item.value = item.value + " " + text;

	  item.focus();

	}

  }

  function onCategoryChange(value) {

	var gpkCat = new Array();

HTML;


	if( $gpkCat = get_vars ("category") ){

	  foreach ($gpkCat as $gpkK => $gpkV) {

		$categoryfilter .= "gpkCat[$gpkK]='{$gpkV['alt_name']}';";

	  }


	  $categoryfilter .= <<<HTML

	  var gpkTxt = document.getElementById( 'full_story' );

	  if( gpkTxt.value.indexOf( 'url=http://host.com/' ) == -1 )

		gpkTxt.value += '[hide][center][url=http://host.com/' + (gpkCat[value]?gpkCat[value]:'') + '/][b]С к а ч а т ь[/b][/url][/center][/hide]';

	  else

		gpkTxt.value = gpkTxt.value.replace( /url\=http\:\/\/host\.com\/[^\/]*\//gi, 'url=http://host.com/' + gpkCat[value] + '/' );

HTML;

	}

вместо host.com подставить свой хост - и при изменении категории будут изменятся все ссылки в сообщении новости.

Данную реализацию написал сам, глюки могут быть.

Изменено пользователем Alive_UA
Ссылка на сообщение
Поделиться на других сайтах

Alive_UA, посмотрел бы уже давно в файле engine/inc/addnews.php что обрабатывает текст класс parse (slasses/parse.cless.php)

Ссылка на сообщение
Поделиться на других сайтах

Нее, меня больше интересует фаил engine/modules/show.full.php

в строку 329 дописал следующее

$row['full_story'] = preg_replace(

   '#<a href="(.*)"([^>]*>.*)</a>#iU',

   '<a href="/redirect.php?\1"\2 <script type="text/javascript" src="/clkc.php?\1"></script></a>',

   $row['full_story']

);

Работает.

Скажите, какие возможны глюки при парсинге?

Например, если ДЛЕ-парсер вставляет между "<a" и "href=" что-либо, оно не будет работать или будет неправильно. Интересно, может ли такое быть?

PS:

/clkc.php Выбирает из БД количество и выводит "document.erite('(число)');"

/redirect.php Считает и перенаправляет; гы, если где-то проверяется HTTP_REFERER, то такой редирект опасен))

В бд индексом является crc32(QUERY_STRING) - как раз интеджер.

Изменено пользователем Alive_UA
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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