С разработчиком связалась, сказал, что проверит данную проблему (видимо, всё подразумевалось, что использовать можно несколько раз). Но когда он проверит - кто его знает, а мне, понятное дело, нужно, как всегда, быстрее.
Я смотрю код - не могу найти ошибку.
Была бы благодарна, если бы кто-нибудь помог

Т.е. ещё раз сформулирую проблему: данный плагин позволяет пролистывать текст внутри статьи как слайд-шоу. При использовании один раз - всё в порядке. Во второй раз цепляется текст из первого случая использования.
<?php
/*
* @name JoomSimple Steps 1.03
* @type Joomla 1.5 Plugin
* @author Eugene Bendersky
* @website http://jsimple.info
* @email ugn@jsimple.info
* @copyright Copyright (C) 2010 JoomSimple. All rights reserved.
* @license http://www.gnu.org/licenses/gpl.html - GNU GENERAL PUBLIC LICENSE
*
* JoomSimple Steps Plugin is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
class plgContentJoomSimpleSteps extends JPlugin {
function plgContentJoomSimpleSteps( &$subject, $config ) {
parent::__construct( $subject, $config );
}
function onPrepareContent( &$article, &$params, $limitstart ) {
$uri = JRequest::getURI();
if( strpos( 'J'. $uri, 'administrator/' ) ){
return true;
}
global $mainframe;
$db = JFactory::getDBO();
if ( JString::strpos( $article->text, 'simplesteps' ) === false ) {
return true;
}
$title_tag = $this->params->get( 'title_tag' );
$step_tag = $this->params->get( 'link_tag' );
$slide_border = $this->params->get( 'slide_border' );
$border_w = $this->params->get( 'border_width' );
$text_color = $this->params->get( 'text_color' );
$border_color = $this->params->get( 'border_color' );
$font_size = $this->params->get( 'font_size' );
$controls_position = $this->params->get( 'controls_position' );
if ( $this->params->get( 'jss_enable' ) == 0 ) {
$article->text = preg_replace( array('/{simplesteps.+}/U', '/{\/simplesteps}/U', '/<'.$title_tag.'>.+<\/'.$title_tag.'>/sU', '/<'.$step_tag.'>.+<\/'.$step_tag.'>/sU'), '', $article->text );
return true;
}
preg_match('/{simplesteps\|width\:(?P<width>\d+)}(?P<html>.+){\/simplesteps}/sU', $article->text, $steps);
$blockwidth = $steps['width'].'px;';
$steps = explode('<hr />', $steps['html']);
$simple_steps = array();
foreach($steps as $k => $v) {
if(preg_match("/<$title_tag>(?P<name>.+)<\/$title_tag>/sU", $v, $temp))
$simple_steps[$k]['name'] = $temp['name'];
if(preg_match("/<$step_tag>(?P<step>.+)<\/$step_tag>/sU", $v, $temp))
$simple_steps[$k]['step'] = $temp['step'];
if($k == 1)
$simple_steps[$k]['prev'] = $simple_steps[0]['name'];
elseif($k > 1)
$simple_steps[$k]['prev'] = $simple_steps[$k-2]['step'];
else
$simple_steps[$k]['prev'] = null;
$simple_steps[$k]['content'] = str_replace(array("<$title_tag>", "</$title_tag>", "<$step_tag>", "</$step_tag>"), '', str_replace("<$title_tag>".$simple_steps[$k]['name']."</$title_tag>", "", str_replace("<$step_tag>".( isset($simple_steps[$k]['step'])? $simple_steps[$k]['step'] : '')."</$step_tag>", "", $v)));
}
$document =& JFactory::getDocument();
$document->addScriptDeclaration('
var jss_scroller;
window.addEvent("domready", function(){
jss_scroller = new Fx.Scroll("jss");
jss_scroller.scrollTo(0,0);
});
window.addEvent("domready", function() {
window.extend({
getHeight: function(){
if (this.webkit419) return this.innerHeight;
return document.documentElement.clientHeight;
}
});
});
');
$document->addStyleDeclaration('
.jsimplesteps {
overflow:hidden;
position:relative;
width:'.$blockwidth.';
'.($slide_border == 1 ? ('border: '.intval($border_w).'px solid '.$border_color.';') : '' ).'
}
.jss_panes {
clear:both;
width:10000em;
}
.jss_active {
}
.jss_pane {
width:'.$blockwidth.';
padding-top: 20px;
float:left;
}
.jss_name {
margin-bottom: 20px;
'.(($controls_position == 1 || $controls_position == 2)? 'margin-top: 80px;' : '').'
text-align:center !important;
}
.jss_name span {
font-size:'.$font_size.';
color:'.$text_color.';
text-align:center;
}
.jss_prev {
margin-top:20px;
text-align:left !important;
}
.jss_prev span {
border:'.intval($border_w).'px solid '.$border_color.';
cursor:pointer;
font-weight:bold;
margin:10px;
padding:10px;
}
.jss_contents {
margin-bottom:70px;
'.($slide_border == 1 ? 'margin-left:15px;
margin-right:15px;' : '').'
}
.jss_step_top {
margin-top:20px;
text-align:right !important;
position: absolute;
top: 0;
width: 100%;
}
.jss_step_bottom {
margin-top:20px;
text-align:right !important;
position: absolute;
bottom: 0;
width: 100%;
}
.jss_step_top span, .jss_step_bottom span {
border:'.intval($border_w).'px solid '.$border_color.';
cursor:pointer;
font-weight:bold;
margin:10px;
padding:10px;
float: right;
color:'.$text_color.';
}
.jss_step_top span.prev, .jss_step_bottom span.prev {
float:left;
}
.jss_thanks {
float:right;
text-align:right;
margin:10px;
color:#999999;
font-size:0.8em;
}
.jss_thanks a {
text-decoration:none;
color:#999999;
line-height:0.9;
}
');
$result = '<div id="jss" class="jsimplesteps"><div id="jss_panes" class="jss_panes">';
foreach($simple_steps as $step_n => $step) {
$result .= '<div class="jss_pane'.($step_n == 0 ? ' jss_active' : '').'">';
$result .= '<div class="jss_name"><span>'.$step['name'].'</span></div>';
$temp_controls =
($step_n > 0
?
'<span class="prev" onclick="jss_scroller.scrollTo('.($step_n-1)*intval($blockwidth).', 0)">'.$step['prev'].'</span>'
:
'')
.
($step_n < (count($simple_steps)-1)
?
('<span onclick="jss_scroller.scrollTo('.($step_n+1)*intval($blockwidth).', 0)">'.$step['step'].'</span>')
:
'');
$controls_top = '<div class="jss_step_top">'.$temp_controls.'</div>';
$controls_bottom = '<div class="jss_step_bottom">'.$temp_controls.'</div>';
if($controls_position == 1 || $controls_position == 2)
$result .= $controls_top;
if($controls_position == 1 && $step_n == (count($simple_steps)-1))
$result .= '<div class="jss_thanks"><a href="http://joomsimple.com">Joomla Extensions</a> <br />by JoomSimple</div>';
$result .= '<div class="jss_contents">'.$step['content'].'</div>';
if($controls_position == 0 || $controls_position == 2) {
$result .= $controls_bottom;
if($step_n == (count($simple_steps)-1))
$result .= '<div class="jss_thanks"><a href="http://joomsimple.com">Joomla Extensions</a> <br />by JoomSimple</div>';
}
$result .= '</div>';
}
$result .= '</div></div>';
$article->text = preg_replace('/{simplesteps.+{\/simplesteps}/sU', $result, $article->text);
}
}
?>