Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
модуль внутренней перелинковки
-
24 мая 2011 г.
-
очень не хватает такого модуля и думаю не только мне: чтобы можно было линковать прямо из текста по заданным анкорам.
планируется ли его создание?
можно ли его заказать за отдельную плату? думаю, если всем миром скинемся то сумма хорошая получится. -
-
-
-
24 мая 2011 г.
-
Есть уже такой модуль. Тестируем. Скоро в пакете будет
-
-
-
-
24 мая 2011 г.
-
прошу учесть ряд моментов в модуле:
1. страницы не должны ссылаться друг на друга
2. страница А может ссылаться на страницу Б только один раз
3. на обычном тарифе виртуального хостинга, будет ли модуль справляться с нагрузкой на сайте с 10 000 страниц если с каждой страницы будет идти 8 ссылок? -
-
-
-
12 июня 2011 г.
-
А когда тогда ждать-то?)
-
-
-
-
04 июля 2011 г.
-
Объясните в чем разница в использовании данного модуля и его преимущество, от ручного способа вставки ссылок по ключевым словам, на другие страницы, дабы продолжить кольцо ссылок?
-
-
-
-
06 июля 2011 г.
-
Разница в том, что ручной способ - ручной, а в модуле - автоматизированный.
Пока это просто глобальная функция с файлом с ключевиками. Пропускаете через эту функцию, например $row["text"] из модуля вопрос-ответ, и по всем текстам на сайте если встречаются ключевики в вопросах-ответах пользователей, то они превращаются в ссылки на нужные внутренние страницы. -
-
-
-
03 ноября 2011 г.
-
Теперь доступен этот функционал для всех
Скачивайте самый последний пакет diafan.CMS и берите от туда файл /includes/core.php
В корне сайта создайте файл keywords.php
Такого содержания
Код
<?php
/**
* Diafan.CMS
*
* @author diafan.ru
* @version 4.5
* @license http://cms.diafan.ru/license.html
* @copyright Copyright (c) 2003-2011 OOO "Диафан". (http://diafan.ru)
*/
if (! defined('DIAFAN'))
{
include(dirname(dirname(__FILE__)).'/includes/404.php');
}
$keywords = array(
'Приходите' => '/',
'час' => 'http://diafan.ru/'
);
В нужном вам модуле в любом месте хоть в module.view.php хоть в module.model.php, вызывайте функцию $this->diafan->key_values($text).
Она возвращает измененный текст.
Для примера возьмем модуль "Новости" файл /modules/news/news.view.php шаблон вывода новости функция id() строка 479Код
//вывод анонса новости
if ($row['anons'])
{
echo '<div class="news_anons">'.$this->diafan->key_values($row['anons']).'</div>';
} -
-
-
-
03 ноября 2011 г.
-
Гарик забыл написать как работает функция в принципе.
Есть глобальная функция, называется key_values()
Вызывать ее можно откуда угодно, из любого модуля, из любой функции.
Эта функция работает в паре с файлом keywords.php, который должен лежать в корне сайта.
Файл keywords.php представляет из себя просто массивКод$keywords = array(
'Ключевик1' => 'http://site.ru/url/',
'Ключевик2' => '/url2/',
'Ключевик3' => 'http://site.ru/url3/'
);
По умолчанию этого файла в корне нет! Так как функция редко и мало кем используется, файл надо создавать самим.
Функция делает что: она берет текст и если встречает там ключевики из указанного массива, она меняет их на ссылки на соответствующую страницу.
То есть, у вас есть сайт по кондиционерам и на нем рубрика "Вопрос-ответ", куда задается куча вопросов по кондиционерам. Вы хотите, чтобы из всех ответов, которые ваш консультант отвечал посетителям, слова "кондиционер" ссылались на главную страницу сайта.
Тогда идете в файл /modules/faq/faq.view.php, находите функцию id() и там вывод ответа echo $row["text"]; и делаете так:Кодecho $this->diafan->key_values($row["text"]);
Затем в корне сайта создаете файл keywords.phpКод$keywords = array(
'кондиционер' => '/',
'кондиционера' => '/',
'кондиционеру' => '/',
'кондиционером' => '/',
'кондиционеры' => '/',
'кондиционеров' => '/'
);
И все. Во всех ответах на вопросы эти слова автоматически сошлются на главную страницу.
Так же можете применить к комментариям, которые оставляют пользователи, к форуму, к новостям, а можете к функции show_body(), чтобы вообще все ключевики на сайте ссылалось куда надо. -
-
-
-
23 ноября 2011 г. , редакция: 24 ноября 2011 г.
-
Если ссылки с каким-то анкором на какую-то страницу я захочу убрать, то мне достаточно будет убрать соответствующую строчку из массива?
И подскажите что и в каком файле нужно прописать, чтобы ссылки проставлялись из текста обычных страниц. -
-
-
-
24 ноября 2011 г.
-
Конечно. В том-то и удобство, что файл открыли и вот он список ключевиков всех перед глазами. В текстовике поправили, сохранили - готово. Убрали строку, ссылки пропали, конечно.
-
-
-
-
24 ноября 2011 г.
-
Для текста в сайте - это тег show_body
Функция show_body() в /includes/function.php
Строка 71 пишетеКод$text=$this->diafan->key_values($text);
Т.е. дополнительно переменную text пропускаете через эту функцию. -
-
-
-
24 ноября 2011 г.
-
Сделал все как описано выше. Эффекта нет. Текст который встречается,на сайте - просто текст. Делал на локалке - может поэтому? После вставки $text=$this->diafan->key_values($text); - контент с главной вообще улетел непонятно куда. Может что не так в keywords.php?
-
-
-
-
24 ноября 2011 г.
-
У меня версия 4.3. Вот функция для этой версии:Код
public function show_body()
{
if(! $this->diafan->title_no_show)
{
echo '<h1>'.($this->diafan->titlemodule ? $this->diafan->titlemodule : $this->diafan->name).'</h1>';
}
if(! $this->diafan->show && ! $this->diafan->cat && ! $this->diafan->step && (! isset($_GET["catid"]) || $this->diafan->module != "shop"))
{$this->view->get_function_in_theme($this->diafan->text);
}
$this->view->module->show_module();
return TRUE;
}
В каком месте нужно прописать эту строчку -Код$text=$this->diafan->key_values($text);
-
-
-
-
25 ноября 2011 г.
-
Смотрите:Код
$this->view->get_function_in_theme($this->diafan->text);
это обработка переменной $this->diafan->text для поиска шаблонных тегов вставленных в контент.
В Вашей версии переменная называется не $text, а $this->diafan->text. Но смысл остается тот же.
До или после обрабатывайте эту переменную для замены ключевиков на ссылки.Код$this->diafan->text=$this->diafan->key_values($this->diafan->text);
-
-
-
-
25 ноября 2011 г. , редакция: 25 ноября 2011 г.
-
Не хочет работать у меня.
Файл core.php из дистрибутива 4.5 в папку include залил. Keywords.php в корень тоже залил.
В таком варианте:Код$this->view->get_function_in_theme($this->diafan->text);
$this->diafan->text=$this->diafan->key_values($this->diafan->text);
ссылки не появляются
А в таком:Код$this->diafan->text=$this->diafan->key_values($this->diafan->text);
$this->view->get_function_in_theme($this->diafan->text);
статья пропадает.
Кроме этого с вариантом core.php из дистрибутива 4.5 в панели управления при нажатии на крестик слева от названия страницы, категория не открывается. Меняю core.php на преждний, все нормально начинает работать. -
-
-
-
24 ноября 2011 г.
-
Тоже не могу понять,как выглядит результат данного модуля. Текст который встречается из keywords.php - выделяется как ссылка и при клике переход? Или иначе?
-
-
-
-
25 ноября 2011 г.
-
Виталий, ответьте, пожалуйста на вопросы.
-
-
-
-
25 ноября 2011 г.
-
Прилагаю пример keywords.php
-
-
-
-
25 ноября 2011 г.
-
У меня ноль эффекта. Что сделал на локальном:
1. function.php после 71 строки $this->view->get_function_in_theme($text); добавил
$text=$this->diafan->key_values($text);
2. в корень бросил keywords.php
3. специально прописал стили для ссылок на главной.
Итог: на главной в тексте есть ключевики. При просмотре firebugом кода, просто тестк без a href.
Что не так? -
-
-
-
25 ноября 2011 г.
-
Реально сделал все как надо. Не работает. Может денвер гонит? У кого-нибудь на локалке робит?
-
-
-
-
25 ноября 2011 г.
-
Что не работает? РНР?
-
-
-
-
26 ноября 2011 г.
-
Ключевики в тексте, не становятся a hrefами.
-
-
-
-
26 ноября 2011 г.
-
Ребята, признайтесь, это флеш-моб? Как в Крокодиле, когда игрок показывает жирафа и все знают, что он показывает жирафа, кричать ему что угодно, только не жирафа.
-
-
-
-
26 ноября 2011 г.
-
Функция чувствительна к регистру, склонениям и пробелам вокруг слова. "слон" не выделит "слонами", не выделит "прислониться", не выделит "Слон", не выделит "слон_и_моська"
-
-
-
-
30 ноября 2011 г.
-
Есть ли такая возможность, чтобы прописав единожды функцию, модуль распространял свое действие на весь контент и на все модули сайта? Или для каждого участка вывода текста в модулях, нужно вызывать функцию $this->diafan->key_values($text)?
-
-
-
-
06 декабря 2011 г.
-
diafan.CMS использует буферизацию и сжатие страниц.
Функция ob_start в качестве первого параметра принимает callback функцию, которая будет вызвана при сбросе (отправке) буфера вывода.
В файле /includes/gzip.php вне класса напишем ее
Кодfunction diafan_output($buffer)
{
if (file_exists(ABSOLUTE_PATH.'keywords.php'))
{
include_once(ABSOLUTE_PATH.'keywords.php');
foreach ($keywords as $k => $v)
{
$buffer = preg_replace('/([^a-zA-Zа-яА-Я])'.$k.'([^a-zA-Zа-яА-Я])/', '$1<a href="'.$v.'">'.$k.'</a>$2', $buffer);
}
}return ob_gzhandler($buffer, 5);
}
и перепишем функцию init_gzip таким образом чтобы везде она вызывалась ob_start('diafan_output');.
Но важно понимать, что так мы будем заменять не только текст в нужных нам блоках, но даже и title и meta тегах.
Что бы этого избежать можно переписать регулярное выражение так, чтобы оно работало только в пределах тега body. -
-
-
-
06 декабря 2011 г.
-
А как переписать регулярное выражение так, чтобы оно работало только в пределах тега body?
-
-
-
-
07 декабря 2011 г. , редакция: 07 декабря 2011 г.
-
Если в Функции show_body() в /includes/function.php
Строка 71 прописать Код $text=$this->diafan->key_values($text); - то это и есть действие в пределах тега body. ? -
-
-
-
07 декабря 2011 г.
-
Конечно!
В общем-то попробовать - дело пары минут. Быстрее, чем на форум идти и ответа ждать полдня -
-
-
-
08 декабря 2011 г.
-
Что-то не получается. Мои действия:
1. в файле /includes/gzip.php прописалКодfunction diafan_output($buffer)
{
if (file_exists(ABSOLUTE_PATH.'keywords.php'))
{
include_once(ABSOLUTE_PATH.'keywords.php');
foreach ($keywords as $k => $v)
{
$buffer = preg_replace('/([^a-zA-Zа-яА-Я])'.$k.'([^a-zA-Zа-яА-Я])/', '$1<a href="'.$v.'">'.$k.'</a>$2', $buffer);
}
}return ob_gzhandler($buffer, 5);
}
2. gzip.php строка 85,96,105 прописал ob_start('diafan_output');
3. show_body() в /includes/function.php
строка 71 прописал Код $text=$this->diafan->key_values($text);
Ни какой реакции. Что не так? -
-
-
-
10 августа 2012 г.
-
ЦитатаСделал все как описано выше. Эффекта нет. Текст который встречается,на сайте - просто текст.ЦитатаУ меня ноль эффекта.ЦитатаКлючевики в тексте, не становятся a hrefами.
Слушайте, сейчас сам бился часа полтора, не работало. Копался-копался, начал трассировать - понял в чем проблема!
Кодировка! Кодировка файла keywords.php! Она должна быть UTF without BOM, как и все файлы CMS. У меня была ANSI и ничего не работало, есессно. Т.к. ключевики брались из файла ромбиками и не находились в тексте. Изменил кодировку, все заработало.
Это так, на будущее может кому поможет. -
-
-
-
11 апреля 2013 г.
-
В версии 5.2, захожу в админку, далее раздел "перелинковка", кликаю добавить, вписываю слово, ссылку, ставлю галку "показывать на сайте", жму сохранить, перегружаю страницу, ссылки нет
-
-
-
Новости
-
18 июня
-
В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
-
24 апреля
-
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
-
12 января
-
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.
Блоги
-
24.04.2024
-
Выпустили новую сборку DIAFAN.CMS 7.1.4.
Блоги
-
12.01.2024
-
В данном руководстве познакомим вас с панелью управления DIAFAN.CMS