Vladimir

Vladimir

+51
Репутация
88
Рейтинг
#1 Создание компонента для создания карты сайта (sitemap.xml) 8 декабря 2021 в 20:40

Вы сами понимаете, что делаете? Это риторический вопрос)))

Lora

Третье сообщение риторите ради риторических вопросов))) ...  Если что-то по делу можете сказать, скажите пожалуйста.

Хук sitemap_sources.php  в файле manifest.php не прописал сразу, после того как прописал, появилось событие, его добавил и в настройках компонента «Генератор карты сайта и robots.txt» в разделе «Источники ссылок» компонент появился. Но ссылка на карту сайта компонента не генерируются здесь мойсайт.ру/sitemap.xml. Даже если в хуке sitemap_urls.php что-то не так прописал, вроде ссылка должна появиться. Хук sitemap_urls.php с таким кодом:

  1. <?php
  2.  
  3. class onMysitemapSitemapUrls extends cmsAction {
  4.  
  5. public function run($type){
  6.  
  7. $urls = array();
  8.  
  9. if ($type != 'link') { return $urls; }
  10.  
  11. $links = $this->model->limit(false)->getLinks(0, false, array('link'));
  12.  
  13. if ($links){
  14. foreach($links as $link){
  15. $urls[] = array(
  16. 'url' => href_to_abs($this->name, $link['link'].'.html')
  17. );
  18. }
  19. }
  20.  
  21. return $urls;
  22.  
  23. }
  24.  
  25. }
  26.  
#2 Создание компонента для создания карты сайта (sitemap.xml) 8 декабря 2021 в 19:46

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

Lora

Что это значит? Как события использовать?

Добавлено спустя Только что

Посмотрите, как сделано в контроллерах в движке. Как пример контроллер photos или frontpage.

Нужно два хука:

  1. sitemap_sources
  2. sitemap_urls

sitemap_sources — отвечает за список в настройках. Примеры тут или тут.

sitemap_urls возвращает непосредственно ссылки для сайтмапа. Примеры тут или тут.

Fuze

Спасибо! Попробую.

Добавлено спустя 5 часов

Создал хук, за основу взял photos, но что-то не сработало, я как понимаю, после добавления хука sitemap_sources.php в свой компонент, в настройках компонента «Генератор карты сайта и robots.txt» в разделе «Источники ссылок», должен появиться мой компонент, но он не появился.  Или ещё что-то нужно сделать чтобы хук активировать? Код хука sitemap_sources.php:

  1. <?php
  2.  
  3. class onMysitemapSitemapSources extends cmsAction {
  4.  
  5. public function run(){
  6.  
  7. return array(
  8. 'name' => $this->name,
  9. 'sources' => array(
  10. 'mysitemap' => LANG_MYSITEMAP_CONTROLLER
  11. )
  12. );
  13.  
  14. }
  15.  
  16. }

 

#3 Создание компонента для создания карты сайта (sitemap.xml) 8 декабря 2021 в 14:08

А зачем? Вы хотите заменить родную вашей?

Lora

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

#1 Создание компонента для создания карты сайта (sitemap.xml) 8 декабря 2021 в 13:39

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

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

Вообщем, пройда краткий курс, по генерации компонета https://www.youtube.com/watch?v=1QzpEnPwjwY, понял как добавлять ссылки в базу. 

2. Взаимодействие с контроллером sitemap.

В контроллер по адресу \system\controllers\sitemap, в разделе «Источники ссылок», должен появиться мой контроллер. Вот тут уже не понятно.

3. Генерирование карты сайта компонента, ссылка на которую будет в списке ссылок, сгенерированных компонентом sitemap по адресу мойсайт.ру/sitemap.xml

Вообще не понятно.

 

Может кто-нибудь подскажет, как решить?

#1 Сортировка в поиске на сайте instantcms.ru 8 декабря 2021 в 08:05

Добавьте пожалуйста на сайте instantcms.ru при поиске, сортировку по дате добавления. Когда был сайт instantcms.ru на первом инстанте, такая функция была, после переезда, пропала. Сейчас из-за отсутствия этой функции искать не удобно.

#4 sendNoticeEmail и спам 28 ноября 2021 в 10:19

Попадание письма в спам зависит от ряда параметров. И CMS — это последнее, в чём может быть причина. Настраивайте правильно свой SMTP сервер. Проверять письма можно, например, через этот тестер.

Fuze

Спасибо! Протестировал через тестер, который вы приложили, в основном всё хорошо, всё либо зелёное либо жёлтое, красный в одном месте, спам листы, из 24 спам листов, присутствует в одном SORBS. 

#5 sendNoticeEmail и спам 26 ноября 2021 в 15:11

Смотрите тогда настройки почты.

Lora

Какие настройки?

Добавлено спустя 2 минуты

А вы куда рассылали? Все письма на одну почту что ли? Если нет, то при чём тут количество писем?

Lora

Да мне все-таки кажется, нужно небольшое количество сразу отправлять, если правильно помню, даже mailchamp сразу все письма не отправляет.

#6 sendNoticeEmail и спам 26 ноября 2021 в 14:58

Рассылку делал пользователям на разные почты.

#1 sendNoticeEmail и спам 26 ноября 2021 в 14:27

Сделал рассылку через функцию sendNoticeEmail ,  и эта рассылка сразу в спам попала. Вероятно потому что было разослано в районе 100 писем. Теперь в gmail, даже если убрать из спама, нажать «Не спам», при переходе во входящие, надпись что-то вроде "… вы уверены что не спам, есть все признаки спама...". Но когда пользователю отправляешь сообщение, и приходит сообщение на email, данной надписи нет. Я думаю это только той рассылки что в спам попало касается. 

Я как понимаю сразу большой объём рассылать нельзя, нужно как-то последовательно и чтобы всё через таблицу cms_jobs в базе данных проходило, наверное так и если да, то как это сделать? 

#7 [ЕСТЬ РЕШЕНИЕ] Как определить, стоит ли таблице cms_users в столбце unsubscribe число 1 или нет? 25 ноября 2021 в 20:30

Только за место $user_id написал $user['id']

Vladimir

Вот я и говорю, задавайте вопрос правильно. Теперь у вас лишний запрос. А если бы было известно, что у вас уже получен юзер, то всё свелось бы к этому:

  1. $unsubscribe = $user['unsubscribe'];

Или нет, даже это не нужно. Просто условие было бы другим:

  1. if ($user['unsubscribe'] != 1) {
  2. $messenger->sendNoticeEmail('skills_awards', array(
  3. 'href_site' => $url = cmsConfig::getInstance()->host,
  4. 'href' => href_to('skills', $skill['id'])
  5. ));
  6. };

А всё остальное лишнее.

Нифигаccе о-го-гошеньки

Да, я тоже так сначала подумал и попробовал, но почему-то ошибка возникает.

#8 [ЕСТЬ РЕШЕНИЕ] Как определить, стоит ли таблице cms_users в столбце unsubscribe число 1 или нет? 25 ноября 2021 в 19:23

Если этот столбец там точно есть и вы знаете id юзера. Ну а вообще было бы лучше, если бы вы сразу рассказали, что это, какие данные имеются и т.д.

  1. $user = cmsCore::getModel('users')->getItemById('users', $user_id);
  2. $unsubscribe = $user['unsubscribe'];
Нифигаccе о-го-гошеньки

Супер! Спасибо! 

Только за место $user_id написал $user['id'], ну и переменную $user переименовал в $user_unsub, там конфликты были, получилось так

$user_unsub = cmsCore::getModel('users')->getItemById('users', $user['id']);
$unsubscribe = $user_unsub['unsubscribe'];

Ну а если целиком доработка, то так:

$user_unsub = cmsCore::getModel('users')->getItemById('users', $user['id']);
$unsubscribe = $user_unsub['unsubscribe'];
if ($unsubscribe != 1) {
           $messenger->sendNoticeEmail('skills_awards', array(
                                        'href_site'  => $url = cmsConfig::getInstance()->host,                                        
                                        'href'  => href_to('skills', $skill['id'])
            ));        
};    

#9 [ЕСТЬ РЕШЕНИЕ] Как определить, стоит ли таблице cms_users в столбце unsubscribe число 1 или нет? 25 ноября 2021 в 13:44
  1. if ($unsubscribe == 1) {
  2. // здесь 1
  3. }
Нифигаccе о-го-гошеньки

Ну да, это уже второй шаг, а меня первый интересует, как переменой $unsubscribe присвоить значение из cms_users столбца unsubscribe ? 

#10 [ЕСТЬ РЕШЕНИЕ] Как получить url сайта? 25 ноября 2021 в 13:39

Ого, сколько подробностей вылезло. Ну так с этого надо было и начинать.

  1. $url = cmsConfig::getInstance()->host;
Нифигаccе о-го-гошеньки

Ураа!!! Спасибо!!

#11 [ЕСТЬ РЕШЕНИЕ] Как получить url сайта? 25 ноября 2021 в 13:28

Да я про то, как это в PHP реализовать

Vladimir

Ну тут уже вы рассмешили.

IamB

Ну расскажите, если знаете!!! Пожалуйста. А то, устал искать, пробовал так

$url = $_SERVER['REQUEST_URI']; 

но в общем это не то, здесь путь. А нужен корневой url. 

Может есть что-то подобное?

#1 [ЕСТЬ РЕШЕНИЕ] Как определить, стоит ли таблице cms_users в столбце unsubscribe число 1 или нет? 25 ноября 2021 в 13:24

Расскажу немного для чего это нужно. Есть отличный компонент, Достижения (звании, награды) Но есть там один момент, который не устраивает. Нет уведомления на email, о том, что пользователю присвоено звание. Собственно этот момент и решил доработать. Уведомления решил рассылать через функцию sendNoticeEmail. Но некоторые пользователи отказались от рассылок, в столбце unsubscribe это обозначается числом «1». Вот не знаю как к этому столбцу подобраться. А там, думаю, уже можно будет реализовать через if else, выводить  sendNoticeEmail или нет.

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.