Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с плагином, Функции плагина ББ кода для новостей 
:(
    Опции темы
PROhvost
Дата 16.8.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



Есть плагин для скрипта новостей CuteNews (если кто знаком), который выполняет функцию ББ кода.
Пример: он заменяет [тег]text[/тег] на <img src="$1" border="0" alt="описание картинки" /> , где $1 = "text". Суть в том что плагин разрешает использовать символ "$1" только один раз, после включения в код символа "$1" второй раз, код обрывается , пример: если записать так - <img src="$1" border="0" alt="$1" title="$1" /> то на выходе получится так : <img src="замененный элемент" border="0" alt="....

Нужно разрешить использовать несколько раз символ "$1" , т.е. что бы была возможность записать так: <img src="$1" border="0" alt="$1" title="$1" />, где "$1" = URL или что нить другое.

код плагина:

Код

<?php
/*
Plugin Name:    Custom Quick Tags
Plugin URI:        http://cutenews.ru/cat/plugins/
Description:    Создание собственных тэгов форматирования текста для новостей и комментариев. Для вывода тегов в форме добавления комментариев используйте <code>{bbcodes}</code>. Возможно использовать тег <code>{bbcodes:N}</code>, где <i>N</i> это кол-во тегов на линии. Например <code>{bbcodes:3}</code>.
Version:        1.0
Author:            David Carrington
Author URI:        http://www.brandedthoughts.co.uk
Required Framework: 1.1.2
Application:    CuteNews
*/



add_filter('cutenews-options', 'cqt_AddToOptions');
add_action('plugin-options','cqt_CheckAdminOptions');

add_filter('news-entry-content','apply_cqt');
add_filter('news-comment-content','apply_cqt');

add_filter('add-comment-box', 'cqt_insertBBCodes');

add_filter('template-variables-commentform','cqt_macros_variables');

function cqt_macros_variables($output){

    $output['{bbcodes} или {bbcode:N}'] = 'Выводит bbCode для формирования текста (N это кол-во на одной строке)';

return $output;
}

function cqt_insertBBCodes($output){

    $cqt = new PluginSettings('Custom_Quick_Tags');

    preg_match('[{bbcodes:([0-9]+)}]i', $output, $br);

    if ($cqt->settings['tags']){
        $i = 0;

        foreach($cqt->settings['tags'] as $cqt){
         $i++;

            $echo['cqt'] .= ' <nobr><a href="javascript:insertext(\'['.$cqt['tag'].']\', \'[/'.$cqt['tag'].']\', \'short\')">['.$cqt['tag'].']<'.$cqt['tag'].'>'.$cqt['name'].'</'.$cqt['tag'].'>[/'.$cqt['tag'].']</a></nobr> '.(($br[1] and ($i%$br[1] == 0)) ? '<br>' : '');
        }
    }

    $output = preg_replace('[{bbcodes:([0-9]+)}]i', $echo['cqt'], $output);
    $output = str_replace('{bbcodes}', $echo['cqt'], $output);

return $output;
}

function cqt_AddToOptions($options, $hook) {
global $PHP_SELF;

    // Add a custom screen to the "options" screen
    $options[] = array(
        'name'        => 'Тэги форматирования',
        'url'        => $PHP_SELF.'?mod=options&amp;action=cqt',
        'access'    => '1',
    );

    // return the customized options
    return $options;
}

//
function cqt_CheckAdminOptions($hook) {
    // chek if the user is requesting the CQT options
    if ($_GET['action'] == 'cqt')
        // show the CQT admin screen
        cqt_AdminOptions();
}

function cqt_AdminOptions() {
    echoheader('user','Тэги форматирования');

    $cqt = new PluginSettings('Custom_Quick_Tags');

    switch ($_GET['subaction']) {
        case 'edit':
            $tag = $cqt->settings['tags'][$_GET['id']];
        case 'add':
            $id = $tag ? '&amp;id='.$_GET['id'] : '';
            $buffer = '
<table cellspacing="0" cellpadding="0">
    <tr>
      <td width="25" align=middle><img border="0" src="skins/images/help_small.gif"></td>
      <td >&nbsp;<a href="http://www.brandedthoughts.co.uk/cutewiki/index.php/Custom%20Quick%20Tags%20Plugin" target="_blank">Помощь по работе с тэгами</a></td>
    </tr>
    <tr><td>&nbsp;</tr>
   </table>
    <form method="post" action="?mod=options&amp;action=cqt&amp;subaction=doadd'.$id.'" class="easyform">
        <div>
            <label for="txtName"><b>Название тэга</b></label><br />
            <input id="txtName" name="cqt[name]" value="'.$tag[name].'" style="width: 400px;" />
        </div><br />
        <div>
            <label for="txtTag"><b>Тэг</b></label><br />
            <input id="txtTag" name="cqt[tag]" value="'.$tag[tag].'" style="width: 400px;" />
        </div><br />
        <div>
            <label for="txtReplace"><b>Заменить на...</b></label><br />
            <textarea id="txtReplace" name="cqt[replace]" style="width: 400px; height: 150px;">'.$tag[replace].'</textarea><br />
        </div>
        <div>
            <input type="checkbox" id="txtComplex" name="cqt[complex]"'.($tag[complex] ? ' checked="checked"' : '').' value="true" style="border: 0px;" />
            <label for="txtComplex">Комплексный</label>
        </div><br />
        <input type="submit" value="Сохранить" />
    </form>';
            break;


        case 'delete':
            $tag = $cqt->settings['tags'][$_GET['id']];
            if ($tag[name])
                $buffer = '<p>Удаленный тэг: <strong>'.$tag[name].'</strong></p>';
            unset($cqt->settings['tags'][$_GET['id']]);
            $cqt->save();
            break;


        case 'doadd':
            $tag = array(
                name    => stripslashes($_POST[cqt][name]),
                tag        => stripslashes($_POST[cqt][tag]),
                complex    => stripslashes($_POST[cqt][complex]),
                replace    => stripslashes($_POST[cqt][replace]),
            );

            if ($_GET['id'])
                $cqt->settings['tags'][$_GET['id']] = $tag;
            else
                $cqt->settings['tags'][] = $tag;

            $buffer = '<p>Добавленный тэг: <strong>'.$_POST[cqt][name].'</strong></p>';
            $cqt->save();


        default:
            $buffer .= '
        <table border=0 cellpading=2 cellspacing=2 width=100%>
            <tr>
                <td bgcolor=#F7F6F4>&nbsp;<b>Название</b></td>
                <td bgcolor=#F7F6F4><b>Тэг</b></td>
                <td bgcolor=#F7F6F4><b>Тип</b></td>
                <td bgcolor=#F7F6F4><b>Вид</b></td>
                <td bgcolor=#F7F6F4><b>Действие</b></td>
            </tr>';

            $tags = $cqt->settings['tags'];

            if (empty($tags)) {
                $buffer .= '<td colspan="5">Нет тэгов форматирования</td>';
            } else
                foreach ($cqt->settings['tags'] as $id => $tag) {
                    $buffer .= '
            <tr>
                <td>&nbsp;'.$tag[name].'</td>
                <td>['.$tag[tag].']</td>
                <td>'.($tag[complex] ? 'Компл.' : 'Прост.' ).'</td>
                <td>'.htmlspecialchars($tag[replace]).'</td>
                <td><a href="?mod=options&amp;action=cqt&amp;subaction=edit&amp;id='.$id.'" title="Изменить тэг '.$tag[tag].'">Изм.</a> <a href="?mod=options&amp;action=cqt&amp;subaction=delete&amp;id='.$id.'" title="Удалить тэг '.$tag[tag].'">Удал.</a></td>
                </tr>';
                }

            $buffer .= '
        </table>
        <p><a href="?mod=options&amp;action=cqt&amp;subaction=add">Добавить новый тэг?</a></p>';
    }

    echo $buffer;

    echofooter();
}

function apply_cqt($content, $hook) {
        $cqt = new PluginSettings('Custom_Quick_Tags');
        $tags = $cqt->settings['tags'];
        if (!empty($tags))
                foreach ($tags as $tag){
            if ($tag[complex] == 'true'){
                $content = preg_replace('{\['.$tag['tag'].'=([^[]*)\](.*)\[\/'.$tag['tag'].'\]}i',
$tag[replace], $content);
            }
                        else {
                                $tag['arr'] = explode('$1', $tag['replace']);
                                $content    = str_replace('['.$tag['tag'].']', $tag['arr'][0],
$content);
                                $content    = str_replace('[/'.$tag['tag'].']', $tag['arr'][1],
$content);
                        }
                }

        return $content;
}

?>


PM MAIL   Вверх
PARROT
Дата 16.8.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Если Вам нужен только код для замены bb кода, поищите в поиске, было и еще поищите в разделе яваскрипт. 


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PROhvost
Дата 16.8.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



Мне бы очень хотелось подправить этот плагин, в поиске вроде ничего подходящего не нашел, кроме этого http://forum.vingrad.ru/index.php?showtopi...%BA%D0%BE%D0%B4 , но это немного не то.
PM MAIL   Вверх
PARROT
Дата 16.8.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Код

    function ApplyFormatting($text, $nl2br = true) {

                return str_replace(
                        array('[i]', '[/i]', '[b]', '[/b]', '[u]', '[/u]', '[quote]','[/quote]','[color=red]','[/color]','[color=blue]','[/color]','[color=green]','[/color]','[color=orange]','[/color]','[color=silver]','[/color]','[color=black]','[/color]','[color=yellow]','[/color]','[size=1]','[/size]','[size=2]','[/size]','[size=6]','[/size]','[size=8]','[/size]','[size=10]','[/size]','[font=arial]','[/font]','[font=courier]','[/font]','[font=impact]','[/font]','[font=tahoma]','[/font]','[font=times]','[/font]','[font=verdana]','[/font]','[justify]', '[/justify]',
                                '[center]',  '[/center]','[right]', '[/right]', '[left]', '[left]',),
                        array('<i>', '</i>', '<b>', '</b>', '<u>', '</u>','<div class=quote>','</div>','<font color=red>','</font>','<font color=blue>','</font>','<font color=green>','</font>','<font color=orange>','</font>','<font color=silver>','</font>','<font color=black>','</font>','<font color=yellow>','</font>','<font size=1>','</font>','<font size=2>','</font>','<font size=6>','</font>','<font size=8>','</font>','<font size=10>','</font>','<font face=arial>','</font>','<font face=courier>','</font>','<font face=impact>','</font>','<font face=tahoma>','</font>','<font face=times>','</font>','<font face=verdana>','</font>','<p align="justify" class="content">', '</p>',
                                 '<p align="center" class="content">', '</p>', '<p align="right" class="content">', '</p>',
                                 '<p align="left" class="content">', '</p>',), (($nl2br == true) ? nl2br($text) : $text)
                );

        }


}



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PROhvost
Дата 16.8.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



Спасибо, вроде понял!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3854 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.