Pages, Articles & News
Tools & Plugins
Example / Placeholder Title


Description as an example placeholder. Sample text content for further customization of the "Index36" template.

You are free to edit and customize the template however you like. If you don’t have time or enough knowledge — you can always order template adaptation by contacting me via GitHub or private messages on the digital goods marketplace.

2024-01-23 05:42
Avatar" alt="" class="rounded-circle border border-2 border-light" width="54" height="54">

Небольшой лайф-хак владельцам сайтов на 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. Если кто решит сделать или уже делал через экстраполя - для вас отдельный раздел по оригинальному модулю форумов из коробки котонти.

 

This post was edited by Administrator (2024-02-19 00:25, 2 years ago)
Account