Помощь Дополнительные поля в dle - вывод в скрипт

Тема в разделе "DLE", создана пользователем Pimpleks, 11 авг 2014.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Pimpleks

    Pimpleks Создатель

    Регистр.:
    4 июн 2013
    Сообщения:
    22
    Симпатии:
    8
    Всем привет. В общем проблема такая.
    Нашкрябал код для парсинга по определенной ссылке - если можно так сказать. Т.е ссылка вставляется в доп поле, а как прочитать ее от туда непойму.
    Есть файл парсинга, и есть доп поле куда вставляется ссылка , помогите связать их.

    Код:
    $ssilka = 'а вот ту то как раз та ссылка которая при добавлении новости записывается в доп поле [xfvalue_ssilka]';
    $text = file_get_contents('$ssilka');
    $data = array();
    preg_match('|(.*)|Uis', $text, $message8);
    
    # $message1251[1] будет сожержать строку 'Какой-то текст'
    $message1251 = iconv('UTF-8','windows-1251', $message8[1]);
    echo "$message1251";
    ?>
    
    Вот собственно и требую помощи, в пхп не силен, так только править или по инструкции, код выше писал 2 дня)))

    вопрос в том что сделать ? как-то добавить код чтобы $ssilka = 'читалась [xfvalue_ssilka]';
    или както - запрос делать в бд ? нокак тогда сделать запрос именно той новости какая нужна ? это для меня вообще лес, помогите пожалуйста.

    Нужно из доп. поля отправить данные на обработку парсеру, не знаю как еще объяснить
     
    Последнее редактирование модератором: 11 авг 2014
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Вот этот код отвечает за дополнительные поля... show.full.php
    PHP:
            if( strpos$tpl->copy_template"[xfvalue_" ) !== false OR strpos$tpl->copy_template"[xfgiven_" ) !== false ) {
                
                
    $xfieldsdata xfieldsdataload$row['xfields'] );
                
                foreach ( 
    $xfields as $value ) {
                    
    $preg_safe_name preg_quote$value[0], "'" );

                    if ( 
    $value[6] AND !empty( $xfieldsdata[$value[0]] ) ) {
                        
    $temp_array explode","$xfieldsdata[$value[0]] );
                        
    $value3 = array();

                        foreach (
    $temp_array as $value2) {

                            
    $value2 trim($value2);
                            
    $value2 str_replace("&#039;""'"$value2);

                            if( 
    $config['allow_alt_url'] ) $value3[] = "<a href=\"" $config['http_home_url'] . "xfsearch/" urlencode$value2 ) . "/\">" $value2 "</a>";
                            else 
    $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&amp;xf=" urlencode$value2 ) . "\">" $value2 "</a>";
                        }

                        
    $xfieldsdata[$value[0]] = implode(", "$value3);

                        unset(
    $temp_array);
                        unset(
    $value2);
                        unset(
    $value3);

                    }
                    
                    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 str_replace"[xfnotgiven_{$value[0]}]"""$tpl->copy_template );
                        
    $tpl->copy_template str_replace"[/xfnotgiven_{$value[0]}]"""$tpl->copy_template );
                    } else {
                        
    $tpl->copy_template preg_replace"'\\[xfnotgiven_{$preg_safe_name}\\](.*?)\\[/xfnotgiven_{$preg_safe_name}\\]'is"""$tpl->copy_template );
                        
    $tpl->copy_template str_replace"[xfgiven_{$value[0]}]"""$tpl->copy_template );
                        
    $tpl->copy_template str_replace"[/xfgiven_{$value[0]}]"""$tpl->copy_template );
                    }

                    
    $xfieldsdata[$value[0]] = stripslashes$xfieldsdata[$value[0]] );

                    if (
    $config['allow_links'] AND $value[3] == "textarea"$xfieldsdata[$value[0]] = replace_links $xfieldsdata[$value[0]], $replace_links['news'] );

                    
    $tpl->copy_template str_replace"[xfvalue_{$value[0]}]"$xfieldsdata[$value[0]], $tpl->copy_template );

                    if ( 
    preg_match"#\\[xfvalue_{$preg_safe_name} limit=['\"](.+?)['\"]\\]#i"$tpl->copy_template$matches ) ) {
                        
    $countintval($matches[1]);
            
                        
    $xfieldsdata[$value[0]] = str_replace"</p><p>"" "$xfieldsdata[$value[0]] );
                        
    $xfieldsdata[$value[0]] = strip_tags$xfieldsdata[$value[0]], "<br>" );
                        
    $xfieldsdata[$value[0]] = trim(str_replace"<br>"" "str_replace"<br />"" "str_replace"\n"" "str_replace"\r"""$xfieldsdata[$value[0]] ) ) ) ));
            
                        if( 
    $count AND dle_strlen$xfieldsdata[$value[0]], $config['charset'] ) > $count ) {
                                
                            
    $xfieldsdata[$value[0]] = dle_substr$xfieldsdata[$value[0]], 0$count$config['charset'] );
                                
                            if( (
    $temp_dmax dle_strrpos$xfieldsdata[$value[0]], ' '$config['charset'] )) ) $xfieldsdata[$value[0]] = dle_substr$xfieldsdata[$value[0]], 0$temp_dmax$config['charset'] );
                            
                        }
            
                        
    $tpl->set$matches[0], $xfieldsdata[$value[0]] );
            
                    }
                }
            }
    В твоём случае, нужно смотреть примерно так:
    PHP:
    if ($value[0] == "your_link") {
        
    $your_link $xfieldsdata[$value[0]];
    }
    Пихаем это примерно вот сюда:
    PHP:
    $tpl->copy_template str_replace"[xfvalue_{$value[0]}]"$xfieldsdata[$value[0]], $tpl->copy_template );
    Теперь вне этого года доступна переменная $your_link, содержащая твою ссылку...

    P.s. вместо your_link необходимо подставить название твоего поля...
    P.p.s. делал на память, не тестил, может не работать
     
  3. Pimpleks

    Pimpleks Создатель

    Регистр.:
    4 июн 2013
    Сообщения:
    22
    Симпатии:
    8
    Извини, пихаем этот код вот сюда, это заменить или после него поставить?
    В общем поставил после, но не совсем понял принцып .

    Я добавил код, в своем парсере указал так
    Код:
    <?php
    $ssilka = '$your_link';
    $text = file_get_contents('$ssilka');
    $data = array();
    preg_match('|(.*)|Uis', $text, $message8);
    
    # $message1251[1] будет сожержать строку 'Какой-то текст'
    $message1251 = iconv('UTF-8','windows-1251', $message8[1]);
    echo "$message1251";
    ?>
    Потом создал доп поле с названием your_link.
    в шаблоне прописал теги
    Код:
    [xfgiven_your_link][xfvalue_your_link][/xfgiven_your_link]
    Выводит ссылку записанную в поле - но выводит ссылку -ну оно и понятно я же указал доп поле. А парсер какбы остается в стороне.
    получается что надо инклуд парсера без доп поля в шаблон вписывать?
    А точнее он прописан - значит не работает ((
    {include file="za/parser.php"}

    Нет не работает, ставил и перед и после и вместо - не выводит ничего, а прописывать поле - выводит ссылку - т.е. обходит скрипт.
     
    Последнее редактирование модератором: 11 авг 2014
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Ты полностью опиши что тебе нужно... В {include file="za/parser.php"} естественно переменная не попадёт
     
  5. Pimpleks

    Pimpleks Создатель

    Регистр.:
    4 июн 2013
    Сообщения:
    22
    Симпатии:
    8
    я добавляю в доп поле ссылку на видео, в этом коде много всего лишнего и оно показывается только на сайте источнике, или вот таким вот парсером, тоесть когда вставляешь ссылку в парсер

    Код:
    <?php
    $ssilka = 'http://site.ru/content-tut';
    $text = file_get_contents('$ssilka');
    $data = array();
    preg_match('|(.*)|Uis', $text, $message8);
    
    # $message1251[1] будет сожержать строку 'Какой-то текст'
    $message1251 = iconv('UTF-8','windows-1251', $message8[1]);
    echo "$message1251";
    ?>
    и инклудишь данный файл в шаблон новости - то конечно она отображается и пропарсенная. Но это потому как ссылка вставлена в скрипт как сейчас в примере.
    Мне же необходимо каки-то образом сделать чтобы эта ссылка была в каждой новости своя, поэтому я выбрал доп поля - куда вставляю ссылку - в крайнем случае можно и без них просто вставлять в фул-стори.
    Т.е. ссылка записывается в базу - а теперь ее надо пропустить через парсер и вывести в шаблоне фул-стори.
    Вот собственно это надо реализовать.
    Парсер удаляет всю белеберду с сайта, оставляет только нужное.
    Для парсера нужны ссылки с новости - он их обрабатывает и выдает на сайет. Незнаю как по другому сказать.
     
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Делаешь по инструкции выше, вставляешь код после указанной строки.

    Дальше идём ниже, как заканчивается код, приведённый в первом посте, вставляешь код:
    PHP:
    $ssilka 'http://site.ru/content-tut';
    $text file_get_contents('$ssilka');
    preg_match('|(.*)|Uis'$text$message8);

    $message1251 iconv('UTF-8','windows-1251'$message8[1]);
    $tpl->set("{video}" $message1251);
    Дальше в шаблон вставляешь {video}
     
  7. Pimpleks

    Pimpleks Создатель

    Регистр.:
    4 июн 2013
    Сообщения:
    22
    Симпатии:
    8
    А каким образом я сообщу код видео?
    Код:
    $ssilka = 'http://site.ru/content-tut';
    или написать там как в первом посте
    Код:
    $ssilka = '$your_link';
    Написал все как сказал - указал $your_link в ссылке в коде в шаблоне указал {video} - не выводит ничего
     
    Последнее редактирование модератором: 11 авг 2014
  8. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Кавычки удалите... Переменные вне кавычек указываются
     
  9. Pimpleks

    Pimpleks Создатель

    Регистр.:
    4 июн 2013
    Сообщения:
    22
    Симпатии:
    8
    ааааа спасибо - работает !!!!! вы Просто гуру !!!! Что посоветуете почитать, или чего начать изучение php, с какой версии, начинал на php.su но потом что то забросил. Сейчас хочу начать сначала!!
     
  10. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Учился вот по этой книге + практика
    Перейти по ссылке

    Сейчас она уже устарела, но разница 5.0 и 5.5 не велика - нагоняется чтением 2-3 статей в блогах.
    Ну и обязательно читаем документацию по движку, пишем полностью свои коды - моды, хаки, можно мелкую CMS тупую сделать...

    P.s. благодарность тут выражают кнопкой "мне нравится"
     
Статус темы:
Закрыта.