Регистрация

Добавляем тег "[not-xfgiven_...]" для работы с дополнительными полями

TipTop 27-02-2010, 23:35 3783 Хаки DLE

Добавляем тег "[not-xfgiven_...]" для работы с дополнительными полями


Описание: Хак, позволяющий выводить замещающий текст, если не заполнены дополнительные поля. Работает аналогично тегам "[not-group=...], [not-aviable=...]" и т.д.

По сути, если надо сделать так, чтобы при отсутствии текста в доп. поле, вместо него выводилось какое-то сообщение и т.д. - этот Хак будет самым простым решением этой проблемы.

Итак, нам надо будет сделать одинаковые изменения в трех файлах движка:
/engine/modules/show.custom.php
/engine/modules/show.short.php
/engine/modules/show.full.php

По очереди открываем каждый из них,
находим в каждом из них такой кусок кода:

// Обработка дополнительных полей
 $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 );
    }
    // Обработка дополнительных полей



и заменяем его на такой:

// Обработка дополнительных полей
    $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 );
            $tpl->copy_template = preg_replace( "'[not-xfgiven_{$preg_safe_name}](.*?)[/not-xfgiven_{$preg_safe_name}]'is", "1", $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 = preg_replace( "'[not-xfgiven_{$preg_safe_name}](.*?)[/not-xfgiven_{$preg_safe_name}]'is", "", $tpl->copy_template );
        }
        
        $tpl->copy_template = str_replace( "[xfvalue_{$preg_safe_name}]", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );
    }
    // Обработка дополнительных полей




В результате имеем возможность выводить определенный текст в том случае, если не заполнено определенное дополнительное поле.
В конкретно приведенном мною примере, он использовался для вывода русской версии новости, если отсутствует ее перевод, но выбран другой язык. (я делал многоязычную версию сайта путем перевода текстов и надписей на картинках в шаблоне, и добавлением доп. полей для иноязычного заголовка и текстов полной и короткой новостей)
Пример shortstory.tpl:

"post"    
"post-info-bg"

    
"post-info-mid"class="post-title"
    
class="post-category"
    

"post-info-bg"

    
"0" cellspacing="0" border="0"    

    

    

    class="post-story"short-story}[/not-xfgiven_shortstory_en]


    
class="post-data"        {date}  
        
"float:right; color=#CA5829; padding-bottom:10px;"            [full-link]Read more »[/full-link]





Автор: Apache

Другие публикации по категории:

Прячем закрытые темы для Dle форума

Хак предназначен для засекречивания закрытых тем на форуме Автор: Dellok

03.06.10 Хаки DLE
Запрет публикации новостей в определенную категорию

Хак для DataLife Engine Запрет публикации новостей в определенную категорию. При помощи этого хака

08.11.09 Хаки DLE
Хак для DLE "Последний коммент"

Хак для DataLife Engine "Последний коммент" Хак повзолит пользователям при нажатии на

14.10.09 Хаки DLE

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Powered by Dleshka.org. Сайт предназначен для выбора шаблонов и дополнений с использованием CMS DataLife Engine.
Закрыть