Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Помогите получить прямую ссылку на комментарий

Помогите получить прямую ссылку на комментарий


     07.07.2014    комментарии    Все вопросы » Общие вопросы по PHP    4337

вопрос
Добрый вечер, возможно кто-то из опытных разработчиков сможет мне помочь.

Есть модуль, он формирует вот такую ссылку, которая ведет на новость у которой есть комментарии - "http://сайт.ru/".$row['cat_alt_name']."/".$row['post_id']."-".$row['alt_name'].".html", мне нужно чтобы ссылка была прямой ссылкой на сам комментарий.

В документации написано что {comment-id} - Идентификационный номер комментария, но как правильно внести в код, я к сожалению не знаю.



Ответил: D0Gmatist


вариант А:
1) В шаблоне comments.tpl
Весь шаблон оформить id
<div id="comment-id-{comment-id}">
   тут шаблон
</div>
2) Там же вставить куда удобно ссылку
    <a href="#comment-id-{comment-id}" title="Ссылка на комментарий #{comment-id}">#{comment-id}</a>
вариант Б (с модельным окном):
1) В шаблоне comments.tpl
Весь шаблон оформить id
<div id="comment-id-{comment-id}">
   тут шаблон
</div>
Там же вставить куда удобно кнопу вызова модельного окна
<span onclick="urlCom('{comment-id}')" title="Ссылка на комментарий #{comment-id}">#{comment-id}</span>
2) В fullstory.tpl перед тегом
{comments}
прописать
<script type="text/javascript">
function urlCom( id ) { // имя функции BtnUrl

    var url = window.location.href.split("#");

    $("#urlComWindows .urlComInput").val( url[0] + "#comment-id-" + id );

    $(function(){
        $( "#urlComWindows" ).dialog({  // по клику на urlCom открываем окно PanelWindows
            draggable: true, // true - false - запрет разрешение перемещения окна
               autoOpen: true,
               show: 'fade', //slide,fade,zoom,blind - эффекты открытия
               hide: 'fade', //slide,fade,zoom,blind - эффекты закрытия
               width: 450,  // ширина окна
               buttons: {
                "Закрыть": function() {$( this ).dialog( "close" );} // кнопка закрытия окна
            }

        });

    });

}
</script>
<div id="urlComWindows" title="Ссылка на комментарий" style="display:none;">
    <input class="urlComInput" value="" type="text" autocomplete="off">
</div>


Помогите получить прямую ссылку на комментарий



И не надо править движок!!!

8 комментариев

smlt70
Юзер

smlt70 - 8 июля 2014 05:57 -

Мне нужно в модуле прописать это как-то, а не в шаблоне.

Должна получится примерно вот такая конструкция, но она почему-то не работает.
$url = "http://сайт.ru/" . $row['cat_alt_name'] . "/" . $row['post_id'] . "-" . $row['alt_name'] . ".html#comment-id-" . $row['com_id'];

sadan
Юзер

sadan - 8 июля 2014 06:45 -

может код модуля в студию?
не шаманы же мы

smlt70
Юзер

smlt70 - 8 июля 2014 06:59 -

$rss_content = <<<XML
<?xml version="1.0" encoding="WINDOWS-1251"?>
<reviews>
XML;
    $result = $db->query( "SELECT p.id as post_id, p.alt_name, p.autor as post_autor, c.*, cat.alt_name as cat_alt_name FROM " . PREFIX . "_comments c
    LEFT JOIN ".PREFIX."_post p ON p.id=c.post_id
    LEFT JOIN ".PREFIX."_category cat ON cat.id=p.category

     WHERE c.add_yandex=1 LIMIT 100000" );
        while ( $row = $db->get_array( $result ) ) {
        $row['date'] = date(DATE_ISO8601, strtotime($row['date']));
        $row['date'] = str_replace( "0400", "04:00", $row['date'] );
        $row['xfields_data'] = xfieldsdataload( $row['xfields'] );
    $rss_content .= "<review>
        <locale>ru</locale>
        <type>biz</type>
<url>http://сайт.ru/user/".$row['cat_alt_name']."/".$row['post_id']."-".$row['alt_name'].".html</url>
        <description>".$row['text']."
        </description>
        <reviewer>
            <vcard>
                <fn>".$row['autor']."</fn>
                <url>http://сайт.ru/user/".$row['post_autor']."</url>
            </vcard>
        </reviewer>
        <item>
            <vcard>
                <category>fitness</category>
                <fn>".$row['title']."</fn>
                <localurl>".$row['xfields_data']['site']."</localurl>
                <tels>
                    <tel>".$row['xfields_data']['telefon']."</tel>
                </tels>
                <adrs>
                    <adr>
                        <country-name>Россия</country-name>
                        <locality>".$row['xfields_data']['city']."</locality>
                        <street-address>".$row['xfields_data']['adres']."</street-address>
                    </adr>
                </adrs>
            </vcard>
        </item>
        <dtreviewed>".$row['date']."</dtreviewed>
    </review>";
}

$rss_content .= '</reviews>';

header( 'Content-type: application/xml; charset=cp1251' );
echo $rss_content;


Формируется xml-фид, мне нужно чтобы ссылка была не просто на новость, а на "якорь с комментарием". Где-то ошибаюсь, а где - понять пока еще не могу.

sadan
Юзер

sadan - 8 июля 2014 09:19 -

В шаблоне comments.tpl:

<a name="com{comment-id}"></a>
<a href="#com{comment-id}" title="Ссылка на комментарий">#</a>

smlt70
Юзер

smlt70 - 8 июля 2014 10:58 -

Нашел ответ, оказалось что нужно сначало выдергивать эту переменную. Можно удалить вопрос.

smlt70
Юзер

smlt70 - 8 июля 2014 12:04 -

D0GMATIST
Я делал xml файл чтобы данные Яндексу передавать, там прямая ссылка на комментарий нужна была, как в шаблоне сделать прямую ссылку на комментарий - я знаю.

Но повторюсь - ответ нашел, всем большое спасибо за участие.

kolumb
Юзер

kolumb - 22 февраля 2015 11:17 -

Подскажите как исправить? Если я добавлю
modal: true,
, тогда не возможно скопировать ссылку в окне!

Мишка
Юзер

Мишка - 26 июня 2015 00:17 -

установил себе этот хак "прямая ссылка на коммент", но что то не срабатывает ни первый ни второй вариант. как буд-то что мешает или чего то не хвтает, модальное окно работает при нажатии на ник автора коммента. а вот ссылку не выдает на коммент. движок 10.5. не подскажите в чем может быть дело?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх