Hướng dẫn Tạo Goolge AMP

Thành viên mới
Chức năng hoạt động tốt trên Module news 4.1, còn 4.2 chưa thử nên ko biết.
Thí chủ nào lười thì tải file đính kèm rồi chép đè nhé ( ko chịu trách nhiệm khi lỗi )
Đầu tiên :
tạo file amp.php trong /modules/news/func/ và amp.tpl trong / themes/default/modules/news/
nếu sử dụng theme mobile riêng thì cũng tạo file amp.tpl tương tự ở thư mục theme mobile.
Chức năng thêm file để hoạt động thì ko cần nói nữa nhé.

File amp.php ( đính kèm trong file zip )
file amp.tpl ( đính kèm trong file zip )

.tiếp đó. mở file /modules/news/theme.php thêm dòng sau vào cuối file
PHP:
function amp_theme($news_contents, $array_keyword, $related_new_array, $related_array, $topic_array, $content_comment)
{
    global $global_config, $module_info, $lang_module, $module_name, $module_config, $lang_global, $user_info, $admin_info, $client_info;

    $xtpl = new XTemplate('amp.tpl', NV_ROOTDIR . '/themes/' . $module_info['template'] . '/modules/' . $module_info['module_theme']);
    $xtpl->assign('LANG_GLOBAL', $lang_global);
    $xtpl->assign('NV_BASE_SITEURL', NV_BASE_SITEURL);
    $xtpl->assign('TEMPLATE', $global_config['module_theme']);
    $xtpl->assign('LANG', $lang_module);
     $xtpl->assign('LOGO', $global_config['site_logo']);
    $xtpl->assign('TOOLTIP_POSITION', $module_config[$module_name]['tooltip_position']);
    $xtpl->assign('url_article', $news_contents['url_article']);
    $news_contents['time_new'] = date('c', $news_contents['addtime']);
    $news_contents['addtime_n'] = $news_contents['addtime'];
    $news_contents['addtime'] = nv_date('d/m/Y h:i:s', $news_contents['addtime']);


     $news_contents['bodyhtml'] = amp_body($news_contents['bodyhtml']);
    
    $xtpl->assign('NEWSID', $news_contents['id']);
    $xtpl->assign('NEWSCHECKSS', $news_contents['newscheckss']);
    $xtpl->assign('DETAIL', $news_contents);
    $xtpl->assign('SELFURL', $client_info['selfurl']);

                    
    if ($news_contents['allowed_send'] == 1) {
        $xtpl->assign('URL_SENDMAIL', $news_contents['url_sendmail']);
        $xtpl->parse('main.allowed_send');
    }

    if ($news_contents['allowed_print'] == 1) {
        $xtpl->assign('URL_PRINT', $news_contents['url_print']);
        $xtpl->parse('main.allowed_print');
    }

    if ($news_contents['allowed_save'] == 1) {
        $xtpl->assign('URL_SAVEFILE', $news_contents['url_savefile']);
        $xtpl->parse('main.allowed_save');
    }

    if ($news_contents['allowed_rating'] == 1) {
        $xtpl->assign('LANGSTAR', $news_contents['langstar']);
        $xtpl->assign('STRINGRATING', $news_contents['stringrating']);
        $xtpl->assign('NUMBERRATING', $news_contents['numberrating']);

        if ($news_contents['disablerating'] == 1) {
            $xtpl->parse('main.allowed_rating.disablerating');
        }

        if ($news_contents['numberrating'] >= $module_config[$module_name]['allowed_rating_point']) {
            $xtpl->parse('main.allowed_rating.data_rating');
        }

        $xtpl->parse('main.allowed_rating');
    }

    if ($news_contents['showhometext']) {
        if (! empty($news_contents['image']['src'])) {
            if ($news_contents['image']['position'] == 1) {
                if (! empty($news_contents['image']['note'])) {
                    $xtpl->parse('main.showhometext.imgthumb.note');
                } else {
                    $xtpl->parse('main.showhometext.imgthumb.empty');
                }
                $xtpl->parse('main.showhometext.imgthumb');
            } elseif ($news_contents['image']['position'] == 2) {
                if (! empty($news_contents['image']['note'])) {
                    $xtpl->parse('main.showhometext.imgfull.note');
                }
                $xtpl->parse('main.showhometext.imgfull');
            }
        }

        $xtpl->parse('main.showhometext');
    }
    if (! empty($news_contents['post_name'])) {
        $xtpl->parse('main.post_name');
    }

    if (! empty($news_contents['author']) or ! empty($news_contents['source'])) {
        if (! empty($news_contents['author'])) {
            $xtpl->parse('main.author.name');
        }

        if (! empty($news_contents['source'])) {
            $xtpl->parse('main.author.source');
        }

        $xtpl->parse('main.author');
    }
    if ($news_contents['copyright'] == 1) {
        if (! empty($module_config[$module_name]['copyright'])) {
            $xtpl->assign('COPYRIGHT', $module_config[$module_name]['copyright']);
            $xtpl->parse('main.copyright');
        }
    }

    if (! empty($array_keyword)) {
        $t = sizeof($array_keyword) - 1;
        foreach ($array_keyword as $i => $value) {
            $xtpl->assign('KEYWORD', $value['keyword']);
            $xtpl->assign('LINK_KEYWORDS', NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name . '&' . NV_OP_VARIABLE . '=tag/' . urlencode($value['alias']));
            $xtpl->assign('SLASH', ($t == $i) ? '' : ', ');
            $xtpl->parse('main.keywords.loop');
        }
        $xtpl->parse('main.keywords');
    }

    if (defined('NV_IS_MODADMIN')) {
        $xtpl->assign('ADMINLINK', nv_link_edit_page($news_contents['id']) . ' ' . nv_link_delete_page($news_contents['id'], 1));
        $xtpl->parse('main.adminlink');
    }

    if ($module_config[$module_name]['socialbutton']) {
        global $meta_property;

        if (! empty($module_config[$module_name]['facebookappid'])) {
            $meta_property['fb:app_id'] = $module_config[$module_name]['facebookappid'];
            $meta_property['og:locale'] = (NV_LANG_DATA == 'vi') ? 'vi_VN' : 'en_US';
        }
        $xtpl->parse('main.socialbutton');
    }

    if (! empty($related_new_array) or ! empty($related_array) or ! empty($topic_array)) {
        if (! empty($related_new_array)) {
            foreach ($related_new_array as $key => $related_new_array_i) {
                if ($module_config[$module_name]['showtooltip']) {
                    $related_new_array_i['hometext_clean'] = nv_clean60(strip_tags($related_new_array_i['hometext']), $module_config[$module_name]['tooltip_length'], true);
                }

                if ($related_new_array_i['external_link']) {
                    $related_new_array_i['target_blank'] = 'target="_blank"';
                }
                
                $newday = $related_new_array_i['time'] + (86400 * $related_new_array_i['newday']);               
                if ($newday >= NV_CURRENTTIME) {
                    $xtpl->parse('main.others.related_new.loop.newday');
                }
                $related_new_array_i['time'] = nv_date('d/m/Y', $related_new_array_i['time']);

                $xtpl->assign('RELATED_NEW', $related_new_array_i);

                if ($module_config[$module_name]['showtooltip']) {
                    $xtpl->parse('main.others.related_new.loop.tooltip');
                }

                $xtpl->parse('main.others.related_new.loop');
            }
            unset($key);
            $xtpl->parse('main.others.related_new');
        }

        if (! empty($related_array)) {
            foreach ($related_array as $related_array_i) {
                if ($module_config[$module_name]['showtooltip']) {
                    $related_array_i['hometext_clean'] = nv_clean60(strip_tags($related_array_i['hometext']), $module_config[$module_name]['tooltip_length'], true);
                }

                if ($related_array_i['external_link']) {
                    $related_array_i['target_blank'] = 'target="_blank"';
                }
                
                $newday = $related_array_i['time'] + (86400 * $related_array_i['newday']);
                if ($newday >= NV_CURRENTTIME) {
                    $xtpl->parse('main.others.related.loop.newday');
                }
                $related_array_i['time'] = nv_date('d/m/Y', $related_array_i['time']);
                $xtpl->assign('RELATED', $related_array_i);

                if ($module_config[$module_name]['showtooltip']) {
                    $xtpl->parse('main.others.related.loop.tooltip');
                }

                $xtpl->parse('main.others.related.loop');
            }
            $xtpl->parse('main.others.related');
        }

        if (! empty($topic_array)) {
            foreach ($topic_array as $key => $topic_array_i) {
                if ($module_config[$module_name]['showtooltip']) {
                    $topic_array_i['hometext_clean'] = nv_clean60(strip_tags($topic_array_i['hometext']), $module_config[$module_name]['tooltip_length'], true);
                }
                
                if ($topic_array_i['external_link']) {
                    $topic_array_i['target_blank'] = 'target="_blank"';
                }

                $newday = $topic_array_i['time'] + (86400 * $topic_array_i['newday']);
                if ($newday >= NV_CURRENTTIME) {
                    $xtpl->parse('main.others.topic.loop.newday');
                }
                $topic_array_i['time'] = nv_date('d/m/Y', $topic_array_i['time']);
                $xtpl->assign('TOPIC', $topic_array_i);

                if (! empty($module_config[$module_name]['showtooltip'])) {
                    $xtpl->parse('main.others.topic.loop.tooltip');
                }

                $xtpl->parse('main.others.topic.loop');
            }
            $xtpl->parse('main.others.topic');
        }

        $xtpl->parse('main.others');
    }

    if (! empty($content_comment)) {
        $xtpl->assign('CONTENT_COMMENT', $content_comment);
        $xtpl->parse('main.comment');
    }

    if ($news_contents['status'] != 1) {
        $xtpl->parse('main.no_public');
    }

    $xtpl->parse('main');
    return $xtpl->text('main');
}
tiếp tục, mở file /modules/news/functions.php.
tìm đến dòng elseif ($count_op == 2)
{
}
thêm sau đoạn đó :
PHP:
    elseif ($count_op == 3 AND $array_op[2] =='amp' ) {
        $array_page = explode('-', $array_op[1]);
        $id = intval(end($array_page));
        $number = strlen($id) + 1;
        $alias_url = substr($array_op[1], 0, -$number);
        if ($id > 0 and $alias_url != '') {
            if ($catid > 0) {
                $op = 'amp';
            } else {
                //muc tieu neu xoa chuyen muc cu hoac doi ten alias chuyen muc thi van rewrite duoc bai viet
                $_row = $db->query('SELECT * FROM ' . NV_PREFIXLANG . '_' . $module_data . '_rows WHERE id = ' . $id)->fetch();
                if (!empty($_row) and isset($global_array_cat[$_row['catid']])) {
                    $url_Permanently = nv_url_rewrite(NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name . '&' . NV_OP_VARIABLE . '=' . $global_array_cat[$_row['catid']]['alias'] . '/' . $_row['alias'] . '-' . $_row['id'] . $global_config['rewrite_exturl'], true);
                    header("HTTP/1.1 301 Moved Permanently");
                    header('Location:' . $url_Permanently);
                    exit();
                }
            }
        }
    }
tiếp đến, mở file detail.php thêm dòng này vào đầu include NV_ROOTDIR . '/includes/header.php';
PHP:
$my_head .= '<link rel="amphtml" href="'.nv_url_rewrite(NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $global_array_cat[$catid]['alias'] . '/' . $news_contents['alias'] . '-' . $news_contents['id'] . '/amp' . $global_config['rewrite_exturl'], true).'">';
preg_replace('/(<\head>)/i', $my_head . '\\1', $sitecontent, 1);
- Xong, vào https://search.google.com/test/amp để kiểm tra.
 

Attachments

Thành viên năng động
Em cảm ơn nhiều, e đang chờ chức năng này ak, em thêm vào rồi mà sao e vào google nó báo Rất tiếc! Đã xảy ra sự cố
- Khi thêm vào mình cho amp sau địa chỉ url đúng không a, kiểu như thế này https://forum.nuke.vn/threads/Tao-Goolge-AMP.1078/amp/
 
Thành viên mới
Em cảm ơn nhiều, e đang chờ chức năng này ak, em thêm vào rồi mà sao e vào google nó báo Rất tiếc! Đã xảy ra sự cố
- Khi thêm vào mình cho amp sau địa chỉ url đúng không a, kiểu như thế này https://forum.nuke.vn/threads/Tao-Goolge-AMP.1078/amp/
kiểm tra xem sử dụng giao diện responsive hay 2 giao diện riêng ?
quét dọn hệ thống ?
đưa link lên xem thử
 
Thành viên năng động
Em xài giao diện default luôn ak a, e có gửi trong tin nhắn, a xem giúp
 
Thành viên mới
link của mình có đuôi .html nên nó tự chuyển về domain gốc, mình nghi lỗi ở chỏ code này, quocdoan419 fix dc không giúp mình với

PHP:
$my_head .= '<link rel="amphtml" href="'.nv_url_rewrite(NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $global_array_cat[$catid]['alias'] . '/' . $news_contents['alias'] . '-' . $news_contents['id'] . '/amp' . $global_config['rewrite_exturl'], true).'">';
preg_replace('/(<\head>)/i', $my_head . '\\1', $sitecontent, 1);
 
Thành viên mới
gọi đi cư
link của mình có đuôi .html nên nó tự chuyển về domain gốc, mình nghi lỗi ở chỏ code này, quocdoan419 fix dc không giúp mình với

PHP:
$my_head .= '<link rel="amphtml" href="'.nv_url_rewrite(NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $global_array_cat[$catid]['alias'] . '/' . $news_contents['alias'] . '-' . $news_contents['id'] . '/amp' . $global_config['rewrite_exturl'], true).'">';
preg_replace('/(<\head>)/i', $my_head . '\\1', $sitecontent, 1);
gọi đi cưng
 
Thành viên năng động
Mọi thứ đều tốt hết, mà trong bài viết mà có video là lỗi ak a
- Các bài viết liên quan phí dưới mà tự động thêm cái đuôi amp nữa thì tuyệt luôn

 
Thành viên mới
bạn mở file amp. php, tìm đến dòng :
PHP:
 $bodytext = preg_replace('/<iframe\s+.*?\s+src=(".*?").*?<\/iframe>/', '</p><figure class="op-interactive" data-feedback="fb:likes, fb:comments"><iframe src=$1 width="560" height="315"/></iframe></figure><p>', $bodytext);
thay bằng :
PHP:
 $bodytext = preg_replace('/<iframe\s+.*?\s+src=(".*?").*?<\/iframe>/', '<amp iframe src=$1 width="560" height="315"/></amp iframe>', $bodytext);
 
Thành viên năng động
bạn mở file amp. php, tìm đến dòng :
PHP:
 $bodytext = preg_replace('/<iframe\s+.*?\s+src=(".*?").*?<\/iframe>/', '</p><figure class="op-interactive" data-feedback="fb:likes, fb:comments"><iframe src=$1 width="560" height="315"/></iframe></figure><p>', $bodytext);
thay bằng :
PHP:
 $bodytext = preg_replace('/<iframe\s+.*?\s+src=(".*?").*?<\/iframe>/', '<amp iframe src=$1 width="560" height="315"/></amp iframe>', $bodytext);
Em thay vào ra ngoài trang không hiển thị, google vẫn báo lỗi Thẻ HTML bị cấm hoặc được sử dụng không hợp lệ ak a
 
Thành viên mới
thêm vào trong thẻ <header>
HTML:
<script async custom-element="amp-iframe"
  src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js"></script>
 
Thành viên mới
làm theo tất cả hướng dẫn link/amp/ nó chuyển hướng về trang chủ module

Vào trang detail nó báo sai code này

PHP:
preg_replace('/(<\head>)/i', $my_head . '\\1', $sitecontent, 1);
Nội dung lỗi
Nên chú ý: Undefined variable: sitecontent in file /modules/news/funcs/detail.php on line 401
Chắc e xài bản cũ
 
Lần sửa cuối: Chín 12, 2017 lúc 12:09 AM
Thành viên năng động
Mình dùng NV4.2 bị báo lỗi sau:
Not a valid AMP page
Invalid AMP pages will not have AMP-specific features in Google search results
 
Thành viên mới
Lin
gọi đi cư

gọi đi cưng
link của mình cùng kết thúc bằng html liệu cài AMP có vấn đề gì không cậu?
 
Thành viên năng động
Có ai tích hợp được Google AMP này cho Nukeviet 4.3 chưa vậy? Cám ơn!