Chế độ hạn chế cookie


7

Với bản phát hành mới nhất, CE 1.8.1 cookie_restriction_notice_blockđã đi before_body_endvào bố cục (/app/design/frontend/base/default/layout/page.xml). Nhưng người dùng không nhận ra thông báo đó cũng như họ sẽ không cho phép cookie.

Tôi đã sử dụng mã này để dễ dàng unset global_cookie_notice blocktừ before_body_endvà đặt nó ở after_body_starttrong file layout local.xmltrong chủ đề của tôi:

    <reference name="before_body_end">
        <action method="unsetChild"><name>global_cookie_notice</name></action>    
    </reference>

    <reference name="after_body_start">
        <block type="page/html_cookieNotice" name="global_cookie_notice" as ="global_cookie_notice" template="page/html/cookienotice.phtml" before="-" />
    </reference>`

Tuy nhiên, tôi không thể tìm ra cách dịch cho các chế độ xem cửa hàng khác nhau. Thay đổi văn bản như bình thường trong khối CMS trong quản trị viên ( cookie_restriction_notice_block) cho các chế độ xem cửa hàng khác nhau không phù hợp với tôi.

Làm thế nào tôi có thể dịch cookie_restriction_notice_blockcho các quan điểm cửa hàng khác nhau?


Văn bản nằm ở đâu. Có phải trong cookienotice.phtml hoặc một khối tĩnh?
Sander Mangel

Văn bản nằm trong một khối tĩnh. Tôi đã tạo các phiên bản khác nhau cho mỗi lượt xem cửa hàng như bình thường, nhưng văn bản không được dịch (nút ALLOW được dịch qua .csv). Tôi thấy COOKIE_RESTRICTION_NOTICE_CMS_BLOCK_IDENTIFIER được đặt trong cookie.php, nhưng không thể tìm ra cách làm cho nó hoạt động
Marc

Câu trả lời:


11

trong ứng dụng / mã / lõi / Pháp sư / Trang / Khối / Html / CookieNotice.php:

$block = Mage::getModel('cms/block')->load($blockIdentifier, 'identifier');

Trước khi tải khối, bạn nên đặt ID cửa hàng:

$block = Mage::getModel('cms/block')->setStoreId(Mage::app()->getStore()->getId())->load($blockIdentifier, 'identifier');

Bạn có thể sử dụng ứng dụng / mã / cục bộ / Mage / Trang / Block / Html / CookieNotice.php cục bộ của bạn


2

Khối này được mô-đun CMS cài đặt vào phạm vi lưu trữ mặc định trong app/code/core/Mage/Cms/data/cms_setup/data-upgrade-1.6.0.0.1-1.6.0.0.2.php:

$content = "<p>This website requires cookies to provide all of its features. For more " .
    "information on what data is contained in the cookies, please see our " .
    "<a href=\"{{store direct_url=\"privacy-policy-cookie-restriction-mode\"}}\">Privacy Policy page</a>. " .
    "To accept cookies from this site, please click the Allow button below.</p>";

$cmsBlock = array(
    'title'         => 'Cookie restriction notice',
    'identifier'    => 'cookie_restriction_notice_block',
    'content'       => $content,
    'is_active'     => 1,
    'stores'        => 0
);

Mage::getModel('cms/block')->setData($cmsBlock)->save();

Các phiên bản dịch mà bạn đang cố gắng tạo trong quản trị viên sẽ hoạt động miễn là chúng bị giới hạn trong phạm vi cửa hàng thích hợp.

NB: Các tham số của tải dữ liệu có thể được gỡ lỗi Mage_Cms_Model_Resource_Block::_getLoadSelect().


Tôi vừa thử trong cài đặt CE 1.8.1 sạch, bật chế độ hạn chế cookie, thêm chế độ xem cửa hàng, dịch khối tĩnh với cùng định danh và giao diện cửa hàng mới được chỉ định. Sau đó, trong giao diện chuyển đổi xem và văn bản không được dịch.
Marc

Bạn đã chỉ định khối ban đầu cho cửa hàng tiếng Anh?
đánh dấu

Trong bản cài đặt sạch này, tôi có Trang web chính / Cửa hàng trang web chính / và hai chế độ xem cửa hàng cho Cửa hàng trang web chính, Chế độ xem cửa hàng mặc định và Castellano (chế độ xem cửa hàng mới được tạo). Trong các khối tĩnh, tôi có mặc định - (Tiêu đề) Thông báo hạn chế cookie, (ID) cookie_restriction_notice, (Chế độ xem cửa hàng) Mặc định - và Cookie mới được tạo - (Tiêu đề), (ID) cookie_restriction_notice, (Cửa hàng xem) Castellano. Cả hai đều được bật và chuyển đổi chế độ xem cửa hàng ở lối vào không giúp ích. Tôi không bao giờ gặp vấn đề trong việc dịch các khối tĩnh, các phiên bản cũ hơn cũng hoạt động bình thường nếu tôi không sai.
Marc

Một cái gì đó khác đang diễn ra, bởi vì các khối CMS được tải rõ ràng dựa trên phạm vi cửa hàng. Bạn có thể kiểm tra trong cms_block_storebảng cho store_idgiá trị của phiên bản tiếng Anh không?
đánh dấu

cảm ơn vì đã dành thời gian cho tôi. Trong bản cài đặt mới này, block_id là 2 cho phiên bản tiếng Anh và 3 cho phiên bản tiếng Tây Ban Nha ở cms_block_table và giao nhau với bảng cms_block_store, tôi nhận được block_id 2 (EN) được hiển thị trong store_id 1 và block_id 3 (ES) được hiển thị trong store_id 2.
Marc

0

Một cái gì đó khác đang diễn ra, bởi vì các khối CMS được tải rõ ràng dựa trên phạm vi cửa hàng. Bạn có thể kiểm tra trong cms_block_storebảng cho store_idgiá trị của phiên bản tiếng Anh không? - benmark ♦ 19 tháng 2, 14 lúc 13:12

Không, các khối CMS không được tải rõ ràng trên phạm vi cửa hàng. Các load()phương thức kết thúc trong một fetchRow($select)cuộc gọi, chỉ trả về hàng đầu tiên (xem Mage_Core_Model_Resource_Db_Abstract::load()). Trong trường hợp này, khối được thêm vào từ tập lệnh cài đặt.

Các Mage_Cms_Model_Resource_Block::_getLoadSelect()phương pháp cần có một cửa hàng ID thiết lập để tham gia cms_block_storebàn. Nếu không thiết lập ID cửa hàng $object->getStoreId()NULL...

/**
 * Retrieve select object for load object data
 *
 * @param string $field
 * @param mixed $value
 * @param Mage_Cms_Model_Block $object
 * @return Zend_Db_Select
 */
protected function _getLoadSelect($field, $value, $object)
{
    $select = parent::_getLoadSelect($field, $value, $object);

    if ($object->getStoreId()) {
        $stores = array(
            (int) $object->getStoreId(),
            Mage_Core_Model_App::ADMIN_STORE_ID,
        );

        $select->join(
            array('cbs' => $this->getTable('cms/block_store')),
            $this->getMainTable().'.block_id = cbs.block_id',
            array('store_id')
        )->where('is_active = ?', 1)
        ->where('cbs.store_id in (?) ', $stores)
        ->order('store_id DESC')
        ->limit(1);
    }

    return $select;
}

... một lỗi, vẫn còn tồn tại :( Hãy nghĩ https://magento.stackexchange.com/a/18380/46249 là chính xác ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.