Категории форума

Видео с YouTube в топик-старте

Модифицируем модуль "Forums" для прикрепления видео к теме форума, для возможности прикрепления видео с YouTube по ID-идентификатору именно в первом сообщении топика..


webitproff
webitproff • 23.01.2024 06:42 #1

Небольшой лайф-хак владельцам сайтов на Cotonti, как к топикам на форуме добавить возможность вставлять видео с YouTube по ID-идентификатору этого видео.

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

Инструкция, по внедрению функционала встраивания видео, в первое сообщение темы форума, не является прямым или косвенным руководством от официальных разработчиков.

1. В базе данных создаем поле для ID-идентификатора видео з YouTube

Варинат №1.

Через phpmyadmin в таблице `cot_forum_topics` создаем столбец (колонку) `ft_youtubevideoid`.

Вариант №2.

Через патч. В папке /modules/forums/setup/ находим самую последнюю версию патча, например видим `patch_1.1.8.sql`. Значит создаем новый файл патча и "по-старшенству" - `patch_1.1.8.1.sql`.

В этот патч прописуем сценарий создания новой колонки в нужной таблице:

ALTER TABLE `cot_forum_topics` ADD COLUMN `ft_youtubevideoid` varchar(36) NOT NULL DEFAULT '';

Идем в админку и открываем модуль форумов по ссылке

https://my-project.ltd/admin/extensions?a=details&mod=forums

только в ссылке нужно заменить `my-project.ltd` домен вашего сайта.

жмем кнопку "обновить" и тут же проверяем в phpmyadmin, наличие в таблице `cot_forum_topics` колонки с именем - `ft_youtubevideoid`.

2. Модифицирем файл создания новой темы "forums.newtopic.php".

Вносим собственные правки. Номера строк указанные здесь и у вас могут отличаться.

Идем в папку /modules/forums/inc/ и открываем файл forums.newtopic.php.

2.1 Строка документа № 38.

находим

$rtopic = [
    'ft_title' => '',
    'ft_desc' => '',
    'ft_mode' => '',
];

и после "режима темы"

'ft_mode' => '',

добавляем

    'ft_youtubevideoid' => '',

и получаем в итоге


$rtopic = [
    'ft_title' => '',
    'ft_desc' => '',
    'ft_mode' => '',
    'ft_youtubevideoid' => '',
];

2.2 Строка № 63

Находим строку

	$rtopic['ft_desc'] = cot_import('rtopicdesc','P','TXT', 255);

и сразу после неё добавляем строку

	$rtopic['ft_youtubevideoid'] = cot_import('rtopicyoutubevideoid','P','TXT', 36);

2.3. В районе строки 175 находим

	'FORUMS_NEWTOPIC_DESC' => cot_inputbox('text', 'rtopicdesc', $rtopic['ft_desc'], array('size' => 56, 'maxlength' => 255)),

добавляем

	'FORUMS_NEWTOPIC_TOPIC_YOUTUBEVIDEOID' => cot_inputbox('text', 'rtopicyoutubevideoid', $rtopic['ft_youtubevideoid']),

2.3 Добавляем тег в шаблон.

Открываем шаблон создания новой темы forums.newtopic.tpl

и в теле формы

<form action="{FORUMS_NEWTOPIC_SEND}" method="post" name="newtopic" class="uk-margin-large">
....
</form>

добавляем поле для ввода идентификатора

    <div>
        <div class="uk-form-label">
			{PHP.L.New_Topic_youtubevideoid}: 
		</div>
        <div class="uk-form-controls">
			{FORUMS_NEWTOPIC_TOPIC_YOUTUBEVIDEOID}
		</div>
    </div>

3. Файл редактирования постов "forums.posts.php".

3.1. Открываем "forums.posts.php" и идем в район строки №54.

находим

$sql_forums = Cot::$db->query("SELECT ft_state, ft_mode, ft_title, ft_desc FROM $db_forum_topics WHERE ft_id = $q LIMIT 1");

добавляем в неё `, ft_youtubevideoid` или просто комментируем строку, и за ней сразу добавляем

$sql_forums = Cot::$db->query("SELECT ft_state, ft_mode, ft_title, ft_desc, ft_youtubevideoid FROM $db_forum_topics WHERE ft_id = $q LIMIT 1");

3.2 Строка №72

находим

	$rtopic['ft_desc'] = cot_import('rtopicdesc', 'P', 'TXT', 255);

сразу за ней добавляем

	$rtopic['ft_youtubevideoid'] = cot_import('rtopicyoutubevideoid','P','TXT');

3.3 Строка №179

находим

		'FORUMS_EDITPOST_TOPICDESCRIPTION' => cot_inputbox('text', 'rtopicdesc', $rowt['ft_desc'], array('size' => 56, 'maxlength' => 255)),

сразу за ней добавляем

	'FORUMS_EDITPOST_TOPICSTART_YOUTUBEVIDEOID' => cot_inputbox('text', 'rtopicyoutubevideoid', $rowt['ft_youtubevideoid']),

3.4 Открываем шаблон редактирования постов и топика модуля "Forums" - forums.editpost.tpl

Здесь в теле формы

<form action="{FORUMS_EDITPOST_SEND}" method="post" name="editpost" class="uk-form-stacked">
...
</form>

в участке кода, который внутри CoTemplate-блока:

 <!-- BEGIN: FORUMS_EDITPOST_FIRSTPOST -->
 ...
 <!-- END: FORUMS_EDITPOST_FIRSTPOST -->

добавляем поле редактирования

    <div>
        <div class="uk-form-label">
			{PHP.L.New_Topic_youtubevideoid}: 
		</div>
        <div class="uk-form-controls">
			{FORUMS_EDITPOST_TOPICSTART_YOUTUBEVIDEOID}
		</div>
    </div>

4. Открываем файл сценариев для списка постов forums.posts.php

4.1 Идем в район строки №392

находим

		'FORUMS_POSTS_ROW_TEXT' => cot_parse($row['fp_text'], (Cot::$cfg['forums']['markup'] && Cot::$cfg['forums']['cat_' . $s]['allowbbcodes'])),

сразу за ней добавляем

'FORUMS_POSTS_ROW_TOPIC_YOUTUBEVIDEOID' => $rowt['ft_youtubevideoid'],

4.2 Открываем шаблон списка постов и самой темы - forums.posts.tpl

и в нужном месте, например перед тегом

<div class="uk-margin"> 
	{FORUMS_POSTS_ROW_TEXT} 
</div>

добавляем код вывода видео с YouTube в теле топика/темы форума

		    <!-- IF {FORUMS_POSTS_ROW_TOPIC_YOUTUBEVIDEOID} -->
		    <div class="uk-margin">
		      <iframe src="https://www.youtube-nocookie.com/embed/{FORUMS_POSTS_ROW_TOPIC_YOUTUBEVIDEOID}?autoplay=0&amp;showinfo=0&amp;rel=0&amp;modestbranding=1&amp;playsinline=1&amp;enablejsapi=1" allowfullscreen="" uk-responsive="" uk-video="autoplay: false" class="uk-responsive-width" style="height: 394px;" width="1920" height="1080" frameborder="0"></iframe>
		    </div>
		    <!-- ENDIF -->	

P.S.

1. Приведенная HTML- разметка в этой теме из фронт-энд фреймворка UIkit 3.

2. Если кто решит сделать или уже делал через экстраполя - для вас отдельный раздел по оригинальному модулю форумов из коробки котонти.

 

Отредактировано: Administrator (19.02.2024 01:25, 2 года назад)
🗿

🧙‍♂️ Радуйся, странниче добрый и честный! Не понапрасну привела тя стезя в земли сии. Зде бо мужи мудры и искусники дела писменнаго и численнаго, что куют словеса и плетут узоры кода, тайны разгадывают и знанием делятся, летописи множа и ремесло цифровое творя.
⬅️ Аще налево пойдеши — обрящеши грамоты древния, писания старинныя и свитки учения. ⬆️ Аще прямо — слово мудрое и совет от мужей разумеющих, что в деле кодописном искусны, получиши. ➡️ Аще направо — сам в писцы и летописцы внидеши, и в ремесло цифровое, где строки и знаки в дело живое обращаются, слово свое в память веков вложиши.
📝 Не медли же — нареки имя свое, и вниди в чин наш, и стань с нами в братстве, где код есть магия, а строки — заклятия живыя, числом и буквою слово едины суть.
🏰 Не тайно есть собрание сие, и не инициации в нем, но многое сокрыто от пришлых и ступалого, понеже не всякому открывается знание, но токмо ищущим и пребывающим в деле сем.