Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

{custom} с параметрами xfields и xfieldsexclude

Тема в разделе "Вопросы- ответы", создана пользователем dusk, 13 май 2016.

13.05.16 в 02:28
11.05.19 в 00:16
31
2.697
0
  1. TopicStarter Overlay
    dusk

    Команда форума VIP Кинотрафик v2

    Регистрация:
    30 апр 2015
    Сообщения:
    1.137
    Лучших ответов:
    0
    Рейтинги:
    +373 / 0 / -2
    Проблема:
    С таким кодом
    {custom xfields="2016,боевик" xfieldsexclude="Америка,Россия"}
    dle всё равно выведет новости с полями, в которых присутствуют слова из xfieldsexclude при условии, что так же в каком-либо поле содержится "2016"
    По-моему, это противоречит назначению каждого из параметров {custom}

    Задача:
    Исключить пересекающиеся новости при выводе через {custom} с параметрами xfields и xfieldsexclude
    Если я внёс определённые фразы в xfieldsexclude, значит новости с их содержанием НЕ должны выводиться на сайте ни при каких обстоятельствах.

    Проблема актуальна. Перепробовал всё. xfields иногда перебивает xfieldsexclude
    То есть, если определённая новость содержит поле с текстом из xf..xclude, то в некоторых случаях даже она выведется на сайте.

    Решение во 2 посте. Всем удачи!
     
    #1 dusk, 13 май 2016
    Последнее редактирование: 13 май 2016
  2. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    Открываем /engine/modules/functions.php файл ищем :
    PHP:
    if( preg_match"#category=['\"](.+?)['\"]#i"$param_str$match ) ) {
    Выше вставляем :
    PHP:
    if( preg_match"#senxf=['\"](.+?)['\"]#i"$param_str$match ) ) {
        if(
    count(explode("||"$match[1])) > 1)
        {
            
    $field explode ("||"$match[1]);
            
    $xf_where = array();
            for(
    $i 0$i count($field); $i++)
            {
                
    $tmp_exp explode ("|"$field[$i]);
                
    $xf_where[] = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($tmp_exp[0]) . "|', -1 ) ,  '||', 1 ) = '{$tmp_exp[1]}'";
            }
            
    $xf_where implode (" AND "$xf_where);
        }
        else
        {   
            
    $field explode ("|"$match[1]);
            
    $xf_where "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($field[0]) . "|', -1 ) ,  '||', 1 ) = '{$field[1]}'";
        }
        
    $where[] = $xf_where;
    }

    if( 
    preg_match"#selxf=['\"](.+?)['\"]#i"$param_str$match ) ) {
        if(
    count(explode("||"$match[1])) > 1)
        {
            
    $field explode ("||"$match[1]);
            
    $xf_where = array();
            for(
    $i 0$i count($field); $i++)
            {
                
    $tmp_exp explode ("|"$field[$i]);
                
    $xf_where[] = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($tmp_exp[0]) . "|', -1 ) ,  '||', 1 ) LIKE '%{$tmp_exp[1]}%'";
            }
            
    $xf_where implode (" AND "$xf_where);
        }
        else
        {   
            
    $field explode ("|"$match[1]);
            
    $xf_where "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($field[0]) . "|', -1 ) ,  '||', 1 ) LIKE '%{$field[1]}%'";
        }
        
    $where[] = $xf_where;
    }

    if( 
    preg_match"#notsenxf=['\"](.+?)['\"]#i"$param_str$match ) ) {
        if(
    count(explode("||"$match[1])) > 1)
        {
            
    $field explode ("||"$match[1]);
            
    $xf_where = array();
            for(
    $i 0$i count($field); $i++)
            {
                
    $tmp_exp explode ("|"$field[$i]);
                
    $xf_where[] = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($tmp_exp[0]) . "|', -1 ) ,  '||', 1 ) != '{$tmp_exp[1]}'";
            }
            
    $xf_where implode (" AND "$xf_where);
        }
        else
        {   
            
    $field explode ("|"$match[1]);
            
    $xf_where "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($field[0]) . "|', -1 ) ,  '||', 1 ) != '{$field[1]}'";
        }
        
    $where[] = $xf_where;
    }

    if( 
    preg_match"#notselxf=['\"](.+?)['\"]#i"$param_str$match ) ) {
        if(
    count(explode("||"$match[1])) > 1)
        {
            
    $field explode ("||"$match[1]);
            
    $xf_where = array();
            for(
    $i 0$i count($field); $i++)
            {
                
    $tmp_exp explode ("|"$field[$i]);
                
    $xf_where[] = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($tmp_exp[0]) . "|', -1 ) ,  '||', 1 ) NOT LIKE '%{$tmp_exp[1]}%'";
            }
            
    $xf_where implode (" AND "$xf_where);
        }
        else
        {   
            
    $field explode ("|"$match[1]);
            
    $xf_where "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '" trim($field[0]) . "|', -1 ) ,  '||', 1 ) NOT LIKE '%{$field[1]}%'";
        }
        
    $where[] = $xf_where;
    }
    Использование :
    senxf - это поиск по доп полю с точным значением. Например
    PHP:
    {custom senxf="year|2015"}
    выведет все новости, которые имеют в доп поле year значение 2015.
    selxf - это поиск по доп полю с возможным значением. Например
    PHP:
    {custom selxf="ingredients|яйца||ingredients|рис"}
    выведет все новости, имеют в доп поле ingredients значение яйца и рис (то есть, эти значения могут быть где-то в середине текста этого поля (для этого и служит этот тег (если значение в поле одно, к примеру год, то используйте первый))).
    notsenxf - обратное свойство параметра senxf
    notselxf - обратное свойство параметра selxf

    Автор : (с) Gameer
     
    • Нравится Нравится x 5
  3. TopicStarter Overlay
    dusk

    Команда форума VIP Кинотрафик v2

    Регистрация:
    30 апр 2015
    Сообщения:
    1.137
    Лучших ответов:
    0
    Рейтинги:
    +373 / 0 / -2
    @Gameer, благодарю. Сейчас попробую и отпишусь
     
  4. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    Что бы задать несколько полей прописывать так :
     
    • Нравится Нравится x 1
  5. TopicStarter Overlay
    dusk

    Команда форума VIP Кинотрафик v2

    Регистрация:
    30 апр 2015
    Сообщения:
    1.137
    Лучших ответов:
    0
    Рейтинги:
    +373 / 0 / -2
    Всё прекрасно работает. Идеально я бы сказал!

    Маленькая заметочка.
    Вставлять код в functions.php перед последним найденным кодом
     
  6. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    В функции custom_print
     
  7. Glam

    Команда форума VIP Кинотрафик v2

    Регистрация:
    9 июн 2015
    Сообщения:
    355
    Лучших ответов:
    0
    Рейтинги:
    +215 / 0 / -0
  8. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    Это решение я написал еще в 2015 году. Используйте на здоровье ;)
     
    • Нравится Нравится x 1
  9. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.201
    Лучших ответов:
    0
    Рейтинги:
    +722 / 1 / -0
    @Gameer, все таки зря не стал писать двигу мне кажетсооооооооооооо
     
  10. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    Меня такое не интересует. Слишком скучно.
     
    • Смешно Смешно x 1
  11. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.201
    Лучших ответов:
    0
    Рейтинги:
    +722 / 1 / -0
    @Gameer, ну не знаю по-моему интересно создать то что еще никто не создавал, ты понимаешь о чем я, еще пару идей в кормушку кинул) Я почти уверен что подобный продукт будет иметь спрос — разве это скучно? Скучно сделать ДЛЕ и слать сопливые письма Гсам чтобы они линзу купили))))))))))
     
  12. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    Если и буду делать, то только защита под Кубом, что бы вы не нулили))000
     
  13. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.201
    Лучших ответов:
    0
    Рейтинги:
    +722 / 1 / -0
    @Gameer, Я вот кстати тоже об этом думал если распространять по принципу DLE то тут надо хитровыебанную лицензию делать и максимум один закодированный файл с ниболее важным кодом если его удаляешь пизда, оставляешь пытаешь ломать пизда, повсюду пизда короч))))))))))))))))))))))))
    Все нулить смысла нет, так разрабы не подтянуться для стороннего говна) а это тоже пиар
     
  14. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.201
    Лучших ответов:
    0
    Рейтинги:
    +722 / 1 / -0
    Куб раскодировать можно как ребенка обоссать)))))))))) Сам так делал
     
  15. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    Нет. А на счет разрабов, левых не нужны. Только дизгеры.
     
  16. Glam

    Команда форума VIP Кинотрафик v2

    Регистрация:
    9 июн 2015
    Сообщения:
    355
    Лучших ответов:
    0
    Рейтинги:
    +215 / 0 / -0
    DLE стал так популярен только благодаря нуллам. Не было бы нуллов - очень кто сейчас бы на DLE сидел. Это к вопросу защиты собственного продукта. Всегда надо выбирать что-то.
     
  17. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.201
    Лучших ответов:
    0
    Рейтинги:
    +722 / 1 / -0
    Риал, 8 долларов 1 файл.
    Ну левые не левые, тут относительно и уже от конечной версии движка отталкивается, закодировано не закодировано 1,2.3.4.5. и .т.п там уже можно принимать решение, может будет разумней делать магазин. А может стоит его не делать и создать определенные критерии для модулей которые будут утверждаться сертификатом от оф разраба и т.ппппппппппп
     
  18. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.201
    Лучших ответов:
    0
    Рейтинги:
    +722 / 1 / -0
    Нуленный DLE или готовое решение, но без нуллов? Конечно готовое и без нуллов, во-первых уникальность проекта, во-вторых его недоступность всяким ушлепкам с 6Б))))))))) Чистота интернета и хорошая репутация среди благоразумных и адекватных персон)
     
  19. PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.368
    Лучших ответов:
    19
    Рейтинги:
    +3.918 / 44 / -84
    Не раскодируешь ты 9 куб с привязкой к пыхе 5.4 и выше за 8 баксов. За такое берут минимум 50 в зависимости от размера файла и кода в нем.
     
  20. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.201
    Лучших ответов:
    0
    Рейтинги:
    +722 / 1 / -0
    @Gameer, Достаточно скинуться какой-нибудь складчиной на все закоденные файлы и занулить файл проверки лицензии.
     
Яндекс.Метрика