Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Дополнительная страницы для fullstory, добавление функций в php файл

Дополнительная страницы для fullstory, добавление функций в php файл


     17.05.2017    Общие вопросы по PHP, Хаки    91

вопрос
Здраствуйте!

Суть вопроса такова.. Как в php добавить поддержку дополнительных полей DLE и сделать так чтобы Мета-теги: title, description, keywords прописывальсь в ручную в самом файле php
Например:
DLE FAQ - максимум информации по DataLife Engine



но основной title вытягивало с новости.....

Что бы сильно не описывать вот был сделал заказ:

Сделать отображение конструктора на отдельной странице.
Шаблон страницы вынести в отдельный файл (без подгонки под сайт, простая верстка):
- категория новости, {category} (+) и [catlist=] [/catlist] (+)
- title новости, {title} (+)

+ тег ссылки на новость. (+)
Мета-теги: title, description, keywords - стандартные из основной новости!
ЧПУ: /online/{news_id} (+)
Хлебные крошки не надо.
Поддержка работы DLE с отключенным ЧПУ - не обязательно.

(windows-1251).



Вот сама страница

<?php

if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
}

class UrlHelper {
    
    private static $categories;
    
    /**
     * Получение ссылки на категорию
     * @global type $db
     * @param type $cat_id
     * @param type $level
     * @return boolean
     * @throws Exception
     */
    public static function getCategoryUrl($cat_id, $level = 0) {
        if ($cat_id<1) return false;
        if ($level>30) throw new Exception("Recursive error in getUrl");
        // подгрузка категорий
        if (self::$categories==null) {
            global $db;
            self::$categories = $db->super_query("SELECT id,parentid,name,alt_name FROM `".PREFIX."_category`", true);
            $newCat = array();
            if (is_array(self::$categories)) {
                foreach (self::$categories as $row) {
                    $newCat[$row["id"]] = $row;
                }
            }
            self::$categories = $newCat;
            unset($newCat);
        }
        // Получение ссылки
        $return = "";
        if (isset(self::$categories[$cat_id])) {
            if (self::$categories[$cat_id]["parentid"]==0)
                $return = self::$categories[$cat_id]["alt_name"];
            else
                $return =  self::getCategoryUrl(self::$categories[$cat_id]["parentid"], $level+1) . "/" . self::$categories[$cat_id]["alt_name"];
        } else
            return;
        return ($level==0 ? "/" : "") . $return . ($level==0 ? "/" : "");
    }
    
    public static function getCategoryName($cat_id) {
        if (self::$categories==null) 
            self::getCategoryUrl ($cat_id);
        if (isset(self::$categories[$cat_id])) {
            return self::$categories[$cat_id]["name"];
        }
    }
    
    public static function getNewsUrl($row) {
        if ($row['category']>0) {
            return self::getCategoryUrl($row['category']) . "{$row['id']}-{$row['alt_name']}.html";
        } else {
            return "/{$row['id']}-{$row['alt_name']}.html";
        }
    }
    
}

// Загрузка информации по новостям
$row = $db->super_query("SELECT * FROM `".PREFIX."_post` WHERE id='".intval($_GET['newsid'])."'");
//print_r ($row);
if ($row["approve"]) {
    $tpl->load_template( 'page_constructor.tpl' );
    include_once ENGINE_DIR.'/inc/include/p_construct/inc.show.full.php';
    // Title
    $tpl->set('{title}', $row['title']);
    // Catlist
    $url_cat = $category_id;
    $category_id = $row['category'];
    if( strpos( $tpl->copy_template, "[catlist=" ) !== false ) {
            $tpl->copy_template = preg_replace_callback ( "#\\[(catlist)=(.+?)\\](.*?)\\[/catlist\\]#is", "check_category", $tpl->copy_template );
    }
    if( strpos( $tpl->copy_template, "[not-catlist=" ) !== false ) {
            $tpl->copy_template = preg_replace_callback ( "#\\[(not-catlist)=(.+?)\\](.*?)\\[/not-catlist\\]#is", "check_category", $tpl->copy_template );
    }
    $category_id = $url_cat;
    // meta-tags
    $row['title'] = stripslashes( $row['title'] );		
    $metatags['title'] = $row['title'];
    if( $row['keywords'] == '' AND $row['descr'] == '' AND $config['create_metatags'] ) create_keywords( $row['short_story'] . $row['full_story'] );
    else {
            $metatags['keywords'] = $row['keywords'];
            if( $row['descr'] ) $metatags['description'] = $row['descr']; else $metatags['description'] = $row['title'];
    }
    if ($row['metatitle']) $metatags['header_title'] = $row['metatitle'];
    // Категория
    if ($row["category"]>0){
        $tpl->set_block( "'\\[category\\](.*?)\\[/category\\]'si", "$1" );
        $tpl->set('{category-url}', UrlHelper::getCategoryUrl($row["category"]));
        $tpl->set('{category-name}', UrlHelper::getCategoryName($row["category"]));
    } else
        $tpl->set_block( "'\\[category\\](.*?)\\[/category\\]'si", "" );
    $tpl->set('{news-url}', UrlHelper::getNewsUrl($row));
//    if ($CvBuffer!=="") {
//        $tpl->set_block( "'\\[is-video\\](.*?)\\[/is-video\\]'si", "$1" );
//        $tpl->set_block( "'\\[no-video\\](.*?)\\[/no-video\\]'si", "" );
//    } else {
//        $tpl->set_block( "'\\[is-video\\](.*?)\\[/is-video\\]'si", "" );
//        $tpl->set_block( "'\\[no-video\\](.*?)\\[/no-video\\]'si", "$1" );
//    }
    $tpl->compile( 'content' );
} else {
    msgbox( "Новость не найдена!", "Возможно, новость находится на модерации или удалена." );
}


!?

Ответа пока нет


Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх