Итак, рассказываю, такую инфу Вы вряд ли где-нибудь найдете, а я уверен понадобиться она многим.
Для обработки дополнительных полей в модуле topnews нужно:1. Откройте файл /engine/modules/topnews.php;
2. Найдите строку, начинающуюся на
$db->query( "SELECT id, title, date, alt_name, category, flag FROM "...
перед ней вставьте
$tpl->load_template('topnews.tpl');
$xfields = xfieldsload();
3. Найдите строку
else $title = $row['title'];
и после нее вставьте
if( strpos( $tpl->copy_template, "[xfvalue_" ) !== false ) {
$xfieldsdata = xfieldsdataload( $row['xfields'] );
foreach ( $xfields as $value ) {
$preg_safe_name = preg_quote( $value[0], "'" );
if( empty( $xfieldsdata[$value[0]] ) ) {
$tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
} else {
$tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "\\1", $tpl->copy_template );
}
$tpl->copy_template = str_replace( "[xfvalue_{$preg_safe_name}]", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );
}
}
4. Далее заменяем строки
$link = "<a href=\"" . $full_link . "\">" . stripslashes( $title ) . "</a>";
$topnews .= "» " . $link . "<br />";
на таки строки
$go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " : "";
$tpl->set_block("'\[full-link\](.*?)\[/full-link\]'si", "<a {$go_page}href=\"".$config['http_home_url'] . $row['id'] . "-" . $row['alt_name'].".html\" title=\"" . $title . "\">\\1</a>");
$tpl->set('{title}', stripslashes($title));
$tpl->compile('topnews');
5. Заменяем строки
$db->free();
create_cache( "topnews", $topnews, $config['skin'] );
на такую строку
$topnews = $tpl->result['topnews'];
6. topnews.php сохраняем и закрываем;
7. В папке с шаблоном создаем файл topnews.tpl с помощью блокнота, т.е. создайте сначала текстовый файл, а потом переименуйте его в topnews.tpl. Далее измените содержание этого файла, чтобы получилось примерно следующее:
[full-link][xfvalue_pole1]{title} ([xfvalue_pole2])[/full-link]
теги [full-link]...[/full-link] ограничивают ссылку на новость, нажав на которую посетитель будет попадать, как в нашем примере, в одну из ТОП-новостей. Т.е. все что будет между тегами [full-link]...[/full-link] будет являться ссылкой на новость, можно вставлять картинки, текст и т.п.
В данном примере мы допустили, что у нас уже есть два дополнительных поля pole1 и pole2, которые используются в новостях, к примеру, в поле pole1 идет тип новости, а в pole2 - город автора, так вот в нашем примере если мы оставим содержание topnews.tpl таким, то в блоке {topnews} будет выводится ссылка, в которой будут содержаться и тип новости (pole1), и название (title), и город автора (pole2) в таком виде:
тип новости название новости (город автора)
Оформлять вывод новости можно как угодно, делайте это в файле topnews.tpl, в файл шаблона main.tpl не забывайте вставлять тег {topnews} для вывода блока topnews.
Для обработки дополнительных полей в модуле lastnews нужно (я рассматриваю модуль lastnews версии 2.1, в стандартной версии движка его нет, так что заранее внедрите его в движок)
:1. Откройте файл /engine/modules/lastnews.php;
2. Найдите строку
$tpl->load_template('lastnews.tpl');
ниже вставьте
$xfields = xfieldsload();
3. Найдите строку
$preg_safe_name = preg_quote( $value[0], "'" );
ниже вставьте
if( strpos( $tpl->copy_template, "[xfvalue_" ) !== false ) {
$xfieldsdata = xfieldsdataload( $row['xfields'] );
foreach ( $xfields as $value ) {
$preg_safe_name = preg_quote( $value[0], "'" );
if( empty( $xfieldsdata[$value[0]] ) ) {
$tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
} else {
$tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "\\1", $tpl->copy_template );
}
$tpl->copy_template = str_replace( "[xfvalue_{$preg_safe_name}]", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );
}
}
4. Сохраните и закройте файл lastnews.php.
Вот и все измения модуля lastnews для того, чтобы выводились дополнительные поля в этом блоке. Файл lastnews.tpl уже есть в шаблонах, просто изменяйте его как хотите, вставляйте теги дополнительных полей и оформляйте этот блок по своему усмотрению.