вопрос
На этом сайте нашел хак.
Найти код в \engine\modules\show.full.php
В файле шаблона полной новости код [xfvalue_actors symbol="," sum="3"]
Все работает в случае если обрезать значения надо максимум до 9
Если я указываю " sum="10" то на выходе получаю 1 значение. К примеру актеров 20 а мне нужно чтобы вывело первых 10
Пожалуйста подскажите что надо поменять в коде чтобы срабатывало с двухзначным числом
Чтобы срабатывало [xfvalue_actors symbol="," sum="10"] или [xfvalue_actors symbol="," sum="11"] любое число двухзначное
Найти код в \engine\modules\show.full.php
$tpl->set( $matches[0], $xfieldsdata[$value[0]] );
}
после вставитьif ( preg_match( "#\\[xfvalue_{$preg_safe_name} symbol=\"(.*)\".+?sum.+?\\]#iSu", $tpl->copy_template, $matches ) ) {
$matchesSy = $matches[1][0];
preg_match( "#\\[xfvalue_{$preg_safe_name}.+?symbol.+?sum=\"(.*)\"\\]#iSu", $tpl->copy_template, $matches );
$matchesSu = $matches[1][0];
$xfieldsdataList = explode($matchesSy,$xfieldsdata[$value[0]]);
$xfieldsdataCount = count($xfieldsdataList);
$xfieldsdataSum = "";
for ($ixs=0; $ixs<$matchesSu; $ixs++) {
$xfieldsdataSum .= trim($xfieldsdataList[$ixs]);
if ($ixs<$matchesSu - 1) $xfieldsdataSum .= ", ";
}
$tpl->set( $matches[0], $xfieldsdataSum );
}
В файле шаблона полной новости код [xfvalue_actors symbol="," sum="3"]
Все работает в случае если обрезать значения надо максимум до 9
Если я указываю " sum="10" то на выходе получаю 1 значение. К примеру актеров 20 а мне нужно чтобы вывело первых 10
Пожалуйста подскажите что надо поменять в коде чтобы срабатывало с двухзначным числом
Чтобы срабатывало [xfvalue_actors symbol="," sum="10"] или [xfvalue_actors symbol="," sum="11"] любое число двухзначное
if (preg_match("#\\[xfvalue_{$preg_safe_name} symbol=['\"](.+?)['\"]\s?(sum=['\"](.+?)['\"])?\\]#i", $tpl->copy_template, $matches)) {
$matches[1] = $matches[1] ?: ',';
$xfArrayValues = explode($matches[1], $xfieldsdata[$value[0]]);
$xfCoutValues = count($xfArrayValues);
$xfieldsdataSum = '';
if ($matches[3] > $xfCoutValues || !$matches[3] || $matches[3] < 0) {
$matches[3] = $xfCoutValues;
}
$xfArrayValues = array_slice($xfArrayValues, 0, $matches[3]);
$xfArrayValues = implode($matches[1], $xfArrayValues);
$tpl->set($matches[0], $xfArrayValues);
}