Перейти к публикации

Talory

Клиенты
  • Публикации

    17
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Talory

  1. 21 минуту назад, alex32 сказал:

    Правьте, в чем проблема. Да и плагин так себе, 90% ненужного мусора. Несколько строк jquery  и все остальное делается в css, занафига лезть в файлы скрипта, вообще непонятно

    Если бы мог, не прибегал к помощи и не выкладывал бы "90% ненужного мусора" . Смена через css не то что мне нужно. 

  2. 21 минуту назад, aleksandrhristich сказал:

    С этим вопросом вам лучше обратиться к автору плагину.

    Да там тишина уже год, ни каких движений. Темболее раз он работал, чую нужно пару строк подправить.

  3. Всем привет. есть такой плагин Ajax переключение вида кратких новостей.

    Но на последних версиях dle чтото он работать не хочет. 

    Посмотрите что не так с ним, как его можно оптимизировать. 

    Сам плагин:

    Первым делом подключим его к нашему шаблону. Для этого открываем файл main.tpl и перед тегом </head> вставляем следующие строки:

    [aviable=main|cat]<link media="screen" href="{THEME}/css/ajax_temp.css" type="text/css" rel="stylesheet" />[/aviable]

    Код css

    .activetempajax {
        text-decoration: none;
        background: #d8e0eb;
    }
    .view-type {
        display: inline-block;
        float: right;
    }
    .view-type a {
        padding: 3px 6px;
        border-radius: 3px;
        display: inline-block;
    }
    .setview {
        width: 16px;
        height: 16px;
        display: inline-block;
        vertical-align: middle;
        position: relative;
        background: url("../images/set_view.png") no-repeat;
    }
    .view1 {
        background-position: 0 0;
    }
    .view2 {
        background-position: 0 -16px;
    }
    .view3 {
        background-position: 0 -32px;
    }

    Затем в самом низу этого же файла подключаем .js файл, перед тегом </body> вставляем:

    [aviable=main|cat]<script type="text/jаvascript" src="{THEME}/js/ajax_temp.js"></script>[/aviable]

    Код ajax_temp.js

    $("body").on("click", "[data-temp*=this_]", function() {
    	if($(this).hasClass("activetempajax"))
    	{
    		return false;
    	}
    	else
    	{
    		ShowLoading('');
    		$(".templater > a").removeClass("activetempajax");
    		$(this).addClass("activetempajax");
    		var $temp = $(this).attr("data-nametemp");
    		var $catid = $(this).attr("data-catid");
    		var $pageid = $(this).attr("data-pageid");
    		$.post(dle_root + "engine/ajax/ajax_template.php", {template_ajax:$temp, cstart:$pageid, category_id:$catid}, function(data) {
    			if(data)
    			{
    				$("#dle-content").html(data);
    				HideLoading('');
    			}
    		});
    		return false;
    	}
    });

    Код самого ajax_template.php

    <?PHP
    
    @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
    @ini_set ( 'display_errors', true );
    @ini_set ( 'html_errors', false );
    @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
    
    $template_ajax = isset($_POST["template_ajax"]) && is_string($_POST["template_ajax"]) ? trim(strip_tags(stripslashes($_POST["template_ajax"]))) : false;
    $cstart = isset($_POST["cstart"]) && is_numeric($_POST["cstart"]) ? intval($_POST["cstart"]) : false;
    $category_id = isset($_POST["category_id"]) && is_numeric($_POST["category_id"]) ? intval($_POST["category_id"]) : false;
    if(!$template_ajax) return;
    
    if(!in_array($template_ajax, array("default", "list", "tablet"))) return;
    
    define( 'DATALIFEENGINE', true );
    define( 'ROOT_DIR', substr( dirname(  __FILE__ ), 0, -12 ) );
    define( 'ENGINE_DIR', ROOT_DIR . '/engine' );
    
    include ENGINE_DIR . '/data/config.php';
    require_once ENGINE_DIR . '/classes/mysql.php';
    require_once ENGINE_DIR . '/data/dbconfig.php';
    require_once ENGINE_DIR . '/modules/functions.php';
    require_once ENGINE_DIR . '/classes/templates.class.php';
    
    dle_session();
    
    require_once ENGINE_DIR . '/modules/sitelogin.php';
    require_once ROOT_DIR . '/language/' . $config['langs'] . '/website.lng';
    @header( "Content-type: text/html; charset=" . $config['charset'] );
    
    if(!$is_logged) $member_id['user_group'] = 5;
    
    //################# Определение групп пользователей
    $user_group = get_vars( "usergroup" );
    if( ! $user_group ) {
    	$user_group = array ();
    	$db->query( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" );
    	while ( $row = $db->get_row() ) {
    		$user_group[$row['id']] = array ();
    		foreach ( $row as $key => $value ) $user_group[$row['id']][$key] = stripslashes($value);
    	}
    	set_vars( "usergroup", $user_group );
    	$db->free();
    }
    
    //################# Определение категорий и их параметры
    $cat_info = get_vars( "category" );
    if( ! is_array( $cat_info ) ) {
    	$cat_info = array ();
    	$db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
    	while ( $row = $db->get_row() ) {
    		$cat_info[$row['id']] = array ();
    		foreach ( $row as $key => $value ) $cat_info[$row['id']][$key] = stripslashes( $value );
    	}
    	set_vars( "category", $cat_info );
    	$db->free();
    }
    set_cookie("short_template", $template_ajax, 366);
    //$tpl->load_template( $user_short_tpl[$template_ajax] );
    
    $thisdate = date ( "Y-m-d H:i:s", time () );
    if ($config['no_date'] AND !$config['news_future']) $where_date = " AND date < '" . $thisdate . "'";
    else $where_date = "";
    $allow_list = explode ( ',', $user_group[$member_id['user_group']]['allow_cats'] );
    if ($allow_list[0] != "all")
    {
    	if ($config['allow_multi_category']) $stop_list = "category regexp '[[:<:]](" . implode ( '|', $allow_list ) . ")[[:>:]]' AND ";
    	else $stop_list = "category IN ('" . implode ( "','", $allow_list ) . "') AND ";
    }
    else $stop_list = "";
    
    $allow_sub_cats = true;
    if ( $cat_info[$category_id]['show_sub'] )
    {
    	if ( $cat_info[$category_id]['show_sub'] == 1 ) $get_cats = get_sub_cats ( $category_id );
    	else { $get_cats = $category_id; $allow_sub_cats = false; }
    }
    else
    {
    	if ( $config['show_sub_cats'] ) $get_cats = get_sub_cats ( $category_id );
    	else { $get_cats = $category_id; $allow_sub_cats = false; }
    }
    if ($config['allow_multi_category']) $where_category = "category regexp '[[:<:]](" . $get_cats . ")[[:>:]]'";
    else
    {	
    	if ( $allow_sub_cats )
    	{	
    		$get_cats = str_replace ( "|", "','", $get_cats );
    		$where_category = "category IN ('" . $get_cats . "')";
    	}
    	else $where_category = "category = '{$get_cats}'";
    }
    if ($config['allow_fixed']) $fixed = "fixed desc, ";
    else $fixed = "";
    $news_sort_by = ($config['news_sort']) ? $config['news_sort'] : "date";
    $news_direction_by = ($config['news_msort']) ? $config['news_msort'] : "DESC";
    if($category_id)
    {
    	$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$where_category} AND approve=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
    	$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$where_category} AND approve=1" . $where_date;
    }
    else
    {	
    	$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
    	$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date;
    }
    $tpl = new dle_template( );
    $tpl->dir = ROOT_DIR . '/templates/'.$config['skin'];
    define( 'TEMPLATE_DIR', $tpl->dir );
    $allow_active_news = true;
    if($category_id > 0)
    {
    	$url_page = $config['http_home_url'] . get_url ( $category_id );
    	$user_query = "do=cat&amp;category=" . $cat_info[$category_id]['alt_name'];
    }
    else
    {
    	$url_page = substr ( $config['http_home_url'], 0, strlen ( $config['http_home_url'] ) - 1 );
    	$user_query = ""; 
    }
    include ENGINE_DIR . '/modules/show.short.php';
    $tpl->result['content'] = str_replace( '{THEME}', $config['http_home_url'] . 'templates/' . $config['skin'], $tpl->result['content'] );
    echo $tpl->result['content'];
    ?>

    В этом же файле в месте где хотим чтобы отображался сам переключатель вставляем следующее:

    [aviable=main|cat]
    <div class="view-type templater">
    <a href="#" [default] class="activetempajax" [/default] data-temp="this_1" data-catid="{id_cat}" data-pageid="{cstart}" data-nametemp="default">
    <span class="setview view1"></span>
    </a>
    <a href="#" [list] class="activetempajax" [/ list] data-temp="this_2" [/list] data-catid="{id_cat}" data-pageid="{cstart}" data-nametemp="list">
    <span class="setview view2"></span>
    </a>
    <a href="#" [table] class="activetempajax" [/table] data-temp="this_3" data-catid="{id_cat}" data-pageid="{cstart}" data-nametemp="tablet">
    <span class="setview view3"></span>
    </a>
    </div>
    [/aviable]

    Открываем файл  /engine/engine.php и ищем такие строки:

    $cache_prefix .= "_tempate_" . $config['skin'];

    Ниже дописываем это:

    $user_short_tpl = array(
        'default' => 'shortstory.tpl',
        'list' => 'shortstory_list.tpl',
        'tablet' => 'shortstory_tablet.tpl'
    );
    $user_tpl =(isset($_COOKIE['short_template']) && isset($user_short_tpl[$_COOKIE['short_template']])) ? $_COOKIE['short_template'] : "default";
    $cache_prefix .= "_".$user_tpl;

    Далее открываем файл  /engine/modules/show.short.php и ищем строки:

    if( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
    else $tpl->load_template( 'shortstory.tpl' );

    Заменяем эти строки на:

    $user_short_tpl = array(
        'default' => 'shortstory.tpl', 
        'list' => 'shortstory_list.tpl', 
        'tablet' => 'shortstory_tablet.tpl' 
    );
    if($template_ajax)
        $user_tpl = $user_short_tpl[$template_ajax];
    else
        $user_tpl =(isset($_COOKIE['short_template']) && isset($user_short_tpl[$_COOKIE['short_template']])) ? $user_short_tpl[$_COOKIE['short_template']] : $user_short_tpl["default"];
    if( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
    else{ $tpl->load_template($user_tpl);}

    После открываем файл /engine/modules/main.php (если у вас более старая версия DLE то файл index.php корневой!) и находим:

    $tpl->set ( '{speedbar}', $tpl->result['speedbar'] );

    Ниже вставляем:

    $tpl->set ( '{id_cat}', $category_id );
    $tpl->set ( '{cstart}', intval($_REQUEST["cstart"]) );
    if(isset($_COOKIE['short_template']))
    {
        if($_COOKIE['short_template'] == "default")
        {
            $tpl->set_block( "'\\[default\\](.*?)\\[/default\\]'si", "\\1" );
            $tpl->set_block( "'\\[list\\](.*?)\\[/list\\]'si", "" );
            $tpl->set_block( "'\\[table\\](.*?)\\[/table\\]'si", "" );
        }
        elseif($_COOKIE['short_template'] == "list")
        {
            $tpl->set_block( "'\\[default\\](.*?)\\[/default\\]'si", "" );
            $tpl->set_block( "'\\[list\\](.*?)\\[/list\\]'si", "\\1" );
            $tpl->set_block( "'\\[table\\](.*?)\\[/table\\]'si", "" );
        }
        else
        {
            $tpl->set_block( "'\\[default\\](.*?)\\[/default\\]'si", "" );
            $tpl->set_block( "'\\[list\\](.*?)\\[/list\\]'si", "" );
            $tpl->set_block( "'\\[table\\](.*?)\\[/table\\]'si", "\\1" );
        }
    }
    else
    {
        $tpl->set_block( "'\\[default\\](.*?)\\[/default\\]'si", "\\1" );
        $tpl->set_block( "'\\[list\\](.*?)\\[/list\\]'si", "" );
        $tpl->set_block( "'\\[table\\](.*?)\\[/table\\]'si", "" );
    }

     

  4. 18.08.2017 в 18:21, lineup сказал:

    А будет ли такая реализация правильна, при условии что настройки nginx / apache редактировать нельзя?

    functions.inc.php и functions.php
    найти
    REMOTE_ADDR
    заменить на
    HTTP_CF_CONNECTING_IP

    И я столкнулся с этой проблемой. ваш статья помогла.

    Сделал виде плагина, единственное в админке постоянно пишет

    Внимание ошибка безопасности:
    В настройках скрипта задан некорректный HTTP заголовок для получения IP адреса пользователей. По данной настройке невозможно получить IP адреса пользователей. Измените значение на корректное.

     

  5. Здравствуйте всем. Есть в настройках такая функция:

    <b>Выводить новости опубликованные в субкатегориях</b>
    Eсли 'Включено', то новости опубликованные в субкатегориях будут показываться также при просмотре основной категории. В противном случае вам необходимо будет указывать несколько категорий при публикации новости.

    Но нету функции:

    Выводить категории опубликованные в субкатегориях
    Eсли 'Включено', то категории опубликованные в субкатегориях будут показываться также при просмотре основной категории. В противном случае вам необходимо будет указывать несколько категорий при публикации категории.

    Тоесть при просмотре категории у меня выводится родительские категории и сабкатегории, не пойму как запретить.

  6. 1 час назад, webair сказал:

    Понимать бы, что именно интегрировать вам нужно. ТЗ - Техническое Задание.

    У 1С достаточно продуктов. Есть Битрикс, есть Битрикс 24, даже АмоСРМ они купили, есть разные системы учёта бухгалтерии, склада, предприятия. Поставьте чёткую задачу, что с чем интегрировать. В новых версиях dle это не появится, но сторонние разработчики, может быть заинтересуются.

    Лично я не пользуюсь продуктами 1С, может поэтому не понял сразу сути.

    Битрикс это конечно для мажоров, всё хорошо. но не будем унижать dle, так как в данный момент она нас интересует. Минимальное параметры экспорт и импорт между dle и 1с это ид новости, титул(заголовок), краткая-полная новость, ну и естественно дополнительные поля. ну расписывать нет смысла, так как тема не для заказов. а для пожеланий. Ну и на последок, мне dle нравится, больше чем остальные, просто сделано для людей. всё удобно.

  7. 1 час назад, webair сказал:

    Вы такие странные, конечно... Что вам интегрировать? Новости? Или новости переделанные в карточку товара с помощью доп полей? Сопоставление данных из доп полей с данными из 1С? Я что то не видел таких запросов на форуме, поэтому и не задумывался об этом. Если вам нужно, создавайте тему, опишите ТЗ подробное.

    Отговорки лишь бы не делать!

×
×
  • Создать...