Новости Joomla

Как оптимизировать сайт под нейросети? С 2023 года нейросети и чат-боты, основанные на больших...

Как оптимизировать сайт под нейросети? С 2023 года нейросети и чат-боты, основанные на больших...

👩‍💻 Как оптимизировать сайт под нейросети? С 2023 года нейросети и чат-боты, основанные на больших языковых моделях (LLM), начали радикально менять ландшафт SEO. Согласно исследованию Sparktoro, уже в 2024 году 58.5% поисковых запросов в США не приводили к переходу на сайты - пользователь получал ответ непосредственно в поиске.И это до внедрения AI ответов. После внедрения Google AI Overviews, а Яндексом блока нейроответа Алисы, ситуация только усугубилась, а среди владельцев инфосайтов началась небольшая паника.Что нужно сделать для AI-ранжирования?Во-первых, SEO-специалистам и маркетологам важно сменить саму парадигму мышления: запрос - позиция - страница. Делая оптимизацию под AI, мы больше не стремимся занимать позицию по конкретному ключу, и не думаем о том, что ранжируется вся страница. Мы думаем об интенте пользователя, и связанных с этим интентом сущностях. Глубоко понимая бизнес и ЦА предугадываем следующие за основным запросы. И представляем свой контент в максимально доступной и структурированной форме, как для пользователя, так и для LLM. В конечном счёте окончательно в прошлое уходят полотна с текстом, а страницы сайта всё больше начинают напоминать запись диалога с Chat GPT, отдельно взятые запросы и идеально структурированные и подтверждённые статистикой ёмкие ответы.Во-вторых, сама ваша страница теперь может быть на 5 странице, по запросу, который набрал пользователь. Но если на ней есть пассаж текста, который решит его проблему, то вы попадаете в блок нейроответа и получаете трафик. Таким образом в корне меняется и пользовательская привычка взаимодействия с контентом, и подходы к его оптимизации. Ключ, частотность, позиция страницы - это теперь скорее просто вектор, дающий возможность оценить результаты продвижения, а не чёткая метрика.➡️ Далее в статье рассказывается:- Файлы llms.txt и llms-full.txt для AIO- Структурированность и логика заголовков (H1–H6)- Дробление контента на автономные части (чанки)- Покрытие Query Fan-Out- Мультимодальный контент- Микроразметка

Schema.org- Атрибут
data-nosnippet- Внешнее продвижение сайта- Картографические сервисы, локальное SEOВ конце статьи дан чек-лист по оптимизации под нейросети.
Читать статьюСпасибо за ссылку участнику нашего сообщества Святославу Волкову (@eminents).#seo #ai

Плагин Поля - WT Yandex Map для Joomla

Плагин Поля - WT Yandex Map для Joomla.Плагин добавляет новый тип пользовательского поля для Joomla 4 - Яндекс.Карты. Он позволяет отображать метку на Яндекс картах в тех расширениях, которые поддерживают пользовательские поля (custom fields) в Joomla 4. Плагин бесплатный.👩‍💻 v.2.1.0. Что нового?- Улучшение UX. При взаимодействии со страницей на мобильных устройствах если карта отображается во всю ширину - она начинает прокручиваться вместо веб-страницы. Во избежание этой ситуации добавлена опция оверлея для карты. Теперь взаимодействие с картой возможно после клика по карте. Оверлей автоматически включается, когда курсор покидает границы контейнера карты и карту можно снова прокручивать.- Геолокация автора. Добавлена опция для поля, позволяющая определять местоположение автора. Таким образом при создании нового, к примеру, материала будет определено местоположение (браузер запросит разрешение) и его координаты будут добавлены в поле.- Joomla 6. Плагин успешно протестирован на Joomla 6Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#joomla #yandex #расширения

0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 2031 Просмотров
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Здравствуйте!

собственно не могу понять почему в модели я не могу получить post или get данные которые я отправил из формы

Код
JFactory::getApplication()->input->get('search_title', '', 'post');
возвращает string(0) ""

нужно через контроллер передать эти данные?

подскажите пожалуйста, буду признателен!
« Последнее редактирование: 20.10.2014, 18:30:16 от b2z »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Post запрос в модели компонента
« Ответ #1 : 20.10.2014, 14:31:53 »
JFactory::getApplication()->input->post->get('search_title', '');
интернет-блог: http://websiteprog.ru
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #2 : 20.10.2014, 14:36:49 »
JFactory::getApplication()->input->post->get('search_title', '');
я просто тут на быструю руку писал и объект input пропустил
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Post запрос в модели компонента
« Ответ #3 : 20.10.2014, 14:39:40 »
я просто тут на быструю руку писал и объект input пропустил
То есть все ок? Или у Вас в коде JFactory::getApplication()->input->post->get('search_title', '') и не работает?
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #4 : 20.10.2014, 14:40:22 »
То есть все ок? Или у Вас в коде JFactory::getApplication()->input->post->get('search_title', '') и не работает?
угу(
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: Post запрос в модели компонента
« Ответ #5 : 20.10.2014, 14:45:00 »
Код формы покажите!
Если у вас форма через XML формируется и выводится через $this->form->getInput('name') то у вас все елементы в мессиве jform будут!
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #6 : 20.10.2014, 14:48:15 »
Код формы покажите!
Если у вас форма через XML формируется и выводится через $this->form->getInput('name') то у вас все елементы в мессиве jform будут!

та не, модуль поиска по стороннему компоненту!


Код
<?php
$search_title = JFactory::getApplication()->input->get('search_title', '', 'post');
?>
<form id="mod-finder-searchform" class="search" method="post" action="/katalog-domov">
    <div class="ico" onclick="jQuery(this).parent('form').submit();"></div>
    <div class="finder">
        <fieldset name="search">
        <input onblur="if (this.value=='') this.value='<?=$search_title?>';" onfocus="if (this.value=='<?=$search_title?>') this.value='';" id="search_title" class="search-query input-medium" type="text" value="<?=$search_title?>" size="25" name="search_title">
        </fieldset>
    </div>
</form>

ковыряю чужой компонент, вот не могу понять почему в модели не видно ни post ни get
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #7 : 20.10.2014, 14:51:33 »
код модели для ясности картины
Код
<?php
defined('_JEXEC') or die;

class CatalogModelFrontpage extends JModelItem
{





    private function item()
    {

        $db = $this->getDbo();
        $query = $db->getQuery(true);
        $published = $this->getState('filter.published', 1);
        $archived = $this->getState('filter.archived', 2);
        $app = JFactory::getApplication();
        $filter_post = $app->input->get('filter', '', 'post');

        $search_title = JFactory::getApplication()->input->post->get('search_title', '');

        var_dump($search_title);

        $sort = $app->input->get('sort', '', 'post');

        if (!empty($filter_post)) {

            $filter = array();

            for ($i = 0; $i < count($filter_post); $i++) {

                if (!in_array('0', $filter_post[$i])) {

                    if (is_numeric($filter_post[$i]['value'])) {

                        $filter[$filter_post[$i]['name']] = $filter_post[$i]['value'];
                    }
                }
            }

        }

        $query->select(
            'a.id AS id, ' .
            'a.title AS title, ' .
            'a.catid AS catid, ' .
            'a.unique_code AS unique_code, ' .
            'a.price AS price, ' .
            'a.floor AS floor, ' .
            'a.area AS area, ' .
            'a.params AS params, ' .
            'a.images AS images, ' .
            'a.options AS options, ' .
            'a.description AS description, ' .
            'm.id AS mid '

        );

        $query->from('#__catalog AS a')
            ->join('LEFT', '#__menu AS m ON a.title = m.title');

        $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()). ',' . $db->quote('*'). ')')
            ->where('(a.state = ' . (int)$published . ' OR a.state = ' . (int)$archived . ')');

        if (!empty($filter_post)) {

            $query->where('(a.price >= ' . (int)$filter['price-min'] . ' AND a.price <= ' . (int)$filter['price-max'] . ')')
                ->where('(a.floor >= ' . (int)$filter['floor-min'] . ' AND a.floor <= ' . (int)$filter['floor-max'] . ')')
                ->where('(a.area >= ' . (int)$filter['area-min'] . ' AND a.area <= ' . (int)$filter['area-max'] . ')');
        }

        if(!empty($search_title)) {
            $query->where('a.title LIKE '.$db->Quote('%'.$db->escape($search_title, true).'%').'');
        }


        if (!empty($sort)) {

            $query->order('a.' . $sort);
        }

        $db->setQuery($query);

        return $db->loadObjectList();
    }
    
    private function newArray(){

         $array = array();
         $field = array();

         $rows = $this->item();

         for($i = 0; $i < count($rows); $i++){

                $params[$i]     = json_decode($rows[$i]->params, true);
                $images[$i]     = json_decode($rows[$i]->images, true);
                $options[$i]    = json_decode($rows[$i]->options, true);

                unset($params[$i]['stock-ico']);


                $field[$i] = array(
                    'id'            => $rows[$i]->id,
                    'title'         => $rows[$i]->title,
                    'catid'         => $rows[$i]->catid,
                    'unique_code'   => $rows[$i]->unique_code,
                    'price'         => $rows[$i]->price,
                    'floor'         => $rows[$i]->floor,
                    'area'          => $rows[$i]->area
                    );

                $array[$i] = array_merge($field[$i],$params[$i],$images[$i],$options[$i]);

            }

            return $array;
    }
    
    private function sortString($array){
        
        $app           = JFactory::getApplication();
        $filter_post   = $app->input->get('filter', '', 'post');
        
        $filter = array();
        $list   = array();
        $result = array();
        
        for($i = 0; $i < count($filter_post); $i++){
            
            if(!in_array('0', $filter_post[$i])){
                
                if(!is_numeric($filter_post[$i]['value'])){
                    
                    $filter[$filter_post[$i]['name']] = $filter_post[$i]['value'];    
                }  
            }
        }
        
        if(isset($filter)){
            
            $filter_count = count($filter);
            
            for($i = 0; $i < count($array); $i++){
                
                //Находим схождение массивов $filter и $array[$i]
                $comparison = array_intersect($filter,$array[$i]);
                    
                if(isset($comparison)){
                
                    foreach($comparison as $compare){
                        //Проверяем искомое значение в массиве $filter
                        if(in_array($compare,$filter)){
                            //Ищем ключи в массиве $filter
                            $key = array_search($compare,$filter);
                            //Создаем массив из id, совпадающих со значениями из $filter
                            if($filter[$key] == $array[$i][$key]){
          
                                $list[] = $array[$i]['id'];
                            }
                        }
                    }
                }
            }
        }
                
        //Подсчитать количество id в массиве $list
        //Возвращаем массив ключами которого являются значения массива $list
        if(isset($list)){
            
            $values_count = array_count_values($list);
        }else{
            
            exit();
        }
        
        //Создаем массив схожими поля из $filter и $array  
        foreach($values_count as $key => $values){
            
            if($filter_count == $values){
                
              $result[] = $key;  
            }
        }
        
        if(!empty($result)){
            
            for($i = 0; $i <= count($array); $i++){
                
                if(isset($array[$i])){  
                  
                    foreach($result as $r){
                  
                        if(array_search($r,$array[$i])){
                    
                           if($array[$i]['id'] == $r){
                              
                               $output[] = $array[$i];
                          }
                        }
                    }    
                }  
            }
      
            return $output;
            
        }elseif(empty($filter)){

            return $array;  
        }
    }
              
    function getView()
    {

        $app = JFactory::getApplication();
        $filter_post = $app->input->get('filter', '', 'post');
        $search_title = $app->input->get('search_title', '', 'post');
        $search = $app->input->get('search', '', 'post');

        if (!empty($filter_post)) {
            return $this->sortString($this->newArray());
        } else {
            return $this->newArray();
        }

    }
      
    function getCategory(){
            
            $db             = $this->getDbo();
            $query          = $db->getQuery(true);
            $app            = JFactory::getApplication();
            $itemid         = $app->input->getInt('Itemid', '');
            $published      = $this->getState('filter.published',1);
            $archived       = $this->getState('filter.archived',2);
                        
            $query->select(
'a.id AS id, '.
'a.title AS title, '.
                        'a.link  AS link, '.
'a.params AS params '
);
            
            $query->from('#__menu AS a');
            
            $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()). ',' . $db->quote('*'). ')')
                ->where('(a.published = ' . (int) $published . ' OR a.published = ' . (int) $archived . ')')
                ->where('parent_id = "'.$itemid.'"');
            $query->order('a.lft');
            
            $db->setQuery($query);
            return $db->loadObjectList();
        }
        
        
    function getFilter()
    {

        $db = $this->getDbo();
        $query = $db->getQuery(true);
        $doc = JFactory::getDocument();
        $published = $this->getState('filter.published', 1);
        $archived = $this->getState('filter.archived', 2);

        $query->select(
            'a.id AS id, ' .
            'a.title AS title, ' .
            'a.catid  AS catid, ' .
            'a.type AS type, ' .
            'a.params AS params,' .
            'a.hidden AS hidden, ' .
            'a.filter AS filter'
        );

        $query->from('#__catalog_customoptions AS a');

        $query->where('(a.published = ' . (int)$published . ' OR a.published = ' . (int)$archived . ')');

        $query->order('a.ordering ASC');
        $db->setQuery($query);
        return $db->loadObjectList();
    }
        
}
?>

причем там есть формочка filter отправляется через AJAX, ее данные видно
« Последнее редактирование: 20.10.2014, 14:57:52 от saharin88 »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Post запрос в модели компонента
« Ответ #8 : 20.10.2014, 15:21:54 »
А значение вообще уходит? В Developer tools браузера убедитесь, что значение ушло на сервер. Если ушло, то сделайте var_dump($app->input->post) и посмотрите, пришло ли оно.
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #9 : 20.10.2014, 15:36:14 »
А значение вообще уходит? В Developer tools браузера убедитесь, что значение ушло на сервер. Если ушло, то сделайте var_dump($app->input->post) и посмотрите, пришло ли оно.

значения полей уходят,, + в начале компонента видно еще данные
http://screencast.com/t/bCluW9fHTM
http://screencast.com/t/Mpd4whZ5rx

а когда посмотреть (var_dump($app->input->post) ) в методе(getView ) модели, данных уже нет...

получается где то внутри теряются данные

по модели не видно где бы перезатералось что то?

контроллера для этого view там нет
« Последнее редактирование: 20.10.2014, 15:39:33 от saharin88 »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Post запрос в модели компонента
« Ответ #10 : 20.10.2014, 15:57:39 »
Сделайте дамп в модели, после $filter_post = $app->input->get('filter', '', 'post');
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #11 : 20.10.2014, 18:09:49 »
большое спасибо всем!
там я не посмотрел хорошо, а вывод реализован на AJAX, и естественно нужно было при отправке AJAX запроса добавить мои данные...
еще раз, всем большое спасибо, за то что уделили время!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание компонента для табеля рабочего времени

Автор sashahz

Ответов: 7
Просмотров: 723
Последний ответ 12.04.2021, 11:12:11
от sashahz
Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

Ответов: 1
Просмотров: 621
Последний ответ 01.03.2021, 04:08:48
от gartes
[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 1216
Последний ответ 12.02.2021, 11:24:26
от platonische
[РЕШЕНО] onChange в админке на field modal

Автор platonische

Ответов: 1
Просмотров: 589
Последний ответ 30.01.2021, 16:40:45
от platonische
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 3200
Последний ответ 23.01.2021, 07:55:56
от hmr