Alive_UA 0 Опубликовано: 13 января 2008 Рассказать Опубликовано: 13 января 2008 (изменено) Хочу написать счетчик кликов по ссылкам, размещенным в полной версии новостей. Для этого скажите, где в движке находится парсер 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 подставить свой хост - и при изменении категории будут изменятся все ссылки в сообщении новости. Данную реализацию написал сам, глюки могут быть. Изменено 13 января 2008 пользователем Alive_UA Цитата Ссылка на сообщение Поделиться на других сайтах
Alive_UA 0 Опубликовано: 14 января 2008 Рассказать Опубликовано: 14 января 2008 Автор UP!! Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 14 января 2008 Рассказать Опубликовано: 14 января 2008 Alive_UA, посмотрел бы уже давно в файле engine/inc/addnews.php что обрабатывает текст класс parse (slasses/parse.cless.php) Цитата Ссылка на сообщение Поделиться на других сайтах
Alive_UA 0 Опубликовано: 16 января 2008 Рассказать Опубликовано: 16 января 2008 (изменено) Автор Нее, меня больше интересует фаил 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) - как раз интеджер. Изменено 16 января 2008 пользователем Alive_UA Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.