Форум русской поддержки Joomla!® CMS
04.12.2016, 07:59:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Open graph без плагина

 (Прочитано 760 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« : 08.11.2015, 15:34:07 »

Хочу без использования сторонних плагинов вывести Open Graph protocol, чтобы данные генерировались в файле шаблона.
<meta property="og:title" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="" />
<meta property="og:description" content=""/>
<meta property="og:image" content="" />

Подскажите как правильно заполнить  Smiley
И как сделать, чтобы выбиралось либо имеющееся изображение из материала, либо лого, если оно отсутствует?
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #1 : 08.11.2015, 15:58:47 »

Первые 4 тега можно вывести через шаблон. С изображением сложнее, но можно тоже через шаблон: название изображения привязать к Id, например img_115
« Последнее редактирование: 08.11.2015, 16:10:34 от Филипп Сорокин » Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #2 : 08.11.2015, 16:57:51 »

Нашел только такой вариант http://joomlaforum.ru/index.php/topic,275868.msg1545495.html#msg1545495
head.php ведь может быть заменен при обновлении?
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #3 : 08.11.2015, 18:08:25 »

Нашел только такой вариант http://joomlaforum.ru/index.php/topic,275868.msg1545495.html#msg1545495
head.php ведь может быть заменен при обновлении?
Обязательно будет заменён.
Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #4 : 08.11.2015, 18:27:15 »

Обязательно будет заменён.
Подскажите, как правильно прописать переменные в шаблоне?
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #5 : 08.11.2015, 18:38:29 »

Подскажите, как правильно прописать переменные в шаблоне?
Вы с изображением определились? Вам подходит вариант с привязкой к имени изображения ID материала?
Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #6 : 08.11.2015, 19:17:30 »

Вы с изображением определились? Вам подходит вариант с привязкой к имени изображения ID материала?
Да http://joxi.ru/12Mp9EOIpl99mJ. А если изображений нет, то подставить логотип.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #7 : 08.11.2015, 20:38:55 »

Да http://joxi.ru/12Mp9EOIpl99mJ. А если изображений нет, то подставить логотип.
Что именно да? Привязать имя файла изображения к ID?
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #8 : 08.11.2015, 21:41:14 »

Код
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$page_title = $doc->getTitle();
$page_uri = JURI::current();
$page_description = $doc->getDescription();
$article_id = $app->input->getInt('id', '');
$img_source = "images/img_{$article_id}.jpg";
$logo_source = "images/logo.jpg";
 
// Получаем компонент и его представление
$option = $app->input->getString('option', '');
$view = $app->input->getString('view', '');
 
// Проверяем, если изображение существует, и что текущая страница является именно материалом com_content
if ($option === "com_content" && $view === "article" && file_exists(JPATH_ROOT . DIRECTORY_SEPARATOR . $img_source)) {
   $meta_source = JURI::root(). $img_source;
} else {
   $meta_source = JURI::root(). $logo_source;
}
« Последнее редактирование: 07.03.2016, 13:45:25 от Филипп Сорокин » Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #9 : 09.11.2015, 11:04:51 »

Спс, работает, но с изображением не получается, как в выводе добавить две переменные: либо лого, либо изображение из материала?
<meta property="og:image" content="<?php echo $logo_source ?>" />
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #10 : 09.11.2015, 11:37:16 »

Код:
$meta_source
Перед этим определите $logo_source и img_source
Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #11 : 09.11.2015, 15:22:06 »

Можно еще глупый вопрос, $img_source = "images/stati/img_{$article_id}.jpg"; Т.е. мне в эту папку надо помещать изображения с названием img_idматериала.jpg?
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #12 : 09.11.2015, 15:43:27 »

Ну да! По крайней мере так задумано Azn
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #13 : 10.11.2015, 17:37:41 »

удалено
« Последнее редактирование: 07.03.2016, 13:29:44 от Филипп Сорокин » Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #14 : 06.03.2016, 21:18:19 »

Нужна ваша помощь, хочу добавить проверку на наличие "Изображение полного текста материала", т.е. если оно есть, то подставляем его для OG, если нет, то $logo_source = "images/logo.jpg";
Спасибо  Smiley
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #15 : 07.03.2016, 13:31:10 »

Код
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$option = $app->input->getCmd('option');
$view = $app->input->getCmd('view');
 
if($option === "com_content" && $view === "article")
{
   $id = $app->input->getCmd('id');
   $article = JTable::getInstance("content");
   $article->load($id);
   $images = json_decode($article->get('images'));
 
   if (!empty(images->image_fulltext)) {
       // раз
   } else {
       // два
   }
}
« Последнее редактирование: 07.03.2016, 13:45:09 от Филипп Сорокин » Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #16 : 07.03.2016, 14:15:44 »

Пробую совместить ваш код с кодом от effrit из этой темы http://joomlaforum.ru/index.php/topic,322786.msg1614553.html#msg1614553, но пока лишь ошибка 500 на последнее условие проверки image_fulltext

Код:
$article_id = (JRequest::getVar('option')==='com_content' && JRequest::getVar('view')==='article')? JRequest::getInt('id') : 0;
if($article_id){
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('images'))
->from($db->quoteName('#__content'))
->where('id = '. $db->Quote($article_id));

$db->setQuery($query);
$data = $db->loadResult();
$pics = json_decode($data);
echo $pics->image_fulltext;
}

$option = $app->input->getCmd('option');
$view = $app->input->getCmd('view');
if($option === "com_content" && $view === "article")
{
    $id = $app->input->getCmd('id');
    $article = JTable::getInstance("content");
    $article->load($id);
    $images = json_decode($article->get('images'));
    if (!empty(images->image_fulltext)) {
$logo_source = "images/sn.png";
    } else {
$images->image_fulltext;
    }
}
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #17 : 07.03.2016, 14:23:30 »

Ничего не понял. Что нужно сделать-то?
Записан
kik84
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #18 : 07.03.2016, 14:50:59 »

Ничего не понял. Что нужно сделать-то?

Вытянуть изображение из fulltext материала и, если оно существует, подставить вместо $img_source = "images/img_{$article_id}.jpg";, если нет, то $logo_source.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1443


« Ответ #19 : 07.03.2016, 15:34:01 »

Решение я написал выше.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet